MCP Tools Reference: securitycenter.googleapis.com

Tool: list_attack_paths

Lists simulated attack paths showing step-by-step how an adversary could exploit vulnerabilities and misconfigurations to reach high-value cloud assets. Use this tool to prioritize remediation based on actual attack exposure and toxic combinations.

The following code sample shows how to use curl to call the list_attack_paths MCP tool.

Curl Request
curl --location 'https://securitycenter.googleapis.com/mcp/investigate' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
  "method": "tools/call",
  "params": {
    "name": "list_attack_paths",
    "arguments": {
      // provide these details according to the tool's MCP specification
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

Input Schema

Request message for listing the attack paths for a given simulation or valued resource.

ListAttackPathsRequest

JSON representation
{
  "parent": string,
  "filter": string,
  "pageToken": string,
  "pageSize": integer
}
Fields
parent

string

Required. Name of parent to list attack paths.

Valid formats: organizations/{organization}, organizations/{organization}/simulations/{simulation} organizations/{organization}/simulations/{simulation}/attackExposureResults/{attack_exposure_result_v2} organizations/{organization}/simulations/{simulation}/valuedResources/{valued_resource}

filter

string

The filter expression that filters the attack path in the response. Supported fields:

  • valued_resources supports =
pageToken

string

The value returned by the last ListAttackPathsResponse; indicates that this is a continuation of a prior ListAttackPaths call, and that the system should return the next page of data.

pageSize

integer

The maximum number of results to return in a single response. Default is 10, minimum is 1, maximum is 1000.

Output Schema

Response message for listing the attack paths for a given simulation or valued resource.

ListAttackPathsResponse

JSON representation
{
  "attackPaths": [
    {
      object (AttackPath)
    }
  ],
  "nextPageToken": string
}
Fields
attackPaths[]

object (AttackPath)

The attack paths that the attack path simulation identified.

nextPageToken

string

Token to retrieve the next page of results, or empty if there are no more results.

AttackPath

JSON representation
{
  "name": string,
  "pathNodes": [
    {
      object (AttackPathNode)
    }
  ],
  "edges": [
    {
      object (AttackPathEdge)
    }
  ]
}
Fields
name

string

The attack path name, for example, organizations/12/simulations/34/valuedResources/56/attackPaths/78

pathNodes[]

object (AttackPathNode)

A list of nodes that exist in this attack path.

edges[]

object (AttackPathEdge)

A list of the edges between nodes in this attack path.

AttackPathNode

JSON representation
{
  "resource": string,
  "resourceType": string,
  "displayName": string,
  "associatedFindings": [
    {
      object (PathNodeAssociatedFinding)
    }
  ],
  "uuid": string,
  "attackSteps": [
    {
      object (AttackStepNode)
    }
  ]
}
Fields
resource

string

The name of the resource at this point in the attack path. The format of the name follows the Cloud Asset Inventory resource name format

resourceType

string

The supported resource type

displayName

string

Human-readable name of this resource.

associatedFindings[]

object (PathNodeAssociatedFinding)

The findings associated with this node in the attack path.

uuid

string

Unique id of the attack path node.

attackSteps[]

object (AttackStepNode)

A list of attack step nodes that exist in this attack path node.

PathNodeAssociatedFinding

JSON representation
{
  "canonicalFinding": string,
  "findingCategory": string,
  "name": string
}
Fields
canonicalFinding

string

Canonical name of the associated findings. Example: organizations/123/sources/456/findings/789

findingCategory

string

The additional taxonomy group within findings from a given source.

name

string

Full resource name of the finding.

AttackStepNode

JSON representation
{
  "uuid": string,
  "type": enum (NodeType),
  "displayName": string,
  "labels": {
    string: string,
    ...
  },
  "description": string
}
Fields
uuid

string

Unique ID for one Node

type

enum (NodeType)

Attack step type. Can be either AND, OR or DEFENSE

displayName

string

User friendly name of the attack step

labels

map (key: string, value: string)

Attack step labels for metadata

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

description

string

Attack step description

LabelsEntry

JSON representation
{
  "key": string,
  "value": string
}
Fields
key

string

value

string

AttackPathEdge

JSON representation
{
  "source": string,
  "destination": string
}
Fields
source

string

The attack node uuid of the source node.

destination

string

The attack node uuid of the destination node.

NodeType

The type of the incoming attack step node.

Enums
NODE_TYPE_UNSPECIFIED Type not specified
NODE_TYPE_AND Incoming edge joined with AND
NODE_TYPE_OR Incoming edge joined with OR
NODE_TYPE_DEFENSE Incoming edge is defense
NODE_TYPE_ATTACKER Incoming edge is attacker

Tool Annotations

Tool annotations are sent to MCP clients to describe the basic risk of a given tool. Most clients treat these hints as untrusted, but they can be used to decide when a confirmation prompt might be sent to a user.

Along with the title string, the following boolean hints are defined as follows:

  • readOnlyHint: If true, the tool doesn't modify its environment. Default: false.
  • destructiveHint: If true, then the tool can perform destructive actions. If false, then the tool can only perform additive actions. Default: true.
  • idempotentHint: If true, then calling the tool repeatedly with the same arguments will have no additional effect on its environment. Default: false.
  • openWorldHint: If true, then the tool can interact with an 'open world' of external entities. If false, then the tool can only interact with internal entities. For example, a web search tool would be open world, while a memory tool would not be open world.

Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