io. roadflow/ roadflow
by roadflow.io · remote · no sign-in to list tools · v1.0.0 · published by io.roadflow
Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.
43 tools: 3 can delete or cancel things, 25 change things and 15 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things25Claude Code: ask: see these tools
- Only reads15Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http roadflow https://roadflow.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
43 tools
Deletes or cancels 3Claude Code: deny
model_delete_edgeDelete a manual edge by edgeId.No findings
Why it is in this group
- The name "model_delete_edge" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete a manual edge by edgeId.
model_delete_observationDelete one fact by parameterId + scope/scopeKey + setId.No findings
Why it is in this group
- The name "model_delete_observation" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete one fact by parameterId + scope/scopeKey + setId.
model_delete_parameterDelete a parameter and its observations (cascade).No findings
Why it is in this group
- The name "model_delete_parameter" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete a parameter and its observations (cascade).
Changes things 25Claude Code: ask
artifacts_apply_jsonReplace (or merge) the Artifacts graph with normalized JSON.No findings
Why it is in this group
- The name "artifacts_apply_json" says "apply": a word for a change.
Description, as the server wrote it Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.
artifacts_discardClear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace).
artifacts_export_jsonExport the current Artifacts workspace as JSON (serializeState).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Export the current Artifacts workspace as JSON (serializeState).
artifacts_newCreate an ephemeral in-memory Artifacts graph workspace.No findings
Why it is in this group
- The description's first verb is "create": a word for a change.
Description, as the server wrote it Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared.
model_discardUnbind the Model project from this MCP session.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Unbind the Model project from this MCP session. Does not delete MySQL rows.
model_evaluateRead-only computeModel.No findings
Why it is in this group
- The name "model_evaluate" says "evaluate": a word for a change.
Description, as the server wrote it 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.
model_newCreate a Model project in MySQL (parameter register).No findings
Why it is in this group
- The description's first verb is "create": a word for a change.
Description, as the server wrote it 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=…
model_openBind this MCP session to an existing Model project (edit or view id).No findings
Why it is in this group
- The name "model_open" says "open": a word for a change.
Description, as the server wrote it Bind this MCP session to an existing Model project (edit or view id). View ids are read-only.
model_patch_projectUpdate title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains.No findings
Why it is in this group
- The name "model_patch_project" says "patch": a word for a change.
Description, as the server wrote it Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full.
model_upsert_edgeCreate or patch a manual SOURCE, FLOW, or INTERFACE edge.No findings
Why it is in this group
- The name "model_upsert_edge" says "upsert": a word for a change.
Description, as the server wrote it Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected.
model_upsert_observationCreate or replace one fact (parameterId + scope + setId).No findings
Why it is in this group
- The name "model_upsert_observation" says "upsert": a word for a change.
Description, as the server wrote it 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.
model_upsert_observationsCreate or replace many facts (cap 400).No findings
Why it is in this group
- The name "model_upsert_observations" says "upsert": a word for a change.
Description, as the server wrote it 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.
model_upsert_parameterCreate or patch one parameter definition (not observations).No findings
Why it is in this group
- The name "model_upsert_parameter" says "upsert": a word for a change.
Description, as the server wrote it Create or patch one parameter definition (not observations). Pass rev for If-Match on update.
model_upsert_parametersCreate or patch many catalog rows (cap 400).No findings
Why it is in this group
- The name "model_upsert_parameters" says "upsert": a word for a change.
Description, as the server wrote it Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction.
roadflow_apply_jsonReplace workspace state with normalized JSON (serializeState shape).No findings
Why it is in this group
- The name "roadflow_apply_json" says "apply": a word for a change.
Description, as the server wrote it Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically.
roadflow_apply_markupReplace roads via friendly markup (same as the editor panel).No findings
Why it is in this group
- The name "roadflow_apply_markup" says "apply": a word for a change.
Description, as the server wrote it Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves.
roadflow_discardClear the in-memory workspace for this MCP session (does not delete cloud maps).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Clear the in-memory workspace for this MCP session (does not delete cloud maps).
roadflow_export_csvExport steps as CSV (road, goal, lane, step, notes, type, status, position, date).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Export steps as CSV (road, goal, lane, step, notes, type, status, position, date).
roadflow_export_jsonExport the current workspace as JSON (serializeState).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Export the current workspace as JSON (serializeState).
roadflow_export_markupExport the current workspace as friendly markup.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Export the current workspace as friendly markup.
roadflow_newCreate an ephemeral in-memory roadflow workspace (default).No findings
Why it is in this group
- The description's first verb is "create": a word for a change.
Description, as the server wrote it Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared.
Only reads 15Claude Code: allow
artifacts_getReturn the current Artifacts workspace as JSON.No findings
Why it is in this group
- The name "artifacts_get" says "get": a word for reading.
Description, as the server wrote it Return the current Artifacts workspace as JSON.
artifacts_get_versionLoad one shared Artifacts version by relative index (-1 newest).No findings
Why it is in this group
- The name "artifacts_get_version" says "get": a word for reading.
Description, as the server wrote it Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save).
artifacts_list_versionsList shared Artifacts version checkpoints (newest first).No findings
Why it is in this group
- The name "artifacts_list_versions" says "list": a word for reading.
Description, as the server wrote it List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace.
artifacts_statusReturn mode, ids, /artifacts/?id= URLs, and node/label counts.No findings
Why it is in this group
- The name "artifacts_status" says "status": a word for reading.
Description, as the server wrote it Return mode, ids, /artifacts/?id= URLs, and node/label counts.
model_getHydrate records from MySQL.No findings
Why it is in this group
- The name "model_get" says "get": a word for reading.
Description, as the server wrote it 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.
model_get_parameterOne catalog row plus its observations (facts).No findings
Why it is in this group
- The name "model_get_parameter" says "get": a word for reading.
Description, as the server wrote it One catalog row plus its observations (facts).
model_list_dictionariesStreams, axes (members), phases, parameter sets, chains, and calendar.No findings
Why it is in this group
- The name "model_list_dictionaries" says "list": a word for reading.
Description, as the server wrote it Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar.
model_list_edgesManual lineage edges only (SOURCE/FLOW/INTERFACE).No findings
Why it is in this group
- The name "model_list_edges" says "list": a word for reading.
Description, as the server wrote it Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored.
model_list_observationsList facts.No findings
Why it is in this group
- The name "model_list_observations" says "list": a word for reading.
Description, as the server wrote it List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis.
model_list_parametersList parameter catalog rows.No findings
Why it is in this group
- The name "model_list_parameters" says "list": a word for reading.
Description, as the server wrote it List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner.
model_statusCounts, rev, and /model/?id= URLs for the bound project (or pass id).No findings
Why it is in this group
- The name "model_status" says "status": a word for reading.
Description, as the server wrote it Counts, rev, and /model/?id= URLs for the bound project (or pass id).
roadflow_getReturn the current workspace as JSON and/or markup.No findings
Why it is in this group
- The name "roadflow_get" says "get": a word for reading.
Description, as the server wrote it Return the current workspace as JSON and/or markup.
roadflow_get_versionLoad one shared-map version by relative index (e.g.No findings
Why it is in this group
- The name "roadflow_get_version" says "get": a word for reading.
Description, as the server wrote it 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.
roadflow_list_versionsList shared-map version checkpoints (newest first).No findings
Why it is in this group
- The name "roadflow_list_versions" says "list": a word for reading.
Description, as the server wrote it List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only).
roadflow_statusReturn mode, ids, URLs, and road/step counts for the current MCP session workspace.No findings
Why it is in this group
- The name "roadflow_status" says "status": a word for reading.
Description, as the server wrote it Return mode, ids, URLs, and road/step counts for the current MCP session workspace.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http roadflow https://roadflow.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__roadflow__roadflow_status",
"mcp__roadflow__roadflow_get",
"mcp__roadflow__roadflow_list_versions",
"mcp__roadflow__roadflow_get_version",
"mcp__roadflow__artifacts_status",
"mcp__roadflow__artifacts_get",
"mcp__roadflow__artifacts_list_versions",
"mcp__roadflow__artifacts_get_version",
"mcp__roadflow__model_status",
"mcp__roadflow__model_get",
"mcp__roadflow__model_list_parameters",
"mcp__roadflow__model_get_parameter",
"mcp__roadflow__model_list_observations",
"mcp__roadflow__model_list_edges",
"mcp__roadflow__model_list_dictionaries"
],
"ask": [
"mcp__roadflow__roadflow_new",
"mcp__roadflow__roadflow_apply_json",
"mcp__roadflow__roadflow_apply_markup",
"mcp__roadflow__roadflow_open_shared",
"mcp__roadflow__roadflow_create_shared",
"mcp__roadflow__roadflow_export_json",
"mcp__roadflow__roadflow_export_markup",
"mcp__roadflow__roadflow_export_csv",
"mcp__roadflow__roadflow_discard",
"mcp__roadflow__artifacts_new",
"mcp__roadflow__artifacts_apply_json",
"mcp__roadflow__artifacts_open_shared",
"mcp__roadflow__artifacts_create_shared",
"mcp__roadflow__artifacts_export_json",
"mcp__roadflow__artifacts_discard",
"mcp__roadflow__model_new",
"mcp__roadflow__model_open",
"mcp__roadflow__model_discard",
"mcp__roadflow__model_patch_project",
"mcp__roadflow__model_upsert_parameter",
"mcp__roadflow__model_upsert_parameters",
"mcp__roadflow__model_upsert_observation",
"mcp__roadflow__model_upsert_observations",
"mcp__roadflow__model_upsert_edge",
"mcp__roadflow__model_evaluate"
],
"deny": [
"mcp__roadflow__model_delete_parameter",
"mcp__roadflow__model_delete_observation",
"mcp__roadflow__model_delete_edge"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as roadflow. Review it before you use it.