Tool tree
gradeNot graded
get_architectureAnswer
Read the full current architecture on the canvas: components, connections, what the user has selected, last audit and load results, and which contextual tools are available. Call this first before modifying anything.
View tool JSON
{
"name": "get_architecture",
"kind": "answer",
"impl": "imperative",
"description": "Read the full current architecture on the canvas: components, connections, what the user has selected, last audit and load results, and which contextual tools are available. Call this first before modifying anything.",
"inputSchema": {
"type": "object",
"properties": {
"verbose": {
"type": "boolean",
"description": "Include latencyMs, notes and positions."
}
},
"additionalProperties": false
}
}add_componentAction
Add one infrastructure component (service, database, cache, queue, load balancer, etc.) to the canvas, optionally connecting it to existing components. Stateful types (database, cache) default to 1 replica; pass replicas>=2 for redundancy. Returns its id.
View tool JSON
{
"name": "add_component",
"kind": "act",
"impl": "imperative",
"description": "Add one infrastructure component (service, database, cache, queue, load balancer, etc.) to the canvas, optionally connecting it to existing components. Stateful types (database, cache) default to 1 replica; pass replicas>=2 for redundancy. Returns its id.",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "client, dns, cdn, load_balancer, api_gateway, auth, service, worker, queue, cache, database, object_storage, search, external_api, monitoring. Synonyms like postgres, redis, kafka, s3 are accepted."
},
"label": {
"type": "string"
},
"replicas": {
"type": "integer",
"minimum": 1,
"maximum": 64
},
"capacityRps": {
"type": "number",
"description": "Requests per second one replica can serve."
},
"latencyMs": {
"type": "number"
},
"zone": {
"type": "string"
},
"tech": {
"type": "string",
"description": "e.g. postgres, redis, kafka, node, go"
},
"notes": {
"type": "string"
},
"connectFrom": {
"type": "array",
"items": {
"type": "string"
},
"description": "Components (id or label) that send traffic to the new one."
},
"connectTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Components (id or label) the new one sends traffic to."
}
},
"required": [
"type"
],
"additionalProperties": false
}
}update_componentAction
Change a component's label, replicas, capacity, latency, zone, notes, tech, or status. Set status to "down" to simulate an outage, "healthy" to recover.
View tool JSON
{
"name": "update_component",
"kind": "act",
"impl": "imperative",
"description": "Change a component's label, replicas, capacity, latency, zone, notes, tech, or status. Set status to \"down\" to simulate an outage, \"healthy\" to recover.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Component id or label."
},
"label": {
"type": "string"
},
"replicas": {
"type": "integer",
"minimum": 1,
"maximum": 64
},
"capacityRps": {
"type": "number"
},
"latencyMs": {
"type": "number"
},
"zone": {
"type": "string"
},
"tech": {
"type": "string"
},
"notes": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"healthy",
"degraded",
"down"
]
}
},
"required": [
"id"
],
"additionalProperties": false
}
}remove_componentAction
Delete a component and all of its connections.
View tool JSON
{
"name": "remove_component",
"kind": "act",
"impl": "imperative",
"description": "Delete a component and all of its connections.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}connect_componentsAction
Create or update a directed connection (traffic flow) from one component to another. Weight is the share of traffic (routers split it; services fan out that fraction).
View tool JSON
{
"name": "connect_components",
"kind": "act",
"impl": "imperative",
"description": "Create or update a directed connection (traffic flow) from one component to another. Weight is the share of traffic (routers split it; services fan out that fraction).",
"inputSchema": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"target": {
"type": "string"
},
"protocol": {
"type": "string",
"enum": [
"http",
"https",
"grpc",
"websocket",
"tcp",
"amqp",
"kafka",
"redis",
"sql",
"s3",
"dns"
]
},
"label": {
"type": "string"
},
"weight": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"latencyMs": {
"type": "number"
}
},
"required": [
"source",
"target"
],
"additionalProperties": false
}
}disconnect_componentsAction
Remove a connection, by edge id or by source and target.
View tool JSON
{
"name": "disconnect_components",
"kind": "act",
"impl": "imperative",
"description": "Remove a connection, by edge id or by source and target.",
"inputSchema": {
"type": "object",
"properties": {
"edgeId": {
"type": "string"
},
"source": {
"type": "string"
},
"target": {
"type": "string"
}
},
"additionalProperties": false
}
}apply_blueprintAction
Create many components and connections in one call, then auto-layout. Use this to draw a whole system at once. Edges may reference nodes by id or label. Set replace=true to start from an empty canvas.
View tool JSON
{
"name": "apply_blueprint",
"kind": "act",
"impl": "imperative",
"description": "Create many components and connections in one call, then auto-layout. Use this to draw a whole system at once. Edges may reference nodes by id or label. Set replace=true to start from an empty canvas.",
"inputSchema": {
"type": "object",
"properties": {
"replace": {
"type": "boolean",
"description": "Clear the canvas first (asks the user to confirm if it is not empty)."
},
"layout": {
"type": "string",
"enum": [
"LR",
"TB"
]
},
"nodes": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"label": {
"type": "string"
},
"replicas": {
"type": "integer"
},
"capacityRps": {
"type": "number"
},
"latencyMs": {
"type": "number"
},
"zone": {
"type": "string"
},
"tech": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"type",
"label"
],
"additionalProperties": false
}
},
"edges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"target": {
"type": "string"
},
"protocol": {
"type": "string"
},
"weight": {
"type": "number"
},
"label": {
"type": "string"
}
},
"required": [
"source",
"target"
],
"additionalProperties": false
}
}
},
"required": [
"nodes"
],
"additionalProperties": false
}
}auto_layoutAction
Re-arrange the canvas into a clean left-to-right (LR) or top-to-bottom (TB) flow.
View tool JSON
{
"name": "auto_layout",
"kind": "act",
"impl": "imperative",
"description": "Re-arrange the canvas into a clean left-to-right (LR) or top-to-bottom (TB) flow.",
"inputSchema": {
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"LR",
"TB"
]
}
},
"additionalProperties": false
}
}audit_architectureAction
Analyse the design for single points of failure, missing caches or load balancers, insecure protocols, orphans, outages and cycles. Returns a score, grade and prioritised findings with suggested fixes.
View tool JSON
{
"name": "audit_architecture",
"kind": "act",
"impl": "imperative",
"description": "Analyse the design for single points of failure, missing caches or load balancers, insecure protocols, orphans, outages and cycles. Returns a score, grade and prioritised findings with suggested fixes.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}simulate_loadAction
Run the capacity model for N concurrent users, optionally with some components failed, and report bottlenecks, error rate and latency. Results are drawn on the canvas.
View tool JSON
{
"name": "simulate_load",
"kind": "act",
"impl": "imperative",
"description": "Run the capacity model for N concurrent users, optionally with some components failed, and report bottlenecks, error rate and latency. Results are drawn on the canvas.",
"inputSchema": {
"type": "object",
"properties": {
"users": {
"type": "integer",
"minimum": 1,
"maximum": 10000000
},
"requestsPerUserPerSec": {
"type": "number",
"minimum": 0.001,
"maximum": 100,
"description": "Default 0.2."
},
"failedComponentIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Treat these as down for this run only."
},
"mode": {
"type": "string",
"enum": [
"fast",
"des"
],
"description": "Simulation mode: fast (static flow) or des (discrete-event simulation). Default fast."
},
"seed": {
"type": "integer",
"description": "Deterministic PRNG seed for DES mode."
}
},
"required": [
"users"
],
"additionalProperties": false
}
}generate_infra_codeAction
Compile the canvas into deployable infrastructure code (docker_compose, or kubernetes if available) and show it in the code panel.
View tool JSON
{
"name": "generate_infra_code",
"kind": "act",
"impl": "imperative",
"description": "Compile the canvas into deployable infrastructure code (docker_compose, or kubernetes if available) and show it in the code panel.",
"inputSchema": {
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"docker_compose",
"kubernetes"
]
}
},
"required": [
"format"
],
"additionalProperties": false
}
}load_templateAction
Replace the canvas with a starter architecture: ecommerce, chat, ml_inference, or blank. Asks the user to confirm if the canvas is not empty.
View tool JSON
{
"name": "load_template",
"kind": "act",
"impl": "imperative",
"description": "Replace the canvas with a starter architecture: ecommerce, chat, ml_inference, or blank. Asks the user to confirm if the canvas is not empty.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"enum": [
"ecommerce",
"chat",
"ml_inference",
"blank"
]
}
},
"required": [
"name"
],
"additionalProperties": false
}
}highlight_componentsAction
Visually pulse specific components and show a short message to the user, to point at something while explaining. Purely visual, changes nothing.
View tool JSON
{
"name": "highlight_components",
"kind": "act",
"impl": "imperative",
"description": "Visually pulse specific components and show a short message to the user, to point at something while explaining. Purely visual, changes nothing.",
"inputSchema": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"message": {
"type": "string",
"maxLength": 200
},
"level": {
"type": "string",
"enum": [
"info",
"warn",
"danger"
]
}
},
"required": [
"ids"
],
"additionalProperties": false
}
}clear_canvasAction
Remove everything from the canvas after the user confirms in the page. Requires confirm=true.
View tool JSON
{
"name": "clear_canvas",
"kind": "act",
"impl": "imperative",
"description": "Remove everything from the canvas after the user confirms in the page. Requires confirm=true.",
"inputSchema": {
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true
}
},
"required": [
"confirm"
],
"additionalProperties": false
}
}