{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_gdz6rte2mtwm","handle":"blockwerk","url":"https://wellknown.network/agents/blockwerk","links":{"self":"https://wellknown.network/agents/blockwerk/record.json","html":"https://wellknown.network/agents/blockwerk","markdown":"https://wellknown.network/agents/blockwerk/record.md","api":"https://wellknown.network/api/v1/agents/blockwerk","status":"https://wellknown.network/api/v1/agents/blockwerk/status","claim":"https://wellknown.network/agents/blockwerk/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/blockwerk/claim.json","badge":"https://wellknown.network/agents/blockwerk/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/blockwerk/history","tools":"https://wellknown.network/api/v1/agents/blockwerk/tools"},"ard":{"identifier":"urn:air:blockwerk-mcp-worker.blockwerk.workers.dev:server:blockwerk","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"BlockWerk","summary":"Build, run and analyse block-diagram simulations: PID, Bode, FFT, optimisation and code export.","description":"Build, run and analyse block-diagram simulations: PID, Bode, FFT, optimisation and code export.","publisher":{"name":"tech.blockwerk","url":null},"homepage":"https://blockwerk.tech/connect-ai","repository":null,"version":"1.1.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://blockwerk-mcp-worker.blockwerk.workers.dev","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-05T14:53:14.523436Z","publishedAt":"2026-10-05T14:53:14.523436Z","registryName":"tech.blockwerk/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"knowledge.memory","name":"Agent Memory","confidence":1,"provenance":"derived"},{"slug":"code.generation","name":"Code Generation","confidence":0.583,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"automation.workflows","name":"Workflow Automation","confidence":0.51,"provenance":"derived"}],"categories":["ai","automation","code","content","knowledge"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 38m ago.","lastOkAt":"2026-10-10T04:31:54.052Z","lastProbedAt":"2026-10-10T04:31:54.052Z","statusComputedAt":"2026-10-10T04:33:28.652Z","reliability30d":{"probes":17,"successRate":1,"p50Ms":59,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":17,"ok":17,"authBoundaryOk":0,"serviceOk":17,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T04:31:54.052Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":84,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:26:20.857Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":59,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T14:32:38.954Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":69,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:27:18.266Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:26:08.330Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:23:56.151Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":61,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:23:40.090Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":60,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T07:25:47.490Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":55,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T01:21:44.630Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":36,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T19:24:11.322Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":70,"error":null,"detail":{"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"toolCount":42,"toolsHash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","serverName":"blockwerk-mcp","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"describe_canvas","description":"Returns a structured description of all blocks and connections currently on the canvas. Set \"compact\" to true for a token-efficient summary."},{"name":"get_available_blocks","description":"Returns the block types in the library with their descriptions, configurable parameters, and exact input/output port IDs. Without a filter it returns a compact "},{"name":"add_block","description":"Add a new block to the canvas. Returns the new block ID."},{"name":"connect_blocks","description":"Connect an output port of one block to an input port of another. Automatically resolves common port aliases (e.g., \"in\" -> \"signal\" for uPlotDisplay, \"in\" -> \"e"},{"name":"update_params","description":"Update one or more parameters of an existing block."},{"name":"delete_block","description":"Delete a block and all its connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"load_diagram","description":"Atomically replaces the entire canvas with a complete diagram defined as a BlockWerk project JSON string. The JSON has a \"blocks\" array (each block needs a uniq"},{"name":"export_diagram","description":"Exports the current canvas project as a complete BlockWerk JSON string."},{"name":"get_share_link","description":"Returns a link that opens the current diagram on the BlockWerk canvas. The whole project travels compressed inside the URL, so it needs no account and nothing i"},{"name":"clear_canvas","description":"Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab."},{"name":"tidy_layout","description":"Automatically rearrange all blocks on the canvas into a clean, left-to-right flow."},{"name":"batch_commands","description":"Executes multiple canvas manipulation and background job commands in a single round-trip. Use \"handle\" strings to refer to blocks added earlier in the same batc"},{"name":"analyze_topology","description":"Analyzes the block diagram structure: detects feedback loops, signal paths, and system order."},{"name":"get_signal_data","description":"Returns time series data from a Scope block output for analysis."},{"name":"calculate_metrics","description":"Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error."},{"name":"get_analysis_measurements","description":"Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel."},{"name":"evaluate_spec_mask","description":"Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits"},{"name":"get_architect_memory","description":"Returns the persistent memory object of the Architect."},{"name":"update_architect_memory","description":"Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge."},{"name":"validate_engineering_units","description":"Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units."},{"name":"validate_canvas","description":"Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomal"},{"name":"get_canvas_preview","description":"Captures a visual screenshot preview of the canvas branded with the official BlockWerk watermark badge and returns the live interactive URL to view and edit the"},{"name":"get_templates","description":"Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physic"},{"name":"load_template","description":"Replaces the entire canvas with one of the built-in verified diagrams, by id from get_templates. The template carries its topology, parameters and simulation se"},{"name":"run_simulation","description":"Triggers a new simulation run with the current canvas state and settings, refreshing the signal data."},{"name":"sweep_parameter","description":"Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Req"},{"name":"optimize_parameters","description":"Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, "},{"name":"optimize_multi_parameter","description":"Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once."},{"name":"auto_tune_pid","description":"Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search"},{"name":"identify_fopdt","description":"Analyzes a step response from a plant to identify its First-Order Plus Dead Time (FOPDT) parameters: Gain (K), Time Constant (tau), and Dead Time (theta). Requi"},{"name":"start_optimization","description":"Start a parameter optimization job in the background."},{"name":"get_job_status","description":"Check the status and progress of a background job."},{"name":"cancel_job","description":"Cancel a running background job."},{"name":"list_jobs","description":"List all recent background jobs and their status."},{"name":"explain_simulation","description":"Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficie"},{"name":"get_bode_data","description":"Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path "},{"name":"get_fft_data","description":"Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes."},{"name":"get_engine_status","description":"Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities."},{"name":"generate_code","description":"Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution "},{"name":"undo_last_ai_action","description":"Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter)."},{"name":"redo_last_ai_action","description":"Redoes the last undone canvas modification."},{"name":"get_ai_history","description":"Returns the list of recent canvas operations performed by the AI, showing what can be undone."}],"package":null,"toolSurface":{"id":"ts_n2rex8hfvbjy","endpointId":"ep_uftx5xkvdndm","hash":"9166b95f0aa20321ef0844134c32cde2d342b3be2a1a026fa481d82b1159637f","toolCount":42,"serverName":"blockwerk-mcp","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-05T20:27:21.553Z","lastSeenAt":"2026-10-10T04:31:54.066Z","observations":17,"toolNames":["describe_canvas","get_available_blocks","add_block","connect_blocks","update_params","delete_block","load_diagram","export_diagram","get_share_link","clear_canvas","tidy_layout","batch_commands","analyze_topology","get_signal_data","calculate_metrics","get_analysis_measurements","evaluate_spec_mask","get_architect_memory","update_architect_memory","validate_engineering_units","validate_canvas","get_canvas_preview","get_templates","load_template","run_simulation","sweep_parameter","optimize_parameters","optimize_multi_parameter","auto_tune_pid","identify_fopdt","start_optimization","get_job_status","cancel_job","list_jobs","explain_simulation","get_bode_data","get_fft_data","get_engine_status","generate_code","undo_last_ai_action","redo_last_ai_action","get_ai_history"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_uftx5xkvdndm","url":"https://blockwerk-mcp-worker.blockwerk.workers.dev","type":"mcp_streamable_http","factsCheckedAt":"2026-10-06T23:26:33.680Z","auth":{"observedAt":"2026-10-06T23:26:33.945Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-06T23:26:33.973Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"blockwerk.workers.dev","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-25T14:18:15.000Z","validTo":"2026-11-23T15:18:12.000Z","daysToExpiry":44,"sanCount":2,"fingerprint256":"67:AB:4F:8F:F3:93:48:49:88:F5:43:DB:81:27:C1:8A:E7:DA:3B:FE:67:5A:72:63:BD:6C:25:69:2D:4E:A0:20"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"tech.blockwerk/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/tech.blockwerk%2Fmcp","firstSeenAt":"2026-10-05T20:20:20.993Z","fetchedAt":"2026-10-08T20:19:12.575Z","normalizedAt":"2026-10-08T20:19:12.575Z"}]},"firstSeenAt":"2026-10-05T20:20:20.993Z","updatedAt":"2026-10-10T04:34:24.295Z"}