Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

BlockWerk

REMOTE · BLOCKWERK-MCP-WORKER.BLOCKWERK.WORKERS.DEV

Build, run and analyse block-diagram simulations: PID, Bode, FFT, optimisation and code export.

+3 this week 75 Trust /100

Last scanned (4 hours ago)

Scores higher than 64% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Testing and QA

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security46
Transport & Reachability100
Schema Quality & AI Usability85
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 3765 tokens (~87/item across 43 items; 42 tools + 1 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage96
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 87% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 44 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Stability: 0.97 → pass security
  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 30 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 26 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 23 Oct 26 +2
    • The server now declares the “resources” capability functional
    • First check of Capabilities: pass functional
    • First check of Schema quality: 100 functional
    • New resource “blockwerk-canvas-viewer” functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://blockwerk-mcp-worker.blockwerk.workers.dev/

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=blockwerk.workers.dev CN=WE1,O=Google Trust Services,C=US 23 Oct 2026 21 Jan 2027 ECDSA 256 ECDSA-SHA256 a5b82f6a0355f9c713b1fd4fdf2fadba
SANs: blockwerk.workers.dev, *.blockwerk.workers.dev
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of blockwerk-mcp-worker.blockwerk.workers.dev. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
workers.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://blockwerk-mcp-worker.blockwerk.workers.dev/ Verified 200
http (plaintext) http://blockwerk-mcp-worker.blockwerk.workers.dev/ Served over HTTP 200
MCP tools · 42 exposed · ~3,252 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_block ~71

Add a new block to the canvas. Returns the new block ID.

NameTypeReqDescription
typestringyesBlock type from the library, e.g. "PIDController", "Gain", "Integrator"
xnumberyesHorizontal position in canvas pixels
ynumberyesVertical position in canvas pixels

No output schema declared.

No examples provided.

analyze_topology ~28

Analyzes the block diagram structure: detects feedback loops, signal paths, and system order.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

auto_tune_pid ~165

Automatically tunes a PID controller using the Ziegler-Nichols ultimate cycle method. Finds the ultimate gain (Ku) and oscillation period (Tu) via binary search, then applies ZN formulas. No prior knowledge of the plant required.

NameTypeReqDescription
controlTypestring–Controller type to tune for (default: PID)
maxGainnumber–Upper bound for Ku search (default: 200)
measureBlockIdstringyesScope or Display block showing the controlled variable
minGainnumber–Lower bound for Ku search (default: 0.1)
pidBlockIdstringyesID of the PIDController block to tune
setpointnumber–Desired setpoint value (default: 1)

No output schema declared.

No examples provided.

batch_commands ~74

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 batch. When adding TextNote annotations, set "anchors" to the handles/IDs of the described blocks so auto-layout keeps each note next to them.

NameTypeReqDescription
commandsarrayyes–

No output schema declared.

No examples provided.

calculate_metrics ~61

Calculates step response metrics from signal data: rise time, settling time, overshoot percentage, and steady-state error.

NameTypeReqDescription
blockIdstringyesID of the Scope block
setpointnumber–Target setpoint value (default: 1)

No output schema declared.

No examples provided.

cancel_job ~22

Cancel a running background job.

NameTypeReqDescription
jobIdstringyes–

No output schema declared.

No examples provided.

clear_canvas ~34

Remove all blocks and connections from the canvas. This is a destructive action that asks the user for approval in the BlockWerk tab.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

connect_blocks ~159

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" -> "error" for PIDController, "+" / "-" for Subtraction).

NameTypeReqDescription
fromBlockIdstringyesID of the source block
fromPortIdstringyesOutput port ID of the source block, e.g. "out" (aliases like "signal", "y" are supported)
toBlockIdstringyesID of the destination block
toPortIdstringyesInput port ID of the destination block, e.g. "in" (aliases like "signal" or PID "error" are supported)

No output schema declared.

No examples provided.

delete_block ~50

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.

NameTypeReqDescription
blockIdstringyesID of the block to delete

No output schema declared.

No examples provided.

describe_canvas ~52

Returns a structured description of all blocks and connections currently on the canvas. Set "compact" to true for a token-efficient summary.

NameTypeReqDescription
compactboolean–If true, returns a minimal description without full parameter details.

No output schema declared.

No examples provided.

evaluate_spec_mask ~156

Evaluates signal data against automated design specifications and tolerance corridors (rise time, settling time, overshoot %, steady-state error, min/max limits).

NameTypeReqDescription
blockIdstringyesID of the Scope or signal source block
lowerLimitnumber–Absolute lower bound corridor
maxOvershootPercentnumber–Maximum allowable overshoot %
maxRiseTimenumber–Maximum allowable rise time (seconds)
maxSettlingTimenumber–Maximum allowable settling time (seconds)
maxSteadyStateErrornumber–Maximum allowable steady-state error
setpointnumber–Target setpoint value (default: 1)
upperLimitnumber–Absolute upper bound corridor

No output schema declared.

No examples provided.

explain_simulation ~87

Analyze the last completed simulation and return a structured diagnosis: signal anomalies (NaN, divergence, oscillation), solver health (rejection rate, efficiency), algebraic loops, and optional stability margins. Returns JSON with severity-tagged findings and actionable suggestions.

NameTypeReqDescription
stabilityMarginsobject–Optional pre-computed stability margins from a Bode sweep. If omitted, stability analysis is skipped.

No output schema declared.

No examples provided.

export_diagram ~23

Exports the current canvas project as a complete BlockWerk JSON string.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

generate_code ~133

Generates standalone production code (C++, Python, Rust) from the current canvas diagram. Returns structured code files, interfaces (inputs/outputs), execution order, and diagnostics.

NameTypeReqDescription
encapsulateSubsystemsboolean–Whether to generate encapsulated subsystem classes (default: false)
modelNamestring–Name of the generated model class/module (e.g., "MotorController", default: "BlockWerkModel")
sampleTimenumber–Optional custom step size in seconds (default: current canvas sampleTime)
targetstring–Filter code generation to a specific target language (default: "all")

No output schema declared.

No examples provided.

get_ai_history ~27

Returns the list of recent canvas operations performed by the AI, showing what can be undone.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_analysis_measurements ~43

Retrieves the currently active pinned measurements and their computed values across plotted signals in the Analysis panel.

NameTypeReqDescription
blockIdstring–Optional blockId or signalId filter

No output schema declared.

No examples provided.

get_architect_memory ~19

Returns the persistent memory object of the Architect.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_available_blocks ~165

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 list of all types; with a list of type IDs it returns full details for those types. Example port IDs: Step out "out"; Sum in "in", out "out"; Gain in "in", out "out"; PIDController in "error","reset", out "out"; uPlotDisplay in "signal". Common aliases (e.g. "in" for PID error, "in" for uPlotDisplay signal, "+" / "-" for Subtraction) are resolved automatically.

NameTypeReqDescription
filterarray–Optional: List of block type IDs to get full details for. If omitted, returns a compact list of all blocks.

No output schema declared.

No examples provided.

get_bode_data ~138

Computes magnitude and phase frequency response (Bode data) between two blocks. Traces path backwards from outputBlockId. Returns analytic response if the path contains only linear blocks, otherwise runs numerical sweep.

NameTypeReqDescription
endFreqnumber–End frequency in rad/s (default: 100)
inputBlockIdstringyesID of the input source block
outputBlockIdstringyesID of the output measurement block
pointsPerDecadenumber–Number of points per decade (default: 10)
startFreqnumber–Start frequency in rad/s (default: 0.1)

No output schema declared.

No examples provided.

get_canvas_preview ~68

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 diagram online.

NameTypeReqDescription
typestring–Which visual region to capture: "canvas", "scope", or "combined" (default: "combined").

No output schema declared.

No examples provided.

get_engine_status ~30

Returns the simulation engine status, including supported solvers, active background jobs, and compilation/WASM capabilities.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_fft_data ~53

Computes FFT (frequency spectrum) of a Scope signal. Returns frequencies and magnitudes.

NameTypeReqDescription
blockIdstringyesID of the Scope block
channelnumber–Channel index (default: 0)

No output schema declared.

No examples provided.

get_job_status ~27

Check the status and progress of a background job.

NameTypeReqDescription
jobIdstringyes–

No output schema declared.

No examples provided.

get_share_link ~59

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 is uploaded. Opening the link in a browser shows the diagram, where the simulation can be run.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_signal_data ~48

Returns time series data from a Scope block output for analysis.

NameTypeReqDescription
blockIdstringyesID of the Scope block
channelnumber–Channel index (default: 0)

No output schema declared.

No examples provided.

get_templates ~119

Lists the built-in, verified BlockWerk diagrams: classic control systems (PID loop, cruise control, inverted pendulum), signal processing, electrical and physics models. Each entry gives an id, what the diagram does, its difficulty and the blocks it uses. Returns metadata only; load_template puts a diagram on the canvas by id.

NameTypeReqDescription
categorystring–Optional filter by category.
interactiveboolean–If true, only diagrams with live on-canvas controls (sliders, joystick, keyboard) meant to be driven while the simulation runs.

No output schema declared.

No examples provided.

identify_fopdt ~123

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). Requires a completed simulation with a step input connected to the plant. Returns the calculated parameters.

