Model Context Protocol for AI agents · Last updated: September 4, 2026
roadflow exposes a remote Model Context Protocol (MCP) server so agents can create and edit Plans roadmaps, Artifacts graphs, and the Model parameter register — without opening the browser UI. Plans tools are roadflow_*; Artifacts tools are artifacts_*; Model tools are model_*. One endpoint; three session workspaces.
Human docs: this page. Machine overview: llms.txt. Markup reference (Plans): notation.md.
Protocol endpoint (not an HTML page): https://roadflow.io/mcp.
Add a remote MCP server (Settings → MCP, or your MCP config JSON):
{
"mcpServers": {
"roadflow": {
"url": "https://roadflow.io/mcp"
}
}
}
roadflow_create_shared or artifacts_create_shared.*_open_shared, or publish with *_create_shared. Edits via apply tools auto-save when you have an edit link (view links are read-only).model_new / model_open bind a project; each tool writes one record (parameter, observation, edge, or dictionaries). No whole-document apply.roadflow_*)Roadmaps: roads, lanes, steps, markup. Share URLs look like /?id=….
| Tool | Purpose |
|---|---|
roadflow_new | Empty ephemeral workspace (optional seed JSON/markup) |
roadflow_status | Mode, ids, URLs, road/step counts |
roadflow_get | Snapshot as JSON and/or markup |
roadflow_apply_json | Replace/merge state (JSON-first) |
roadflow_apply_markup | Replace roads via friendly markup |
roadflow_open_shared | Load map by edit or view id |
roadflow_create_shared | Persist workspace; return edit + view URLs |
roadflow_export_json | Export serializeState JSON |
roadflow_export_markup | Export friendly markup |
roadflow_export_csv | Export steps CSV |
roadflow_list_versions | List shared edit version checkpoints |
roadflow_get_version | Fetch one checkpoint by relative index (-1 newest) |
roadflow_discard | Clear in-memory Plans workspace |
artifacts_*)Freeform graphs: documents, registries (tables), notes, packages, labels, connections. Nodes of kind registry contain table columns and rows, and outgoing connections can target specific rows via targetRowId. Share URLs look like /artifacts/?id=…. JSON only (no markup/CSV).
| Tool | Purpose |
|---|---|
artifacts_new | Empty ephemeral graph (optional seed JSON) |
artifacts_status | Mode, ids, URLs, node/label counts |
artifacts_get | Current graph JSON |
artifacts_apply_json | Replace/merge graph JSON (supports documents, registries with rows/columns, notes, packages, labels) |
artifacts_open_shared | Load graph by edit or view id |
artifacts_create_shared | Persist graph; return edit + view URLs |
artifacts_export_json | Export serializeState JSON |
artifacts_list_versions | List shared edit version checkpoints |
artifacts_get_version | Fetch one checkpoint (-1 newest) |
artifacts_discard | Clear in-memory Artifacts workspace |
model_*)Parameter register: catalog, scoped observations (facts), manual edges, dictionaries. URLs look like /model/?id=…. Record grain — patch one observation (or a capped bulk) without rewriting the graph. model_new allocates a view id (mv-…) and returns viewUrl. Closed formula set: IF, AND/OR/NOT, CEILING/FLOOR, MAX/MIN, ^/POW, PCT, CalendarHours(year|range), YearsFromBase, YEARFRACTION, BAND/LOOKUP, SUM/NPV/IRR/PAYBACK/DSCR, unicode ×÷−, unique [canonicalId]. CALC still needs = or SBC; formula wins if both are set. Narrative stays IN + comment. Not computed here: optimizer, reverse EQ, XNPV/XIRR, ECML. Do not persist CALC outputs or FORMULA edges. Full schema: /model/AGENTS.md.
| Tool | Purpose |
|---|---|
model_new | Create a MySQL project (optional seed records); bind session |
model_open | Bind session to edit or view id |
model_status | Counts, rev, /model/?id= URLs |
model_get | Hydrate (summary / all / one record family) |
model_discard | Unbind session (does not delete rows) |
model_patch_project | Title, calendar, streams, axes, phases, sets, chains |
model_list_parameters | Catalog list (stream / role / layer / owner filters) |
model_get_parameter | One catalog row + its observations |
model_upsert_parameter | Catalog only (not facts). Optional top-level priority, canonicalId, domainId, comment, assignedWs, economicClass, qtyParameterId, rateParameterId, rateComponents, adjustmentKind |
model_upsert_parameters | Bulk catalog (cap 400, per-row errors) |
model_delete_parameter | Delete parameter (cascades observations) |
model_list_observations | Facts (filter parameter / set / evidence) |
model_upsert_observation | One fact (scope + set + value + evidence) |
model_upsert_observations | Bulk facts (cap 400; CALC outputs rejected unless valueOverride) |
model_delete_observation | Delete one fact |
model_list_edges | Manual SOURCE / FLOW / INTERFACE |
model_upsert_edge | Create/patch a manual edge |
model_delete_edge | Delete a manual edge |
model_evaluate | Read-only compute. View ids allowed. Default period = calendar start (not today). periodId XOR range. Cap 2000 cells. REST POST /v1/model-projects/:id/evaluate |
model_list_dictionaries | Streams, axes, phases, sets, chains, calendar |
The MCP endpoint is currently unauthenticated. Anyone who can reach
https://roadflow.io/mcp can create ephemeral maps, and change a shared map if they know its edit id
(same trust model as share links).
Do not put secrets in roadmaps. Auth or rate limits may be added later.
See also the Privacy Policy and Terms of Service.
roadflow_new → apply JSON/markup → export or roadflow_create_shared (viewUrl / editUrl)artifacts_new → artifacts_apply_json → artifacts_create_shared (URLs under /artifacts/)model_new or model_open → model_upsert_parameter(s) / model_upsert_observation(s) / model_upsert_edge → model_evaluate (URLs under /model/)Questions: admin@roadflow.io