← WebMCP Directory

Tool tree

nexus-canvas-pink.vercel.app

Developer ToolsTools verified
Website
A system-design canvas that ChatGPT can draw on, audit, stress-test and compile to infrastructure code via WebMCP.
Explore capabilities
    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
      }
    }