NameTypeReqDescription
blockIdstringyesScope or Display block ID showing the plant output
stepAmplitudenumber–Amplitude of the step input (default: 1)
stepTimenumber–Time when the step input occurred (default: 0)

No output schema declared.

No examples provided.

list_jobs ~17

List all recent background jobs and their status.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

load_diagram ~233

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 unique "id" and "type"; "x"/"y"/"params" are optional) and a "connections" array (each connection needs a unique "id" plus "fromBlockId", "fromPortId", "toBlockId", "toPortId"; a missing id fails validation of the whole load). Block types and port ids are listed by get_available_blocks. This is a destructive action that asks the user for approval in the BlockWerk tab.

NameTypeReqDescription
jsonstringyesFull BlockWerk project JSON, e.g. {"blocks":[{"id":"b1","type":"Step","x":100,"y":100,"params":{}},{"id":"b2","type":"Integrator","x":300,"y":100,"params":{}}],"connections":[{"id":"c1","fromBlockId"…

No output schema declared.

No examples provided.

load_template ~109

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 settings. Returns the block and connection counts, the verified simulation settings, and the attribution when the model is based on third-party material. This is a destructive action that asks the user for approval in the BlockWerk tab.

NameTypeReqDescription
templateIdstringyesTemplate id from get_templates, e.g. "inverted_pendulum" or "pid_loop".

No output schema declared.

No examples provided.

optimize_multi_parameter ~125

Optimizes 2–6 parameters simultaneously using Nelder-Mead simplex search, for example Kp, Ki and Kd of a PID controller at once.

NameTypeReqDescription
maxIterationsnumber–Max simulations to run, 5–60 (default: 30)
measureBlockIdstringyesScope or Display block to read the controlled signal from
objectivestring–Metric to minimize (default: iae)
setpointnumber–Target steady-state value (default: 1)
targetsarrayyesParameters to optimize simultaneously

No output schema declared.

No examples provided.

optimize_parameters ~194

Finds the optimal value for a single parameter using golden-section search. Minimizes IAE (integral absolute error), overshoot, or settling_time within a [min, max] range. Converges in about 10 simulations.

NameTypeReqDescription
blockIdstringyesID of the block containing the parameter to tune
maxnumberyesUpper bound of the search range
maxIterationsnumber–Maximum simulations to run, 3–20 (default: 10)
measureBlockIdstringyesScope or Display block ID to read the controlled signal from
minnumberyesLower bound of the search range
objectivestring–Metric to minimize (default: iae)
paramNamestringyesParameter key to optimize (e.g., "Kp", "gain")
setpointnumber–Target steady-state value (default: 1)

No output schema declared.

No examples provided.

redo_last_ai_action ~18

Redoes the last undone canvas modification.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

run_simulation ~89

Triggers a new simulation run with the current canvas state and settings, refreshing the signal data.

NameTypeReqDescription
durationnumber–Duration in seconds
reasonstring–User-facing explanation of why settings were changed (e.g., Nyquist constraint)
sampleTimenumber–Optional custom step size (dt) for high frequency or stiff systems (e.g., 0.001)

No output schema declared.

No examples provided.

start_optimization ~80

Start a parameter optimization job in the background.

NameTypeReqDescription
blockIdstringyes–
maxnumberyes–
maxIterationsnumber––
measureBlockIdstringyes–
minnumberyes–
objectivestring––
paramNamestringyes–
setpointnumber––

No output schema declared.

No examples provided.

sweep_parameter ~135

Runs simulations across a list of values for one parameter, returning control quality metrics (IAE, overshoot, settling_time, steady_state_error) per value. Requires measureBlockId and setpoint.

NameTypeReqDescription
blockIdstringyesID of the block to tune
measureBlockIdstring–Scope or Display block ID to read the controlled signal from
paramNamestringyesParameter key to vary (e.g., "gain", "Kp")
setpointnumber–Expected final value for error calculation (default: 1)
valuesarrayyesList of values to test

No output schema declared.

No examples provided.

tidy_layout ~25

Automatically rearrange all blocks on the canvas into a clean, left-to-right flow.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

undo_last_ai_action ~31

Undoes the last canvas modification made by the AI (add block, connect, delete, update parameter).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

update_architect_memory ~41

Updates the persistent memory of the Architect. Provide a JSON object with keys to update/merge.

NameTypeReqDescription
updatesobjectyesKeys and values to store

No output schema declared.

No examples provided.

update_params ~49

Update one or more parameters of an existing block.

NameTypeReqDescription
blockIdstringyesID of the block to update
paramsobjectyesKey-value pairs of parameter names and their new values

No output schema declared.

No examples provided.

validate_canvas ~44

Performs pre-flight topological and numerical integrity checks on the canvas. Detects unconnected required input ports, isolated blocks, parameter domain anomalies, and direct algebraic feedthrough loops.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

validate_engineering_units ~28

Checks the consistency of engineering units across the diagram. Detects incompatible connections and missing units.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Install

How do I install the BlockWerk MCP server?

BlockWerk is a hosted endpoint at https://blockwerk-mcp-worker.blockwerk.workers.dev/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · blockwerk-mcp-worker.blockwerk.workers.dev

# add to Claude Code
claude mcp add --transport http tech-blockwerk-mcp 'https://blockwerk-mcp-worker.blockwerk.workers.dev/'
Common questions

What is the BlockWerk MCP server?

BlockWerk is an MCP server listed in the public MCP registry as tech.blockwerk/mcp. Build, run and analyse block-diagram simulations: PID, Bode, FFT, optimisation and code export. This page covers its hosted endpoint (https://blockwerk-mcp-worker.blockwerk.workers.dev/).

Is the BlockWerk MCP server safe to use?

BlockWerk scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the BlockWerk MCP server expose?

BlockWerk exposes 42 tools: describe_canvas, get_available_blocks, add_block, connect_blocks, update_params, and 37 more. Their descriptions and schemas cost roughly 3,252 tokens of context every time the server is loaded.

Does the BlockWerk MCP server require authentication?

No. We connected to BlockWerk without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the BlockWerk MCP server still maintained?

BlockWerk is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.