io.roadflow/roadflow
REMOTE · ROADFLOW.IO · SCANNED SEP 26
Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.
Available components
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 Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 43 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability72
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2722 tokens (~63/item across 43 items; 43 tools + 0 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 Coverage75
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 26% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "model_delete_parameter" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 43 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
How do I install the io.roadflow/roadflow MCP server?
io.roadflow/roadflow is a hosted endpoint at https://roadflow.io/mcp, 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 · roadflow.io
claude mcp add --transport http io-roadflow-roadflow 'https://roadflow.io/mcp'
{
"mcpServers": {
"io-roadflow-roadflow": {
"url": "https://roadflow.io/mcp"
}
}
} {
"servers": {
"io-roadflow-roadflow": {
"type": "http",
"url": "https://roadflow.io/mcp"
}
}
} [mcp_servers.io-roadflow-roadflow] url = "https://roadflow.io/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-roadflow-roadflow": {
"type": "remote",
"url": "https://roadflow.io/mcp",
"enabled": true
}
}
} openclaw mcp add io-roadflow-roadflow --url 'https://roadflow.io/mcp' --transport streamable-http
mcp_servers:
io-roadflow-roadflow:
url: "https://roadflow.io/mcp" {
"McpServers": {
"io-roadflow-roadflow": {
"Transport": "http",
"Url": "https://roadflow.io/mcp"
}
}
} assistant mcp add io-roadflow-roadflow -t streamable-http -u 'https://roadflow.io/mcp'
{
"mcpServers": {
"io-roadflow-roadflow": {
"type": "http",
"url": "https://roadflow.io/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
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.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 5 Sept 26 −4
- Schema quality: 44 → 63 ▼ functional
- Tool coverage: 100% → 26% ▼ functional
- Destructive annotations: pass → 0 functional
- New tool “model_delete_edge” functional
- New tool “model_delete_observation” functional
- New tool “model_delete_parameter” functional
- New tool “model_discard” functional
- New tool “model_evaluate” functional
- New tool “model_get” functional
- New tool “model_get_parameter” functional
- New tool “model_list_dictionaries” functional
- New tool “model_list_edges” functional
- New tool “model_list_observations” functional
- New tool “model_list_parameters” functional
- New tool “model_new” functional
- New tool “model_open” functional
- New tool “model_patch_project” functional
- New tool “model_status” functional
- New tool “model_upsert_edge” functional
- New tool “model_upsert_observation” functional
- New tool “model_upsert_observations” functional
- New tool “model_upsert_parameter” functional
- New tool “model_upsert_parameters” functional
- 2 Sept 26 0
- Stability: 0.97 → pass security
- 1 Sept 26 0
- Schema quality: 595 → 1012 ▼ functional
- Schema quality: excellent → good functional
- New tool “artifacts_apply_json” functional
- New tool “artifacts_create_shared” functional
- New tool “artifacts_discard” functional
- New tool “artifacts_export_json” functional
- New tool “artifacts_get” functional
- New tool “artifacts_get_version” functional
- New tool “artifacts_list_versions” functional
- New tool “artifacts_new” functional
- New tool “artifacts_open_shared” functional
- New tool “artifacts_status” functional
- 30 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 4 Aug 26 0
- Schema quality: 464 → 595 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- New tool “roadflow_get_version” functional
- New tool “roadflow_list_versions” functional
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 26 Sept 2026 · Probed https://roadflow.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=roadflow.io | CN=YR1,O=Let's Encrypt,C=US | 11 Sept 2026 | 10 Dec 2026 | RSA 2048 | SHA256-RSA | 5df17652b5b419ef5c195d1dc0c4a6dc1e4 |
| SANs: roadflow.io, www.roadflow.io | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of roadflow.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| roadflow.io. | 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://roadflow.io/mcp | Verified | 200 | |
| http (plaintext) | http://roadflow.io/mcp | HTTPS enforced | 301 | https://roadflow.io:443/mcp |
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 →
artifacts_apply_json Apply Artifacts JSON ~66
Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.
| Name | Type | Req | Description |
|---|---|---|---|
| json | – | – | Full or partial graph state, or JSON string |
| merge | boolean | – | If true, merge nodes/labels arrays from payload onto current state |
No output schema declared.
No examples provided.
artifacts_create_shared Create shared Artifacts graph ~66
Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/.
| Name | Type | Req | Description |
|---|---|---|---|
| editId | string | – | Optional edit id (default: random af-…) |
| viewId | string | – | Optional view id (default: random af-…) |
No output schema declared.
No examples provided.
artifacts_discard Discard Artifacts workspace ~31
Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
artifacts_export_json Export Artifacts JSON ~21
Export the current Artifacts workspace as JSON (serializeState).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
artifacts_get Get Artifacts graph ~17
Return the current Artifacts workspace as JSON.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
artifacts_get_version Get Artifacts version snapshot ~70
Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save).
| Name | Type | Req | Description |
|---|---|---|---|
| load | boolean | – | If true, replace the current MCP Artifacts workspace with this version |
| rel | integer | yes | Relative version index: -1 = newest checkpoint |
No output schema declared.
No examples provided.
artifacts_list_versions List Artifacts version history ~26
List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
artifacts_new New Artifacts workspace ~47
Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared.
| Name | Type | Req | Description |
|---|---|---|---|
| json | – | – | Optional seed graph state |
No output schema declared.
No examples provided.
artifacts_open_shared Open shared Artifacts graph ~46
Load a cloud Artifacts graph by edit or view id. View links are read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | editId or viewId from /artifacts/?id=… |
No output schema declared.
No examples provided.
artifacts_status Artifacts workspace status ~27
Return mode, ids, /artifacts/?id= URLs, and node/label counts.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
model_delete_edge Delete edge ~32
Delete a manual edge by edgeId.
| Name | Type | Req | Description |
|---|---|---|---|
| edgeId | string | yes | – |
| id | string | – | – |
No output schema declared.
No examples provided.
model_delete_observation Delete observation ~63
Delete one fact by parameterId + scope/scopeKey + setId.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| parameterId | string | yes | – |
| scope | object | – | – |
| scopeKey | string | – | – |
| setId | string | – | – |
No output schema declared.
No examples provided.
model_delete_parameter Delete parameter ~33
Delete a parameter and its observations (cascade).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| parameterId | string | yes | – |
No output schema declared.
No examples provided.
model_discard Discard Model session ~26
Unbind the Model project from this MCP session. Does not delete MySQL rows.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
model_evaluate Evaluate Model compute ~118
Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell cap 2000.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| includeEmpty | boolean | – | – |
| includeInputs | boolean | – | – |
| parameterIds | array | – | – |
| periodId | string | – | – |
| rangeEnd | string | – | – |
| rangeStart | string | – | – |
| setId | string | – | – |
| slice | object | – | – |
No output schema declared.
No examples provided.
model_get Get Model register ~70
Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change one fact — do not treat this as a blob to rewrite.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| include | string | – | Default summary |
No output schema declared.
No examples provided.
model_get_parameter Get parameter ~46
One catalog row plus its observations (facts).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| parameterId | string | yes | Stable id, e.g. PRJ.FACILITY_MW |
No output schema declared.
No examples provided.
model_list_dictionaries List dictionaries ~41
Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
No output schema declared.
No examples provided.
model_list_edges List edges ~65
Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored.
| Name | Type | Req | Description |
|---|---|---|---|
| edgeType | string | – | – |
| fromId | string | – | – |
| id | string | – | – |
| toId | string | – | – |
No output schema declared.
No examples provided.
model_list_observations List observations ~73
List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis.
| Name | Type | Req | Description |
|---|---|---|---|
| evidenceStatus | string | – | – |
| id | string | – | – |
| parameterId | string | – | – |
| setId | string | – | – |
No output schema declared.
No examples provided.
model_list_parameters List parameters ~64
List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| layer | string | – | – |
| primaryOwner | string | – | – |
| role | string | – | – |
| streamId | string | – | – |
No output schema declared.
No examples provided.
model_new New Model register ~207
Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes, phases, parameterSets, chains, parameters, observations, edges. Does not persist CALC outputs or FORMULA edges. Binds this MCP session. UI: /model/?id=…
| Name | Type | Req | Description |
|---|---|---|---|
| axes | array | – | – |
| calendar | – | – | { granularity, start, end } |
| chains | array | – | – |
| edges | array | – | Manual SOURCE/FLOW/INTERFACE only |
| observations | array | – | Facts: parameterId, scope, setId, value, evidence, source |
| parameterSets | array | – | – |
| parameters | array | – | Catalog rows (parameterId, streamId, role, formula, attrs, …) |
| phases | array | – | – |
| streams | array | – | – |
| title | string | – | – |
| viewId | string | – | – |
No output schema declared.
No examples provided.
model_open Open Model register ~46
Bind this MCP session to an existing Model project (edit or view id). View ids are read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Project edit id (mp-…) or view id |
No output schema declared.
No examples provided.
model_patch_project Patch Model dictionaries ~123
Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full.
| Name | Type | Req | Description |
|---|---|---|---|
| axes | array | – | – |
| calendar | – | – | – |
| chains | array | – | – |
| id | string | – | – |
| parameterSets | array | – | – |
| phases | array | – | – |
| rev | integer | – | Expected project rev (If-Match) |
| streams | array | – | – |
| title | string | – | – |
| viewId | string|null | – | – |
No output schema declared.
No examples provided.
model_status Model register status ~35
Counts, rev, and /model/?id= URLs for the bound project (or pass id).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
No output schema declared.
No examples provided.
model_upsert_edge Upsert edge ~96
Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | – | – |
| edgeId | string | yes | – |
| edgeType | string | – | – |
| fromId | string | – | – |
| id | string | – | – |
| label | string | – | – |
| owner | string | – | – |
| rev | integer | – | – |
| toId | string | – | – |
No output schema declared.
No examples provided.
model_upsert_observation Upsert observation ~181
Create or replace one fact (parameterId + scope + setId). Example: Base P2 facility MW. Do not write CALC-computed values; only IN facts or CALC overrides (valueOverride). Pass rev for If-Match.
| Name | Type | Req | Description |
|---|---|---|---|
| evidenceStatus | string | – | – |
| id | string | – | – |
| parameterId | string | yes | – |
| rev | integer | – | – |
| scope | object | – | axisId → memberId, e.g. { "Phase_ID": "P2" } |
| scopeKey | string | – | – |
| setId | string | – | Base (default), Downside, Upside, or custom |
| source | – | – | { sourceId, locator, date, owner, allowedUse } |
| value | – | – | – |
| valueLocked | boolean | – | – |
| valueOverride | boolean | – | – |
No output schema declared.
No examples provided.
model_upsert_observations Bulk upsert observations ~89
Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row errors; otherwise one transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| continueOnError | boolean | – | – |
| id | string | – | – |
| observations | array | yes | Facts (parameterId, scope, setId, value, …) |
No output schema declared.
No examples provided.
model_upsert_parameter Upsert parameter catalog ~224
Create or patch one parameter definition (not observations). Pass rev for If-Match on update.
| Name | Type | Req | Description |
|---|---|---|---|
| adjustmentKind | string | – | – |
| assignedWs | string | – | – |
| attrs | – | – | name, definition, unit, scopeAxes, SBC fields, comments, … |
| canonicalId | string | – | – |
| comment | string | – | – |
| definition | string | – | – |
| domainId | string | – | – |
| economicClass | string | – | – |
| formula | string | – | – |
| id | string | – | – |
| layer | string | – | – |
| name | string | – | – |
| parameterId | string | yes | – |
| primaryOwner | string | – | – |
| priority | string | – | – |
| qtyParameterId | string | – | – |
| rateComponents | array | – | – |
| rateParameterId | string | – | – |
| rev | integer | – | – |
| role | string | – | – |
| scopeAxes | array | – | – |
| streamId | string | – | – |
| unit | string | – | – |
| valueType | string | – | – |
No output schema declared.
No examples provided.
model_upsert_parameters Bulk upsert parameters ~78
Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| continueOnError | boolean | – | – |
| id | string | – | – |
| parameters | array | yes | Catalog rows (parameterId + same fields as model_upsert_parameter) |
No output schema declared.
No examples provided.
roadflow_apply_json Apply JSON state ~67
Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| json | – | – | Full or partial map state object, or JSON string |
| merge | boolean | – | If true, deep-ish merge timeline/display and replace roads from payload |
No output schema declared.
No examples provided.
roadflow_apply_markup Apply markup ~41
Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves.
| Name | Type | Req | Description |
|---|---|---|---|
| markup | string | yes | Friendly roadflow markup text |
No output schema declared.
No examples provided.
roadflow_create_shared Create shared roadflow ~90
Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl when the user only needs to see the map.
| Name | Type | Req | Description |
|---|---|---|---|
| editId | string | – | Optional edit id (default: random rm-…) |
| viewId | string | – | Optional view id (default: random rm-…) |
No output schema declared.
No examples provided.
roadflow_discard Discard workspace ~26
Clear the in-memory workspace for this MCP session (does not delete cloud maps).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
roadflow_export_csv Export CSV ~33
Export steps as CSV (road, goal, lane, step, notes, type, status, position, date).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
roadflow_export_json Export JSON ~20
Export the current workspace as JSON (serializeState).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
roadflow_export_markup Export markup ~18
Export the current workspace as friendly markup.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
roadflow_get Get workspace snapshot ~28
Return the current workspace as JSON and/or markup.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Default both |
No output schema declared.
No examples provided.
roadflow_get_version Get version snapshot ~93
Load one shared-map version by relative index (e.g. -1 newest, -2 previous). Returns JSON state. Does not change the live map or workspace unless load=true.
| Name | Type | Req | Description |
|---|---|---|---|
| load | boolean | – | If true, also replace the current MCP workspace with this version (does not save to cloud). |
| rel | integer | yes | Relative version index: -1 = newest checkpoint, -2 = older, … |
No output schema declared.
No examples provided.
roadflow_list_versions List version history ~38
List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
roadflow_new New roadflow workspace ~64
Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared.
| Name | Type | Req | Description |
|---|---|---|---|
| json | – | – | Optional seed state (same shape as serializeState) |
| markup | string | – | Optional friendly markup to apply after seed/empty |
No output schema declared.
No examples provided.
roadflow_open_shared Open shared roadflow ~49
Load a cloud map by edit or view id into this session. View links are read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | editId or viewId from a share URL (?id=…) |
No output schema declared.
No examples provided.
roadflow_status Workspace status ~28
Return mode, ids, URLs, and road/step counts for the current MCP session workspace.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the io.roadflow/roadflow MCP server?
io.roadflow/roadflow is an MCP server listed in the public MCP registry as io.roadflow/roadflow. Create and edit roadmaps with JSON or markup; share edit and view links from AI agents. This page covers its hosted endpoint (https://roadflow.io/mcp).
Is the io.roadflow/roadflow MCP server safe to use?
io.roadflow/roadflow scores 74 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 io.roadflow/roadflow MCP server expose?
io.roadflow/roadflow exposes 43 tools: roadflow_new, roadflow_status, roadflow_get, roadflow_apply_json, roadflow_apply_markup, and 38 more. Their descriptions and schemas cost roughly 2,722 tokens of context every time the server is loaded.
Does the io.roadflow/roadflow MCP server require authentication?
No. We connected to io.roadflow/roadflow without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.roadflow/roadflow MCP server still maintained?
io.roadflow/roadflow is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.