pentest-mcp-server
Server Details
Offline methodology engine for authorized penetration testing, CTF, and security research.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/pentest-mcp-server
- GitHub Stars
- 1
- Server Listing
- @cyanheads/pentest-mcp-server
Available Tools
7 toolspentest_analyze_responsePentest Analyze ResponseARead-onlyIdempotentInspect
Analyze an HTTP response from authorized probing for information leakage, fingerprinting signals, and related exposure. Structured findings cover version disclosures, stack traces, debug headers, internal paths, authentication patterns, CORS configuration, detection signals, remediation, and associated methodology vectors.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Freeform context about the authorized test target — e.g., "login endpoint", "GraphQL API", "file upload handler". Narrows the pattern matching to relevant categories. Max 2,000 characters. | |
| status_code | No | HTTP status code (100–599). Helps classify the response type. | |
| response_body | No | Raw HTML, JSON, XML, or error response body text. Maximum 10,000 characters. | |
| response_headers | No | Raw HTTP response headers, optionally including the status line. Maximum 20,000 characters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| summary | No | One-paragraph summary of findings and associated follow-up actions. |
| findings | No | Structured findings ordered by severity descending (high first). |
| fingerprints | No | Detected server, framework, language, database, cloud, and other technology signals. |
| nextToolSuggestions | No | Suggested tools derived from detected fingerprints and findings. |
| authorized_use_reminder | No | Reminder that response analysis is for authorized testing only. Rendered first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, non-mutating operation. The description adds value by disclosing what the tool produces: structured findings covering specific categories (version disclosures, stack traces, debug headers, internal paths, authentication patterns, CORS configuration, detection signals, remediation, and methodology vectors). This goes beyond the annotations by describing the output structure and scope. No contradiction with annotations.
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, dense paragraph that front-loads the core purpose ('Analyze an HTTP response from authorized probing') and then lists the finding categories. It's efficient with no filler words. The list of categories is somewhat long but each item adds value by clarifying the tool's scope. Could be slightly more structured (e.g., bullet points) but is acceptable as prose.
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 in detail but indicated by 'Has output schema: true'), which likely describes the structured findings. The description covers the input parameters (via schema) and the output categories. The description mentions 'remediation' and 'methodology vectors' which are important for a pentest tool. Given the complexity of a security analysis tool, the description is reasonably complete. It could mention that the tool is read-only (though annotations cover that) or provide more detail on how the analysis works, but the current level is adequate.
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 all four parameters (context, status_code, response_body, response_headers) are already well-documented in the schema. The description doesn't add parameter-specific semantics beyond what the schema provides. The description mentions 'context' narrows pattern matching, which aligns with the schema's description, but doesn't add new information. Baseline 3 is appropriate given full schema coverage.
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 purpose: analyzing HTTP responses from authorized probing for information leakage, fingerprinting signals, and related exposure. It lists specific categories of findings (version disclosures, stack traces, debug headers, etc.), which distinguishes it from sibling tools like pentest_generate_payloads or pentest_map_techniques. The verb 'analyze' and resource 'HTTP response' are specific and unambiguous.
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: it's for analyzing responses from authorized probing, which suggests it should be used after sending requests. It doesn't explicitly state when not to use it or name alternatives, but the sibling tools are clearly different in function (encoding, payload generation, lookup, mapping). The 'authorized probing' qualifier provides important usage context. However, it doesn't explicitly say 'use this when you have a response to analyze' or contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pentest_encodePentest EncodeARead-onlyIdempotentInspect
Transform a payload string through an ordered encoding chain for authorized filter research. Results include the final value, intermediate values, optional decode path and rationale, and detection guidance. All transforms are local; no live probing occurs.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Ordered list of encodings to apply (1–6 steps). Applied left to right. E.g., ["unicode", "url"] applies Unicode escape first, then URL-encodes the result. | |
| explain | No | Whether to include the decode path and bypass rationale. | |
| payload | Yes | Input payload string to encode. Max 10,000 characters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| encoded | No | Final encoded payload after all chain steps applied. |
| original | No | The input payload. |
| decode_path | No | Step-by-step explanation of how a decoder (WAF, server, browser) would reverse the encoding chain. Included when explain is true. |
| detection_note | No | Detection methods for encoded variants, including normalization and behavior signals. |
| bypass_rationale | No | Why this encoding combination might bypass common filter patterns. Included when explain is true. |
| intermediate_steps | No | Intermediate values at each encoding step, for tracing the chain. |
| authorized_use_reminder | No | Reminder that encoding transforms are for authorized bypass research only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint), the description discloses that all transforms are local and no live probing occurs, which reassures about network safety. It also outlines the output contents (final value, intermediate values, optional decode path, rationale, detection guidance), providing transparency about what the tool returns. No contradictions with annotations.
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, consisting of two sentences that efficiently convey the core action and key details. It front-loads the verb and resource, then lists output features and safety notes without unnecessary elaboration. No filler or redundant phrasing.
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 schema with full descriptions and annotations indicating read-only and idempotent behavior, the description covers the tool's purpose, output, and safety. It does not delve into edge cases or error handling, but that is acceptable as the output schema likely describes the return format. The description is self-sufficient for an agent to decide when and how to invoke the tool.
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 already provides detailed descriptions for all three parameters (payload, chain, explain), including examples and constraints. The tool description does not add significant extra meaning to these parameters; it mostly reiterates the output structure. Since schema coverage is 100%, the baseline is 3, and the description does not elevate it further.
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: transforming a payload string through an ordered encoding chain. It specifies the verb ('Transform') and the resource ('payload string'), and adds context with 'for authorized filter research.' This distinguishes it from sibling tools like payload generation or response analysis, though it does not explicitly name alternatives.
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 conveys when to use the tool implicitly: when encoding a payload for filter research. It includes a safety note ('All transforms are local; no live probing occurs') that hints at usage boundaries. However, it does not explicitly compare with sibling tools (e.g., 'use pentest_generate_payloads for creation'), leaving some ambiguity about 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.
pentest_generate_payloadsPentest Generate PayloadsARead-onlyIdempotentInspect
Generate context-specific payload templates for authorized systems. Each template includes its vulnerability category, context rationale, WAF/IDS detection signature, mitigation, optional WAF research note, and optional encoded variant.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of payload variants to return (1–20, default 5). More variants cover different bypass approaches for the same context. | |
| category | Yes | Vulnerability category for payload generation. | |
| encoding | No | Optional encoding chain applied left to right to each returned template. | |
| waf_profile | No | WAF or filter in front of the authorized test target. When a specific WAF is named, bypass variants referencing known public research are included. | none |
| injection_context | Yes | Precise injection context. Critical for XSS: an HTML attribute payload differs from a JS string payload. Provide the most specific context for the best results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| category | No | Requested payload category. |
| payloads | No | Payload templates ordered by coverage breadth, each annotated with offense and defense context. |
| injection_context | No | Requested injection context. |
| authorized_use_reminder | No | Reminder that these templates are for authorized testing only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety and deterministic output. The description adds valuable detail about what each template includes (category, rationale, detection signature, mitigation, optional research note and encoded variant), which is beyond annotations and helps agents understand output structure.
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, efficient sentence that front-loads the primary action and scope, then briefly enumerates output contents. Every clause earns its place with no redundancy or filler.
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 complexity (5 parameters, enums, output schema present), the description provides enough context about the returned templates and ties to the 'context rationale' element. It does not explicitly mention parameters like count or encoding, but those are fully documented in the schema, and the output schema is present, so nothing critical is missing.
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 description does not need to elaborate on parameters. It adds no parameter-specific details beyond the schema, and the baseline of 3 is appropriate when schema carries the full load.
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 verb ('Generate') and resource ('context-specific payload templates'), with a scope qualifier ('for authorized systems'). It is easily distinguished from siblings like pentest_analyze_response (analysis) or pentest_encode (encoding), so an agent knows exactly what this tool does without opening the schema.
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 implicitly frames usage as part of an authorized pentest workflow, but does not explicitly state when to prefer this tool over alternatives such as pentest_guide or pentest_map_techniques. The context is clear, yet exclusions or alternative routing are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pentest_guidePentest GuideARead-onlyIdempotentInspect
Return an authorized-testing methodology for a selected vector and optional target context. The playbook covers reconnaissance, enumeration, exploitation, and post-exploitation phases with objectives, techniques, detection signals, mitigations, common pitfalls, references, and context-derived tool suggestions across 15 vectors.
| Name | Required | Description | Default |
|---|---|---|---|
| phase | No | Methodology phase selector. "all" returns the complete playbook; a named phase returns only that phase. | all |
| vector | Yes | Attack vector to retrieve methodology for. Each vector has its own methodology branch covering recon through exploitation. Authorized testing only. | |
| target_context | No | Optional target profile for authorized engagement. Providing this narrows the playbook to what is most relevant for the specific environment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| phases | No | Ordered methodology phases. Contains only the requested phase when phase input is not "all". |
| vector | No | The requested attack vector. |
| owasp_references | No | Relevant OWASP Testing Guide test case IDs (e.g., "WSTG-INPV-01"). |
| nextToolSuggestions | No | Suggested tools and arguments derived from the playbook. |
| attack_technique_ids | No | Relevant ATT&CK technique IDs for cross-referencing with pentest_lookup_technique. |
| authorized_use_reminder | No | Reminder that this methodology applies to authorized testing only. Included in every response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and idempotentHint=true, so the agent knows this is a non-mutating, repeatable operation. The description adds value by disclosing that the returned content is an 'authorized-testing' playbook that covers phases (recon, enumeration, exploitation, post_exploitation) and includes elements like detection signals, mitigations, and 'context-derived tool suggestions.' This goes beyond the annotations by describing the nature of the output without contradicting them.
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, information-dense sentence that front-loads the core action and resource, then enumerates the coverage without redundancy. Every phrase contributes (phases, objectives, techniques, detection signals, mitigations, pitfalls, references, tool suggestions). It is compact yet comprehensive, making efficient use of the word budget.
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 that an output schema exists (as indicated), the description does not need to explain return formats. The description covers all key aspects: the action, the resource, the scope (15 vectors), optional narrowing, and the content of the playbook. For a read-only, idempotent tool with full schema coverage, this is complete. An agent has enough information to invoke it correctly without 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?
The input schema provides full coverage (100%) for all three parameters, including enums and descriptions for vector and phase, and property-level descriptions for the target_context object. The description simply restates the existence of a 'selected vector' and 'optional target context,' adding no new meaning beyond the schema. Given the high schema coverage, a baseline of 3 is appropriate; the description does not compensate or enrich parameter semantics.
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: 'Return an authorized-testing methodology for a selected vector and optional target context.' It identifies the specific resource (methodology) and the action (return), and specifies that it covers a full set of phases. This clearly distinguishes it from sibling tools like pentest_generate_payloads or pentest_analyze_response, which have narrowly scoped purposes.
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 its usage context: it is for retrieving a methodology for a vector, optionally narrowed by target context. However, it does not explicitly state when to prefer this tool over its siblings, nor does it name any alternatives. There is no 'when-not-to-use' guidance or comparison to pentest_map_techniques or pentest_lookup_technique. The usage context is inferable but not explicit, so it falls short of a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pentest_lookup_groupPentest Lookup GroupARead-onlyIdempotentInspect
Look up a MITRE ATT&CK threat group or software entry by ID, name, or keyword. Results include ATT&CK identity, aliases, type, description, and associated techniques with procedure-level context from public ATT&CK reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ATT&CK threat group ID (e.g., "G0007"), software ID (e.g., "S0002"), or name/keyword (e.g., "APT28", "Mimikatz", "Lazarus Group"). ID lookup is exact and case-insensitive; name/keyword search returns the best match. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ATT&CK ID (e.g., "G0007" for a group, "S0002" for software). |
| name | No | Primary display name (e.g., "APT28", "Mimikatz"). |
| type | No | "group" for intrusion sets (threat actors), "software" for malware and tools. |
| error | No | Present when the call failed. Absent on success. |
| aliases | No | Known alternate names from ATT&CK. |
| description | No | ATT&CK description (truncated to 800 characters). |
| attack_version | No | ATT&CK dataset version used (e.g., "Enterprise v19.1"). |
| techniques_used | No | Up to 20 techniques associated with the group or software, including procedure-level context and technique IDs. |
| authorized_use_reminder | No | Reminder that threat group data is for authorized testing and research only. Rendered first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety and repeatability. The description adds value by specifying what the result contains (identity, aliases, type, description, techniques with procedure-level context), and it notes the query fallback from exact ID to best-match on name/keyword. There is no contradiction with annotations, and the added behavioral detail is useful beyond the annotations.
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 concise sentences, front-loaded with the core action and resource, then clarifying the accepted input formats and the nature of results. Every sentence earns its place, and there is no redundant repetition of the tool name or schema details.
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-parameter lookup tool with no nested objects and an output schema present (as per context signals), the description covers the purpose, input formats, and return content. The agent has everything needed to decide when to invoke it and what to expect, and the annotations cover side effects. Nothing essential is missing.
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% for the single 'query' parameter, so the schema already documents the parameter fully. The description adds extra semantic nuance: ID lookup is exact and case-insensitive, while name/keyword search returns the best match. This exceeds the baseline for high schema coverage and helps the agent understand query behavior without opening 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 states a specific action ('Look up') with a clear resource ('MITRE ATT&CK threat group or software entry') and the input modes ('ID, name, or keyword'). It differentiates from the sibling pentest_lookup_technique by focusing on groups/software rather than techniques, and it enumerates the returned fields, so an agent can tell exactly what the tool does.
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 clearly implies when to use this tool: when looking up threat groups or software entries from ATT&CK. It implicitly distinguishes from pentest_lookup_technique by the resource type, but it does not explicitly state 'use this for groups/software, not techniques' or mention any exclusions. Given the sibling names, the context is clear enough without explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pentest_lookup_techniquePentest Lookup TechniqueARead-onlyIdempotentInspect
Look up a MITRE ATT&CK technique by exact ID or keyword. Results include tactics, platforms, description, detection data, public procedure examples, mitigations, related sub-techniques, and dataset version.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ATT&CK technique ID (e.g., "T1190", "T1059.001") or keyword describing the technique (e.g., "sql injection", "pass the hash", "web shell upload"). ID lookup is exact; keyword lookup returns the best match plus related techniques. | |
| include_subtechniques | No | Include sub-techniques in the result. Set to false when only the parent technique summary is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Technique name. |
| error | No | Present when the call failed. Absent on success. |
| tactics | No | ATT&CK tactics this technique belongs to (e.g., "Initial Access", "Execution"). |
| detection | No | ATT&CK detection context for the technique. |
| platforms | No | Target platforms (e.g., "Windows", "Linux", "Web Application"). |
| description | No | ATT&CK description of the technique. |
| mitigations | No | Recommended mitigations from ATT&CK. |
| technique_id | No | ATT&CK technique ID (e.g., "T1190"). |
| attack_version | No | ATT&CK dataset version used (e.g., "Enterprise v19.1"). |
| sub_techniques | No | Sub-techniques of this parent technique. Empty when querying a sub-technique itself, or when include_subtechniques is false. |
| procedure_examples | No | Real-world usage examples from ATT&CK public reporting. |
| authorized_use_reminder | No | Reminder that technique data is for authorized testing and research only. Rendered first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and idempotent behavior. The description adds a brief summary of the result contents (tactics, platforms, detection data, etc.), but since an output schema exists, this enumeration adds only moderate value beyond the structured annotations.
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 front-loaded sentence that hits the action first and then lists the result fields. The enumeration is somewhat long, but each item is meaningful and contributes to a complete overview.
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 simplicity, fully documented schema, existing output schema, and read-only idempotent annotations, the definition is complete for an agent to invoke it correctly. Nothing essential for making the call is missing.
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%, with rich detail on the query parameter (examples, exact vs. best-match behavior) and include_subtechniques (default and when to disable). The description itself adds no parameter-level meaning beyond what the schema already 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?
States a specific verb ('look up'), a distinct resource ('MITRE ATT&CK technique'), and the two accepted input modes ('exact ID or keyword'). This clearly distinguishes it from the sibling pentest_lookup_group without requiring the agent to open either schema.
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 explicit when-to-use or when-not-to-use guidance, nor does it reference any sibling tool. The only usage hint appears inside the include_subtechniques parameter schema, not in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pentest_map_techniquesPentest Map TechniquesARead-onlyIdempotentInspect
Rank ATT&CK techniques and OWASP test cases against an authorized target profile of technology stack, exposed services, authentication type, and operating system. Results include profile-specific relevance, detection opportunities, mitigations, and associated methodology vectors.
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | Target operating system. Narrows to OS-specific techniques. | |
| limit | No | Maximum number of techniques to return (1–50, default 15). Higher values give broader coverage; lower values focus on highest-relevance items. | |
| stack | No | Technology stack components (e.g., ["Node.js", "Express", "PostgreSQL", "Redis"]). Each element matched against technique platform and procedure examples. | |
| services | No | Exposed services and interfaces (e.g., ["REST API", "GraphQL", "file upload", "admin panel"]). Narrows technique relevance. | |
| auth_type | No | Authentication mechanism in use. Surfaces auth-specific attack techniques. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied to ranked_techniques. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of ranked techniques returned. |
| truncated | No | True when ranked_techniques was capped by limit. |
| attack_version | No | ATT&CK dataset version used for technique data. |
| profile_summary | No | One-sentence normalized summary of the supplied target profile. |
| owasp_test_cases | No | Relevant OWASP Testing Guide test cases for the profile (up to 10). |
| ranked_techniques | No | Techniques ordered by relevance_score descending. |
| authorized_use_reminder | No | Reminder that technique mapping is for authorized testing engagements only. Rendered first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent operation, so the description does not need to repeat safety traits. It adds useful behavioral context by explaining the output includes relevance, detection opportunities, mitigations, and methodology vectors, though some of this is redundant with the existing output schema. It does not clarify whether this is a local knowledge-base ranking rather than a live scan, but the 'authorized target profile' framing partially signals a planning-oriented operation.
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 with no filler, front-loading the verb, resource, and target context. The phrase 'associated methodology vectors' is somewhat vague and imprecise, which keeps it from being perfectly concise, but overall every sentence 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?
Given the output schema exists and input schema fully documents parameters, the description covers the essential invocation context well. It does not mention behavior when no profile parameters are provided, but because all parameters are optional and the schema documents defaults, this is a minor omission rather than a critical gap.
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%, and the schema already documents every parameter including defaults and enum constraints. The description restates four of the five profile dimensions (stack, services, auth_type, os) but adds no new semantic detail beyond what the schema provides, matching the baseline for high schema coverage.
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 ('Rank') and a precise resource ('ATT&CK techniques and OWASP test cases'), then scopes it to a target profile composed of concrete dimensions. This clearly separates it from siblings like pentest_lookup_technique and pentest_generate_payloads by indicating a multi-technique prioritization operation rather than a single lookup or payload construction.
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 provides clear situational context: use when you need profile-specific ranking of attack techniques and test cases against a target's stack, services, auth type, and OS. It does not explicitly name alternatives or state when not to use it, but the described use case is unambiguous enough for an agent to select it correctly.
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.
7 tool updates
- Changed
pentest_analyze_response16 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / response_body / descriptionPrevious value: -"Response body text. Paste raw HTML, JSON, XML, or error text. Truncate to the first 10,000 characters for very large responses — the first portion carries most leakage signals."New value: +"Raw HTML, JSON, XML, or error response body text. Maximum 10,000 characters." - changed
Input schema / properties / response_headers / descriptionPrevious value: -"Raw HTTP response headers (paste from Burp, curl -v, or similar). Include the status line if available. Max 20,000 characters."New value: +"Raw HTTP response headers, optionally including the status line. Maximum 20,000 characters." - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "authorized_use_reminder", + "findings", + "fingerprints", + "summary", + "nextToolSuggestions" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `no_input`: Neither response_headers nor response_body was provided. Other values are possible when a failure originates below the handler.", + "examples": [ + "no_input" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - changed
Output schema / properties / findings / items / properties / detection / descriptionPrevious value: -"How a defender or SIEM would detect exploitation of this finding."New value: +"Observable signals associated with exploitation of this finding." - changed
Output schema / properties / fingerprints / descriptionPrevious value: -"Technology fingerprinting summary for use in target_context when calling pentest_guide or pentest_map_techniques."New value: +"Detected server, framework, language, database, cloud, and other technology signals." - changed
Output schema / properties / nextToolSuggestions / descriptionPrevious value: -"Suggested next tool calls — typically pentest_guide with fingerprint-populated stack, or pentest_generate_payloads for directly exploitable findings."New value: +"Suggested tools derived from detected fingerprints and findings." - changed
Output schema / properties / nextToolSuggestions / items / descriptionPrevious value: -"A suggested follow-up tool call with pre-filled arguments."New value: +"A suggested tool with arguments derived from the analysis." - changed
Output schema / properties / nextToolSuggestions / items / properties / args / descriptionPrevious value: -"Pre-filled arguments derived from detected fingerprints and findings. Pass directly to the suggested tool."New value: +"Arguments derived from detected fingerprints and findings." - changed
Output schema / properties / nextToolSuggestions / items / properties / reason / descriptionPrevious value: -"Why this tool is the logical next step given the analysis findings."New value: +"Relationship between the analysis findings and the suggested tool." - changed
Output schema / properties / nextToolSuggestions / items / properties / toolName / descriptionPrevious value: -"Tool name to call next (e.g., \"pentest_guide\")."New value: +"Suggested tool name (e.g., \"pentest_guide\")." - changed
Output schema / properties / summary / descriptionPrevious value: -"One-paragraph summary of findings and recommended next steps for the authorized tester."New value: +"One-paragraph summary of findings and associated follow-up actions." - removed
Output schema / requiredRemoved value: -[ - "authorized_use_reminder", - "findings", - "fingerprints", - "summary", - "nextToolSuggestions" -]
- Changed
pentest_encode8 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / explain / descriptionPrevious value: -"Include step-by-step decode explanation. Set to false for raw transform output only."New value: +"Whether to include the decode path and bypass rationale." - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "authorized_use_reminder", + "original", + "encoded", + "intermediate_steps", + "detection_note" + ] + }, + { + "required": [ + "error" + ] + } +] - changed
Output schema / properties / detection_note / descriptionPrevious value: -"How defenders detect encoded payload variants — decoding normalizers, entropy analysis, behavioral detection. Always included to maintain the dual offense/defense framing."New value: +"Detection methods for encoded variants, including normalization and behavior signals." - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `encoding_error`: An encoding step produced invalid output (e.g., base64 on invalid input). Other values are possible when a failure originates below the handler.", + "examples": [ + "encoding_error" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "authorized_use_reminder", - "original", - "encoded", - "intermediate_steps", - "detection_note" -]
- Changed
pentest_generate_payloads9 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / encoding / descriptionPrevious value: -"Apply an encoding chain to payloads at generation time. Applied in order (left to right). Use pentest_encode for more control over per-payload encoding."New value: +"Optional encoding chain applied left to right to each returned template." - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "category", + "injection_context", + "authorized_use_reminder", + "payloads" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - changed
Output schema / properties / payloads / items / properties / detection_signature / descriptionPrevious value: -"Signature a WAF or IDS might match (e.g., specific keywords, patterns). Useful for blue team rule-writing."New value: +"Signature a WAF or IDS might match, such as keywords or patterns." - changed
Output schema / properties / payloads / items / properties / mitigation / descriptionPrevious value: -"How the target application should validate or encode input to prevent this class of payload."New value: +"Input validation or encoding control that prevents this payload class." - removed
Output schema / requiredRemoved value: -[ - "category", - "injection_context", - "authorized_use_reminder", - "payloads" -]
- Changed
pentest_guide16 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / phase / descriptionPrevious value: -"Restrict output to a specific phase. Use \"all\" for a complete playbook. Use a specific phase when working through a step-by-step flow."New value: +"Methodology phase selector. \"all\" returns the complete playbook; a named phase returns only that phase." - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "vector", + "authorized_use_reminder", + "phases", + "owasp_references", + "attack_technique_ids", + "nextToolSuggestions" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - changed
Output schema / properties / nextToolSuggestions / descriptionPrevious value: -"Suggested follow-up tool calls with arguments pre-populated from the playbook findings."New value: +"Suggested tools and arguments derived from the playbook." - changed
Output schema / properties / nextToolSuggestions / items / descriptionPrevious value: -"A follow-up tool call with pre-filled arguments derived from the playbook."New value: +"A suggested tool with arguments derived from the playbook." - changed
Output schema / properties / nextToolSuggestions / items / properties / args / descriptionPrevious value: -"Pre-filled arguments from the methodology context. Pass directly to the tool."New value: +"Arguments derived from the methodology context." - changed
Output schema / properties / nextToolSuggestions / items / properties / reason / descriptionPrevious value: -"Why this tool is the logical next step."New value: +"Relationship between the playbook and the suggested tool." - changed
Output schema / properties / nextToolSuggestions / items / properties / toolName / descriptionPrevious value: -"Tool name to call next (e.g., \"pentest_generate_payloads\")."New value: +"Suggested tool name (e.g., \"pentest_generate_payloads\")." - changed
Output schema / properties / phases / items / properties / objectives / descriptionPrevious value: -"What the tester is trying to discover or accomplish in this phase."New value: +"Discovery or execution objectives for this phase." - changed
Output schema / properties / phases / items / properties / techniques / items / properties / detection / descriptionPrevious value: -"How defenders detect this technique (log sources, signatures, anomalies)."New value: +"Observable logs, signatures, and anomalies for this technique." - changed
Output schema / properties / phases / items / properties / techniques / items / properties / mitigation / descriptionPrevious value: -"How the target system should be configured to prevent or reduce impact."New value: +"Configuration or control that prevents or reduces impact." - changed
Output schema / properties / phases / items / properties / tools_commonly_used / descriptionPrevious value: -"Commonly used tools for this phase (tool names, not instructions to install or use without authorization)."New value: +"Named tools commonly associated with this phase." - removed
Output schema / requiredRemoved value: -[ - "vector", - "authorized_use_reminder", - "phases", - "owasp_references", - "attack_technique_ids", - "nextToolSuggestions" -]
- Changed
pentest_lookup_group8 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "authorized_use_reminder", + "id", + "name", + "aliases", + "type", + "description", + "techniques_used", + "attack_version" + ] + }, + { + "required": [ + "error" + ] + } +] - changed
Output schema / properties / attack_version / descriptionPrevious value: -"ATT&CK dataset version used (e.g., \"Enterprise v19.1\"). Included so callers know the data vintage."New value: +"ATT&CK dataset version used (e.g., \"Enterprise v19.1\")." - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `no_match`: No group or software entry matched the query. Other values are possible when a failure originates below the handler.", + "examples": [ + "no_match" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - changed
Output schema / properties / techniques_used / descriptionPrevious value: -"Techniques this group or software is known to use, with procedure-level context from public ATT&CK reporting (up to 20 entries). Use pentest_lookup_technique with each technique_id for full technique details including detection and mitigations."New value: +"Up to 20 techniques associated with the group or software, including procedure-level context and technique IDs." - removed
Output schema / requiredRemoved value: -[ - "authorized_use_reminder", - "id", - "name", - "aliases", - "type", - "description", - "techniques_used", - "attack_version" -]
- Changed
pentest_lookup_technique10 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "authorized_use_reminder", + "technique_id", + "name", + "tactics", + "description", + "platforms", + "detection", + "mitigations", + "procedure_examples", + "sub_techniques", + "attack_version" + ] + }, + { + "required": [ + "error" + ] + } +] - changed
Output schema / properties / attack_version / descriptionPrevious value: -"ATT&CK dataset version used (e.g., \"Enterprise v19.1\"). Included so callers know the data vintage."New value: +"ATT&CK dataset version used (e.g., \"Enterprise v19.1\")." - changed
Output schema / properties / detection / descriptionPrevious value: -"Detection context — directly useful for blue team detection coverage."New value: +"ATT&CK detection context for the technique." - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `no_match`: No technique matched the query. Other values are possible when a failure originates below the handler.", + "examples": [ + "no_match" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - changed
Output schema / properties / procedure_examples / descriptionPrevious value: -"Real-world usage examples from ATT&CK public reporting. Useful for understanding adversary application of the technique."New value: +"Real-world usage examples from ATT&CK public reporting." - changed
Output schema / properties / sub_techniques / items / descriptionPrevious value: -"A sub-technique summary. Use pentest_lookup_technique with the sub-technique ID for full details."New value: +"A sub-technique ID, name, and brief description." - removed
Output schema / requiredRemoved value: -[ - "authorized_use_reminder", - "technique_id", - "name", - "tactics", - "description", - "platforms", - "detection", - "mitigations", - "procedure_examples", - "sub_techniques", - "attack_version" -]
- Changed
pentest_map_techniques13 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "authorized_use_reminder", + "ranked_techniques", + "owasp_test_cases", + "profile_summary", + "attack_version", + "truncated", + "shown", + "cap" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / capAdded value: +{ + "description": "The limit applied to ranked_techniques.", + "type": "number" +} - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `no_profile`: No profile fields were provided. Other values are possible when a failure originates below the handler.", + "examples": [ + "no_profile" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - changed
Output schema / properties / profile_summary / descriptionPrevious value: -"One-sentence summary of the target profile as interpreted by the ranking algorithm."New value: +"One-sentence normalized summary of the supplied target profile." - changed
Output schema / properties / ranked_techniques / items / properties / detection_opportunity / descriptionPrevious value: -"Primary detection opportunity for defenders (truncated to 200 chars)."New value: +"Primary observable detection opportunity (truncated to 200 characters)." - changed
Output schema / properties / ranked_techniques / items / properties / pentest_guide_vector / descriptionPrevious value: -"Pentest_guide vector name for follow-up methodology. Absent when no direct mapping exists."New value: +"Associated pentest_guide methodology vector. Absent when no direct mapping exists." - changed
Output schema / properties / ranked_techniques / items / properties / relevance_score / descriptionPrevious value: -"Relevance score based on profile match factors: 1 point per matching platform, 2 per matching service, 2 for auth type match. Higher = more applicable to this profile."New value: +"Relative relevance to the supplied target profile; higher scores indicate stronger matches." - added
Output schema / properties / shownAdded value: +{ + "description": "Number of ranked techniques returned.", + "type": "number" +} - added
Output schema / properties / truncatedAdded value: +{ + "description": "True when ranked_techniques was capped by limit.", + "type": "boolean" +} - removed
Output schema / requiredRemoved value: -[ - "authorized_use_reminder", - "ranked_techniques", - "owasp_test_cases", - "profile_summary", - "attack_version" -]
2 tool updates
- Changed
pentest_generate_payloads1 field changed- changed
Input schema / properties / waf_profile / enumPrevious value: -[ - "cloudflare", - "aws_waf", - "modsecurity_crs", - "imperva", - "akamai", - "none", - "unknown" -]New value: +[ + "cloudflare", + "aws_waf", + "modsecurity_crs", + "imperva", + "akamai", + "f5_bigip_asm", + "nginx_modsecurity", + "fortinet_fortiwaf", + "none", + "unknown" +]
- Added
pentest_lookup_group
6 tool updates
- First observed
pentest_analyze_response - First observed
pentest_encode - First observed
pentest_generate_payloads - First observed
pentest_guide - First observed
pentest_lookup_technique - First observed
pentest_map_techniques
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
TLPTOracle — 17-tool TIBER-EU TLPT framework: scope, threat intel, scenarios, reports.
55 tools, 7 Resources, Sigma rules, email SPF/DMARC, MITRE, CVE/KEV, risk_score. No key.
MEOK MCP Hardening MCP — automated security red-team for any MCP server. Maps OWASP LLM Top 10
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides structured pentesting methodology knowledge base with 7 read-only tools for searching techniques, services, and attack paths via MCP.-
- AlicenseNot gradedqualityDmaintenanceEnables automated penetration testing workflow planning using Beam Search and Monte Carlo Tree Search algorithms to generate step-by-step attack paths, score vulnerabilities, and recommend tools for reconnaissance, exploitation, and privilege escalation tasks.38MIT
- AlicenseNot gradedqualityCmaintenanceEnables automated bug bounty hunting and security research with tools for reconnaissance, web vulnerability scanning, API testing, binary analysis, and mobile app analysis through an MCP interface.MIT
- 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.252797BSD 3-Clause
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a clearly distinct purpose: response analysis, payload encoding, payload generation, methodology guidance, ATT&CK group lookup, ATT&CK technique lookup, and technique mapping. There is no meaningful overlap or ambiguity between tool boundaries.
All tools share the pentest_ prefix and most follow a verb_noun pattern such as analyze_response, generate_payloads, and lookup_technique. However, pentest_encode and pentest_guide are verb-only, creating a minor inconsistency in the naming convention.
Seven tools is a well-scoped size for a pentest assistance server. Each tool covers a distinct capability without unnecessary duplication or bloat.
The tool set covers the main pentest workflow areas: response analysis, payload generation/encoding, methodology guidance, and ATT&CK reference/mapping. Minor gaps exist, such as no explicit reporting or active scanning tool, but the surface is coherent and usable for its apparent purpose.