gradeNot graded
get_architecture_stateAnswer
Read the live ThreatWeaver canvas. Returns semantic node kinds (internet, database, waf, ...), labels, security config, STRIDE threats, patches, positions, and edges marked data or threat. Call this before simulating attacks or applying patches.
View tool JSON
{
"name": "get_architecture_state",
"kind": "answer",
"impl": "imperative",
"description": "Read the live ThreatWeaver canvas. Returns semantic node kinds (internet, database, waf, ...), labels, security config, STRIDE threats, patches, positions, and edges marked data or threat. Call this before simulating attacks or applying patches.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_threat_reportAnswer
Summarize current STRIDE findings, secured nodes, misconfigured nodes (public unencrypted datastores, or public gateways/web without rate limiting), active threat edges, and openThreatCount. Use after simulate_attack or apply_security_patch to explain what changed. A node can be in securedNodes (a patch was applied) and still appear in misconfiguredNodes.
View tool JSON
{
"name": "get_threat_report",
"kind": "answer",
"impl": "imperative",
"description": "Summarize current STRIDE findings, secured nodes, misconfigured nodes (public unencrypted datastores, or public gateways/web without rate limiting), active threat edges, and openThreatCount. Use after simulate_attack or apply_security_patch to explain what changed. A node can be in securedNodes (a patch was applied) and still appear in misconfiguredNodes.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}load_starter_architectureAction
Replace the canvas with the built-in insecure 3-tier architecture (Internet, Web Server, API Gateway, Backend, Database, Object Storage). Use when the canvas is empty or the user asks to reset the demo.
View tool JSON
{
"name": "load_starter_architecture",
"kind": "act",
"impl": "imperative",
"description": "Replace the canvas with the built-in insecure 3-tier architecture (Internet, Web Server, API Gateway, Backend, Database, Object Storage). Use when the canvas is empty or the user asks to reset the demo.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}add_nodeAction
Add a component to the canvas, including security nodes (waf, vpc). Returns the stable node id (for example api-gateway-2). Use connect_nodes after adding.
View tool JSON
{
"name": "add_node",
"kind": "act",
"impl": "imperative",
"description": "Add a component to the canvas, including security nodes (waf, vpc). Returns the stable node id (for example api-gateway-2). Use connect_nodes after adding.",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"internet",
"loadbalancer",
"webserver",
"apigateway",
"backendservice",
"database",
"storage",
"waf",
"vpc"
],
"description": "Component kind to add"
},
"label": {
"type": "string",
"description": "Optional display label"
},
"x": {
"type": "number",
"description": "Optional canvas X position"
},
"y": {
"type": "number",
"description": "Optional canvas Y position"
}
},
"required": [
"kind"
],
"additionalProperties": false
}
}connect_nodesAction
Draw a data-flow edge from sourceId to targetId. Do not use this for attack paths; use simulate_attack instead.
View tool JSON
{
"name": "connect_nodes",
"kind": "act",
"impl": "imperative",
"description": "Draw a data-flow edge from sourceId to targetId. Do not use this for attack paths; use simulate_attack instead.",
"inputSchema": {
"type": "object",
"properties": {
"sourceId": {
"type": "string",
"description": "Existing source node id"
},
"targetId": {
"type": "string",
"description": "Existing target node id"
}
},
"required": [
"sourceId",
"targetId"
],
"additionalProperties": false
}
}update_nodeAction
Change a node label or security config flags (publicAccess, encrypted, rateLimited). Prefer apply_security_patch when the user asked to mitigate a threat, because that also updates visuals and threat edges.
View tool JSON
{
"name": "update_node",
"kind": "act",
"impl": "imperative",
"description": "Change a node label or security config flags (publicAccess, encrypted, rateLimited). Prefer apply_security_patch when the user asked to mitigate a threat, because that also updates visuals and threat edges.",
"inputSchema": {
"type": "object",
"properties": {
"nodeId": {
"type": "string",
"description": "Node id to update"
},
"label": {
"type": "string",
"description": "New display label"
},
"publicAccess": {
"type": "boolean",
"description": "Whether the component is reachable from the public internet"
},
"encrypted": {
"type": "boolean",
"description": "Whether data at rest is encrypted"
},
"rateLimited": {
"type": "boolean",
"description": "Whether the component has rate limiting"
}
},
"required": [
"nodeId"
],
"additionalProperties": false
}
}simulate_attackAction
Act as a red team. Draw an Attacker node and an animated red threat edge to targetNodeId, then attach a STRIDE finding. Call get_architecture_state first so ids are current.
View tool JSON
{
"name": "simulate_attack",
"kind": "act",
"impl": "imperative",
"description": "Act as a red team. Draw an Attacker node and an animated red threat edge to targetNodeId, then attach a STRIDE finding. Call get_architecture_state first so ids are current.",
"inputSchema": {
"type": "object",
"properties": {
"targetNodeId": {
"type": "string",
"description": "Id of the node under attack, for example api-gateway-1"
},
"stride": {
"type": "string",
"enum": [
"spoofing",
"tampering",
"repudiation",
"information_disclosure",
"denial_of_service",
"elevation_of_privilege"
],
"description": "STRIDE category for this finding"
},
"description": {
"type": "string",
"description": "Short explanation of the vulnerability and attack path"
}
},
"required": [
"targetNodeId",
"stride",
"description"
],
"additionalProperties": false
}
}apply_security_patchAction
Act as a blue team. Mutate the live graph: waf inserts a WAF node on incoming data edges; vpc adds a Private VPC node and closes public access; encrypt, private_access, and rate_limit update config. Clears STRIDE findings and threat edges on the target.
View tool JSON
{
"name": "apply_security_patch",
"kind": "act",
"impl": "imperative",
"description": "Act as a blue team. Mutate the live graph: waf inserts a WAF node on incoming data edges; vpc adds a Private VPC node and closes public access; encrypt, private_access, and rate_limit update config. Clears STRIDE findings and threat edges on the target.",
"inputSchema": {
"type": "object",
"properties": {
"targetNodeId": {
"type": "string",
"description": "Node to harden"
},
"patchType": {
"type": "string",
"enum": [
"waf",
"encrypt",
"private_access",
"rate_limit",
"vpc"
],
"description": "Mitigation to apply"
}
},
"required": [
"targetNodeId",
"patchType"
],
"additionalProperties": false
}
}