Skip to main content
Glama

Pentest Map Techniques

pentest_map_techniques
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
osNoTarget operating system. Narrows to OS-specific techniques.
limitNoMaximum number of techniques to return (1–50, default 15). Higher values give broader coverage; lower values focus on highest-relevance items.
stackNoTechnology stack components (e.g., ["Node.js", "Express", "PostgreSQL", "Redis"]). Each element matched against technique platform and procedure examples.
servicesNoExposed services and interfaces (e.g., ["REST API", "GraphQL", "file upload", "admin panel"]). Narrows technique relevance.
auth_typeNoAuthentication mechanism in use. Surfaces auth-specific attack techniques.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe limit applied to ranked_techniques.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of ranked techniques returned.
truncatedNoTrue when ranked_techniques was capped by limit.
attack_versionNoATT&CK dataset version used for technique data.
profile_summaryNoOne-sentence normalized summary of the supplied target profile.
owasp_test_casesNoRelevant OWASP Testing Guide test cases for the profile (up to 10).
ranked_techniquesNoTechniques ordered by relevance_score descending.
authorized_use_reminderNoReminder that technique mapping is for authorized testing engagements only. Rendered first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / ranked_techniques / items / properties / pentest_guide_vector / description
      Previous value: -"Associated pentest_guide methodology vector. Absent when no direct mapping exists."New value: +"Associated pentest_get_guide methodology vector. Absent when no direct mapping exists."
  2. Changed13 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "authorized_use_reminder",
      +      "ranked_techniques",
      +      "owasp_test_cases",
      +      "profile_summary",
      +      "attack_version",
      +      "truncated",
      +      "shown",
      +      "cap"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "The limit applied to ranked_techniques.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / error
      Added 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"
      +}
    • changedOutput schema / properties / profile_summary / description
      Previous 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."
    • changedOutput schema / properties / ranked_techniques / items / properties / detection_opportunity / description
      Previous value: -"Primary detection opportunity for defenders (truncated to 200 chars)."New value: +"Primary observable detection opportunity (truncated to 200 characters)."
    • changedOutput schema / properties / ranked_techniques / items / properties / pentest_guide_vector / description
      Previous 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."
    • changedOutput schema / properties / ranked_techniques / items / properties / relevance_score / description
      Previous 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."
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Number of ranked techniques returned.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when ranked_techniques was capped by limit.",
      +  "type": "boolean"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "authorized_use_reminder",
      -  "ranked_techniques",
      -  "owasp_test_cases",
      -  "profile_summary",
      -  "attack_version"
      -]
  3. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and a closed-world non-destructive profile, so the safety burden is light. The description usefully adds that results carry relevance, detection opportunities, mitigations, and methodology vectors, and signals the authorization requirement implied by 'authorized target profile'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and object, and the second sentence efficiently enumerates the output payload. Slightly dense with multi-clause phrasing, but no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, yet the description still summarizes result contents. All five parameters are documented via the schema and annotations cover the safety profile, leaving only minor gaps such as how ranking is computed or whether any profile dimension is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter including enums and the limit range is already fully documented. The description only restates the profile dimensions in prose, adding no new syntax, matching behavior, or defaulting detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rank) and clear resources (ATT&CK techniques and OWASP test cases) plus the exact inputs that shape the ranking (stack, services, auth type, OS). This is readily distinguishable from siblings like pentest_lookup_technique (single-item lookup) or pentest_generate_payloads (payload generation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool applies when you have an 'authorized target profile' to rank techniques against, which hints at the authorization prerequisite. However, there is no explicit when-to-use guidance and no mention of alternatives such as pentest_lookup_technique for single-technique detail, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.