{"ok":true,"site":{"host":"t-weaver.vercel.app","url":"https://t-weaver.vercel.app/","type":"live","desc":"ThreatWeaver","tools":[{"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.","title":"Read architecture graph","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Threat report","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Load insecure starter architecture","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Add architecture node","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Connect nodes","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Update node properties","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Simulate STRIDE attack","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Apply security patch","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/t-weaver.vercel.app.svg","apiSurface":"spec","toolCount":8}}