← WebMCP Directory

Tool tree

webmcp-ht.vercel.app

Health & EducationTools verified
Website
A visual studio where you and an agent share one canvas to learn system design.
Explore capabilities
    get_architectureAnswer

    Read the current system-design graph: challenge, nodes (with ids), edges, call trees, and last simulation. Use these ids with other tools.

    View tool JSON
    {
      "name": "get_architecture",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the current system-design graph: challenge, nodes (with ids), edges, call trees, and last simulation. Use these ids with other tools.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_catalogAnswer

    List block types you can add, their default capacity, and connection rules.

    View tool JSON
    {
      "name": "get_catalog",
      "kind": "answer",
      "impl": "imperative",
      "description": "List block types you can add, their default capacity, and connection rules.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_selected_nodeAnswer

    Return the block the human currently has selected on the canvas, what that kind of block means, its connection rules, neighbors, and last-run stats for it. Call this when they ask about the selected node.

    View tool JSON
    {
      "name": "get_selected_node",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the block the human currently has selected on the canvas, what that kind of block means, its connection rules, neighbors, and last-run stats for it. Call this when they ask about the selected node.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_robustnessAnswer

    Score how robust the last simulation is (0-100) and, if a previous run exists, whether the latest change made the system better or worse.

    View tool JSON
    {
      "name": "get_robustness",
      "kind": "answer",
      "impl": "imperative",
      "description": "Score how robust the last simulation is (0-100) and, if a previous run exists, whether the latest change made the system better or worse.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_simulationAnswer

    Return the last simulation: utilization, p99, error rate, bottlenecks, SLO pass/fail, robustness, and delta vs the previous run.

    View tool JSON
    {
      "name": "get_simulation",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the last simulation: utilization, p99, error rate, bottlenecks, SLO pass/fail, robustness, and delta vs the previous run.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    list_challengesAnswer

    List the four system-design use cases the user can play.

    View tool JSON
    {
      "name": "list_challenges",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the four system-design use cases the user can play.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    load_challengeAction

    Reset the canvas to a use case starter sketch. Ids: url-shortener, news-feed, realtime-chat, video-streaming.

    View tool JSON
    {
      "name": "load_challenge",
      "kind": "act",
      "impl": "imperative",
      "description": "Reset the canvas to a use case starter sketch. Ids: url-shortener, news-feed, realtime-chat, video-streaming.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "url-shortener",
              "news-feed",
              "realtime-chat",
              "video-streaming"
            ]
          }
        },
        "required": [
          "id"
        ]
      }
    }
    add_nodeAction

    Add a block to the canvas. Optional id (stable name), label, and nearId to place it beside an existing block.

    View tool JSON
    {
      "name": "add_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a block to the canvas. Optional id (stable name), label, and nearId to place it beside an existing block.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "client",
              "dns",
              "waf",
              "cdn",
              "load_balancer",
              "api_gateway",
              "rate_limiter",
              "auth",
              "websocket_gateway",
              "api",
              "search",
              "ranker",
              "transcoder",
              "cache",
              "database",
              "read_replica",
              "object_store",
              "queue",
              "pubsub",
              "worker",
              "stream_processor",
              "notification"
            ]
          },
          "id": {
            "type": "string",
            "description": "Optional stable id, e.g. cache-1"
          },
          "label": {
            "type": "string"
          },
          "nearId": {
            "type": "string",
            "description": "Place to the right of this node"
          },
          "replicas": {
            "type": "number"
          }
        },
        "required": [
          "kind"
        ]
      }
    }
    connectAction

    Connect two blocks left-to-right. Incoming edges to a queue default to async (off the p99 path).

    View tool JSON
    {
      "name": "connect",
      "kind": "act",
      "impl": "imperative",
      "description": "Connect two blocks left-to-right. Incoming edges to a queue default to async (off the p99 path).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "enum": [
              "sync",
              "async"
            ]
          }
        },
        "required": [
          "from",
          "to"
        ]
      }
    }
    disconnectAction

    Remove the edge between two blocks.

    View tool JSON
    {
      "name": "disconnect",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove the edge between two blocks.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        },
        "required": [
          "from",
          "to"
        ]
      }
    }
    set_node_propsAction

    Change replicas, per-replica RPS capacity, cache hit rate, or lock a node.

    View tool JSON
    {
      "name": "set_node_props",
      "kind": "act",
      "impl": "imperative",
      "description": "Change replicas, per-replica RPS capacity, cache hit rate, or lock a node.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "replicas": {
            "type": "number"
          },
          "rpsCapacity": {
            "type": "number"
          },
          "hitRate": {
            "type": "number"
          },
          "label": {
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          }
        },
        "required": [
          "id"
        ]
      }
    }
    annotate_nodeAction

    Pin a finding on a block so the human can see it on the graph.

    View tool JSON
    {
      "name": "annotate_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Pin a finding on a block so the human can see it on the graph.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "warn",
              "error"
            ]
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "message"
        ]
      }
    }
    run_simulationAction

    Push traffic through the graph, animate packets, color bottlenecks, and evaluate the challenge SLO.

    View tool JSON
    {
      "name": "run_simulation",
      "kind": "act",
      "impl": "imperative",
      "description": "Push traffic through the graph, animate packets, color bottlenecks, and evaluate the challenge SLO.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ingressRps": {
            "type": "number",
            "description": "Override challenge RPS for a what-if."
          }
        }
      }
    }
    remove_nodeAction

    Remove a block and its edges. Asks the human to confirm.

    View tool JSON
    {
      "name": "remove_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove a block and its edges. Asks the human to confirm.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ]
      }
    }
    repair_graphAction

    Drop dangling edges and remove broken blocks (unknown kinds or corrupt data) so the canvas can run again.

    View tool JSON
    {
      "name": "repair_graph",
      "kind": "act",
      "impl": "imperative",
      "description": "Drop dangling edges and remove broken blocks (unknown kinds or corrupt data) so the canvas can run again.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    apply_planAction

    Apply a batch of ops in order: add_node, connect, disconnect, set_node_props, remove_node. Confirm once with the human. Prefer add_node with explicit ids so later ops can reference them.

    View tool JSON
    {
      "name": "apply_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply a batch of ops in order: add_node, connect, disconnect, set_node_props, remove_node. Confirm once with the human. Prefer add_node with explicit ids so later ops can reference them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string"
          },
          "ops": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "ops"
        ]
      }
    }