roadflow MCP
An official MCP server for roadflow.io that enables AI agents to create, edit, and manage product roadmaps, artifacts, and model parameters via JSON or markup. It supports tools for generating roadmaps, managing shared links, exporting data, and evaluating model parameters with closed formulas.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://roadflow.io/mcpWhat its tools do
43 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (43)
roadflow_newroadflow_statusroadflow_getroadflow_apply_jsonroadflow_apply_markuproadflow_open_sharedroadflow_create_sharedroadflow_export_jsonroadflow_export_markuproadflow_export_csvroadflow_list_versionsroadflow_get_versionroadflow_discardartifacts_newartifacts_statusartifacts_getartifacts_apply_jsonartifacts_open_sharedartifacts_create_sharedartifacts_export_jsonartifacts_list_versionsartifacts_get_versionartifacts_discardmodel_newmodel_openmodel_statusmodel_getmodel_discardmodel_patch_projectmodel_list_parametersmodel_get_parametermodel_upsert_parametermodel_upsert_parametersmodel_delete_parametermodel_list_observationsmodel_upsert_observationmodel_upsert_observationsmodel_delete_observationmodel_list_edgesmodel_upsert_edgemodel_delete_edgemodel_evaluatemodel_list_dictionaries
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to roadflow.io ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Create and edit product roadmaps using JSON or markup
- Manage artifacts and model parameters for AI agents
- Export roadmaps to JSON, markup, or CSV formats
- Generate shared view-only links for roadmaps
Source and maintenance
Protocol and capabilities
- Server
- roadflow 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 43 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
43 advertised
roadflow_new — New roadflow workspace
Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Optional seed state (same shape as serializeState)"
},
"markup": {
"type": "string",
"description": "Optional friendly markup to apply after seed/empty"
}
},
"additionalProperties": false
}roadflow_status — Workspace status
Return mode, ids, URLs, and road/step counts for the current MCP session workspace.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}roadflow_get — Get workspace snapshot
Return the current workspace as JSON and/or markup.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"format": {
"enum": [
"json",
"markup",
"both"
],
"type": "string",
"description": "Default both"
}
},
"additionalProperties": false
}roadflow_apply_json — Apply JSON state
Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Full or partial map state object, or JSON string"
},
"merge": {
"type": "boolean",
"description": "If true, deep-ish merge timeline/display and replace roads from payload"
}
},
"additionalProperties": false
}roadflow_apply_markup — Apply markup
Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"markup"
],
"properties": {
"markup": {
"type": "string",
"description": "Friendly roadflow markup text"
}
},
"additionalProperties": false
}roadflow_open_shared — Open shared roadflow
Load a cloud map by edit or view id into this session. View links are read-only.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "editId or viewId from a share URL (?id=…)"
}
},
"additionalProperties": false
}roadflow_create_shared — Create shared roadflow
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"editId": {
"type": "string",
"description": "Optional edit id (default: random rm-…)"
},
"viewId": {
"type": "string",
"description": "Optional view id (default: random rm-…)"
}
},
"additionalProperties": false
}roadflow_export_json — Export JSON
Export the current workspace as JSON (serializeState).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}roadflow_export_markup — Export markup
Export the current workspace as friendly markup.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}roadflow_export_csv — Export CSV
Export steps as CSV (road, goal, lane, step, notes, type, status, position, date).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}roadflow_list_versions — List version history
List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}roadflow_get_version — Get version snapshot
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"rel"
],
"properties": {
"rel": {
"type": "integer",
"description": "Relative version index: -1 = newest checkpoint, -2 = older, …",
"exclusiveMaximum": 0
},
"load": {
"type": "boolean",
"description": "If true, also replace the current MCP workspace with this version (does not save to cloud)."
}
},
"additionalProperties": false
}roadflow_discard — Discard workspace
Clear the in-memory workspace for this MCP session (does not delete cloud maps).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}artifacts_new — New Artifacts workspace
Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Optional seed graph state"
}
},
"additionalProperties": false
}artifacts_status — Artifacts workspace status
Return mode, ids, /artifacts/?id= URLs, and node/label counts.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}artifacts_get — Get Artifacts graph
Return the current Artifacts workspace as JSON.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}artifacts_apply_json — Apply Artifacts JSON
Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Full or partial graph state, or JSON string"
},
"merge": {
"type": "boolean",
"description": "If true, merge nodes/labels arrays from payload onto current state"
}
},
"additionalProperties": false
}artifacts_open_shared — Open shared Artifacts graph
Load a cloud Artifacts graph by edit or view id. View links are read-only.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "editId or viewId from /artifacts/?id=…"
}
},
"additionalProperties": false
}artifacts_create_shared — Create shared Artifacts graph
Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"editId": {
"type": "string",
"description": "Optional edit id (default: random af-…)"
},
"viewId": {
"type": "string",
"description": "Optional view id (default: random af-…)"
}
},
"additionalProperties": false
}artifacts_export_json — Export Artifacts JSON
Export the current Artifacts workspace as JSON (serializeState).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}artifacts_list_versions — List Artifacts version history
List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}artifacts_get_version — Get Artifacts version snapshot
Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"rel"
],
"properties": {
"rel": {
"type": "integer",
"description": "Relative version index: -1 = newest checkpoint",
"exclusiveMaximum": 0
},
"load": {
"type": "boolean",
"description": "If true, replace the current MCP Artifacts workspace with this version"
}
},
"additionalProperties": false
}artifacts_discard — Discard Artifacts workspace
Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}model_new — New Model register
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=…
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"axes": {
"type": "array"
},
"edges": {
"type": "array",
"description": "Manual SOURCE/FLOW/INTERFACE only"
},
"title": {
"type": "string"
},
"chains": {
"type": "array"
},
"phases": {
"type": "array"
},
"viewId": {
"type": "string"
},
"streams": {
"type": "array"
},
"calendar": {
"description": "{ granularity, start, end }"
},
"parameters": {
"type": "array",
"description": "Catalog rows (parameterId, streamId, role, formula, attrs, …)"
},
"observations": {
"type": "array",
"description": "Facts: parameterId, scope, setId, value, evidence, source"
},
"parameterSets": {
"type": "array"
}
},
"additionalProperties": false
}model_open — Open Model register
Bind this MCP session to an existing Model project (edit or view id). View ids are read-only.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Project edit id (mp-…) or view id"
}
},
"additionalProperties": false
}model_status — Model register status
Counts, rev, and /model/?id= URLs for the bound project (or pass id).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": false
}model_get — Get Model register
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"include": {
"enum": [
"summary",
"all",
"dictionaries",
"parameters",
"observations",
"edges"
],
"type": "string",
"description": "Default summary"
}
},
"additionalProperties": false
}model_discard — Discard Model session
Unbind the Model project from this MCP session. Does not delete MySQL rows.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}model_patch_project — Patch Model dictionaries
Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer",
"description": "Expected project rev (If-Match)"
},
"axes": {
"type": "array"
},
"title": {
"type": "string"
},
"chains": {
"type": "array"
},
"phases": {
"type": "array"
},
"viewId": {
"type": [
"string",
"null"
]
},
"streams": {
"type": "array"
},
"calendar": {},
"parameterSets": {
"type": "array"
}
},
"additionalProperties": false
}model_list_parameters — List parameters
List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"role": {
"type": "string"
},
"layer": {
"type": "string"
},
"streamId": {
"type": "string"
},
"primaryOwner": {
"type": "string"
}
},
"additionalProperties": false
}model_get_parameter — Get parameter
One catalog row plus its observations (facts).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"parameterId": {
"type": "string",
"description": "Stable id, e.g. PRJ.FACILITY_MW"
}
},
"additionalProperties": false
}model_upsert_parameter — Upsert parameter catalog
Create or patch one parameter definition (not observations). Pass rev for If-Match on update.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer"
},
"name": {
"type": "string"
},
"role": {
"type": "string"
},
"unit": {
"type": "string"
},
"attrs": {
"description": "name, definition, unit, scopeAxes, SBC fields, comments, …"
},
"layer": {
"type": "string"
},
"comment": {
"type": "string"
},
"formula": {
"type": "string"
},
"domainId": {
"type": "string"
},
"priority": {
"type": "string"
},
"streamId": {
"type": "string"
},
"scopeAxes": {
"type": "array",
"items": {
"type": "string"
}
},
"valueType": {
"type": "string"
},
"assignedWs": {
"type": "string"
},
"definition": {
"type": "string"
},
"canonicalId": {
"type": "string"
},
"parameterId": {
"type": "string"
},
"primaryOwner": {
"type": "string"
},
"economicClass": {
"type": "string"
},
"adjustmentKind": {
"type": "string"
},
"qtyParameterId": {
"type": "string"
},
"rateComponents": {
"type": "array"
},
"rateParameterId": {
"type": "string"
}
},
"additionalProperties": false
}model_upsert_parameters — Bulk upsert parameters
Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameters"
],
"properties": {
"id": {
"type": "string"
},
"parameters": {
"type": "array",
"description": "Catalog rows (parameterId + same fields as model_upsert_parameter)"
},
"continueOnError": {
"type": "boolean"
}
},
"additionalProperties": false
}model_delete_parameter — Delete parameter
Delete a parameter and its observations (cascade).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"parameterId": {
"type": "string"
}
},
"additionalProperties": false
}model_list_observations — List observations
List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"setId": {
"type": "string"
},
"parameterId": {
"type": "string"
},
"evidenceStatus": {
"type": "string"
}
},
"additionalProperties": false
}model_upsert_observation — Upsert observation
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer"
},
"scope": {
"type": "object",
"description": "axisId → memberId, e.g. { \"Phase_ID\": \"P2\" }",
"additionalProperties": {
"type": "string"
}
},
"setId": {
"type": "string",
"description": "Base (default), Downside, Upside, or custom"
},
"value": {},
"source": {
"description": "{ sourceId, locator, date, owner, allowedUse }"
},
"scopeKey": {
"type": "string"
},
"parameterId": {
"type": "string"
},
"valueLocked": {
"type": "boolean"
},
"valueOverride": {
"type": "boolean"
},
"evidenceStatus": {
"type": "string"
}
},
"additionalProperties": false
}model_upsert_observations — Bulk upsert observations
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"observations"
],
"properties": {
"id": {
"type": "string"
},
"observations": {
"type": "array",
"description": "Facts (parameterId, scope, setId, value, …)"
},
"continueOnError": {
"type": "boolean"
}
},
"additionalProperties": false
}model_delete_observation — Delete observation
Delete one fact by parameterId + scope/scopeKey + setId.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"scope": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"setId": {
"type": "string"
},
"scopeKey": {
"type": "string"
},
"parameterId": {
"type": "string"
}
},
"additionalProperties": false
}model_list_edges — List edges
Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"toId": {
"type": "string"
},
"fromId": {
"type": "string"
},
"edgeType": {
"enum": [
"SOURCE",
"FLOW",
"INTERFACE"
],
"type": "string"
}
},
"additionalProperties": false
}model_upsert_edge — Upsert edge
Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"edgeId"
],
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer"
},
"toId": {
"type": "string"
},
"label": {
"type": "string"
},
"owner": {
"type": "string"
},
"edgeId": {
"type": "string"
},
"fromId": {
"type": "string"
},
"edgeType": {
"enum": [
"SOURCE",
"FLOW",
"INTERFACE"
],
"type": "string"
},
"condition": {
"enum": [
"DIRECT",
"CONDITIONAL"
],
"type": "string"
}
},
"additionalProperties": false
}model_delete_edge — Delete edge
Delete a manual edge by edgeId.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"edgeId"
],
"properties": {
"id": {
"type": "string"
},
"edgeId": {
"type": "string"
}
},
"additionalProperties": false
}model_evaluate — Evaluate Model compute
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"setId": {
"type": "string"
},
"slice": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"periodId": {
"type": "string"
},
"rangeEnd": {
"type": "string"
},
"rangeStart": {
"type": "string"
},
"includeEmpty": {
"type": "boolean"
},
"parameterIds": {
"type": "array",
"items": {
"type": "string"
}
},
"includeInputs": {
"type": "boolean"
}
},
"additionalProperties": false
}model_list_dictionaries — List dictionaries
Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 897 ms
- 95th percentile latency
- 897 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 897 ms · metadata changed · 43 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http roadflow-mcp https://roadflow.io/mcpCodex
codex mcp add roadflow-mcp --url https://roadflow.io/mcpCursor
{
"mcpServers": {
"roadflow-mcp": {
"url": "https://roadflow.io/mcp"
}
}
}Cline
{
"mcpServers": {
"roadflow-mcp": {
"type": "streamableHttp",
"url": "https://roadflow.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"roadflow-mcp": {
"type": "http",
"url": "https://roadflow.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http roadflow-mcp https://roadflow.io/mcpClaude Desktop
https://roadflow.io/mcpWindsurf
{
"mcpServers": {
"roadflow-mcp": {
"serverUrl": "https://roadflow.io/mcp"
}
}
}Let your agent find its tools
Find servers like roadflow MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run roadflow MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.