{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_z4n3kke5aae9","handle":"roadflow","url":"https://wellknown.network/agents/roadflow","links":{"self":"https://wellknown.network/agents/roadflow/record.json","html":"https://wellknown.network/agents/roadflow","markdown":"https://wellknown.network/agents/roadflow/record.md","api":"https://wellknown.network/api/v1/agents/roadflow","status":"https://wellknown.network/api/v1/agents/roadflow/status","claim":"https://wellknown.network/agents/roadflow/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/roadflow/claim.json","badge":"https://wellknown.network/agents/roadflow/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/roadflow/history","tools":"https://wellknown.network/api/v1/agents/roadflow/tools"},"ard":{"identifier":"urn:air:roadflow.io:server:roadflow","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"roadflow","summary":"Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.","description":"Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.","publisher":{"name":"io.roadflow","url":null},"homepage":null,"repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://roadflow.io/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-03T18:30:03.658885Z","publishedAt":"2026-08-03T18:30:03.658885Z","registryName":"io.roadflow/roadflow"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-09T22:27:29.876Z","lastProbedAt":"2026-10-09T22:27:29.876Z","statusComputedAt":"2026-10-09T22:28:59.017Z","reliability30d":{"probes":110,"successRate":1,"p50Ms":46,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":110,"ok":110,"authBoundaryOk":0,"serviceOk":110,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T22:27:29.876Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:32:46.882Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T09:28:20.358Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":80,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T03:23:48.209Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":47,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T20:26:03.858Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T14:23:33.591Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":44,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T07:25:55.106Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":44,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T01:22:55.051Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":41,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T19:24:28.142Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":99,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T12:30:45.380Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":42,"error":null,"detail":{"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"toolCount":43,"toolsHash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","serverName":"roadflow","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared."},{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace."},{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup."},{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically."},{"name":"roadflow_apply_markup","description":"Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves."},{"name":"roadflow_open_shared","description":"Load a cloud map by edit or view id into this session. View links are read-only."},{"name":"roadflow_create_shared","description":"Persist the current workspace to the cloud (permanent share). Returns editUrl (play/edit/share further) and viewUrl (visual canvas, read-only). Prefer viewUrl w"},{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState)."},{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup."},{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date)."},{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only)."},{"name":"roadflow_get_version","description":"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":"roadflow_discard","description":"Clear the in-memory workspace for this MCP session (does not delete cloud maps)."},{"name":"artifacts_new","description":"Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared."},{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts."},{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON."},{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud."},{"name":"artifacts_open_shared","description":"Load a cloud Artifacts graph by edit or view id. View links are read-only."},{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/."},{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState)."},{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace."},{"name":"artifacts_get_version","description":"Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save)."},{"name":"artifacts_discard","description":"Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace)."},{"name":"model_new","description":"Create a Model project in MySQL (parameter register). Allocates a view id (mv-…) when omitted and returns viewUrl. Optional seed: title, calendar, streams, axes"},{"name":"model_open","description":"Bind this MCP session to an existing Model project (edit or view id). View ids are read-only."},{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id)."},{"name":"model_get","description":"Hydrate records from MySQL. include=summary (default counts), dictionaries, parameters, observations, edges, or all. Prefer model_upsert_observation to change o"},{"name":"model_discard","description":"Unbind the Model project from this MCP session. Does not delete MySQL rows."},{"name":"model_patch_project","description":"Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full."},{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner."},{"name":"model_get_parameter","description":"One catalog row plus its observations (facts)."},{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update."},{"name":"model_upsert_parameters","description":"Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction."},{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade)."},{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis."},{"name":"model_upsert_observation","description":"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 (valu"},{"name":"model_upsert_observations","description":"Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row "},{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId."},{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored."},{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected."},{"name":"model_delete_edge","description":"Delete a manual edge by edgeId."},{"name":"model_evaluate","description":"Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell c"},{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar."}],"package":null,"toolSurface":{"id":"ts_929xmu9496rm","endpointId":"ep_eqh2p7rnh9d6","hash":"b5c090f13f58ac2701d9dbcb01dca2b978084cf237c552075e0025b9b3875d22","toolCount":43,"serverName":"roadflow","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T10:26:41.017Z","lastSeenAt":"2026-10-09T22:27:29.893Z","observations":102,"toolNames":["roadflow_new","roadflow_status","roadflow_get","roadflow_apply_json","roadflow_apply_markup","roadflow_open_shared","roadflow_create_shared","roadflow_export_json","roadflow_export_markup","roadflow_export_csv","roadflow_list_versions","roadflow_get_version","roadflow_discard","artifacts_new","artifacts_status","artifacts_get","artifacts_apply_json","artifacts_open_shared","artifacts_create_shared","artifacts_export_json","artifacts_list_versions","artifacts_get_version","artifacts_discard","model_new","model_open","model_status","model_get","model_discard","model_patch_project","model_list_parameters","model_get_parameter","model_upsert_parameter","model_upsert_parameters","model_delete_parameter","model_list_observations","model_upsert_observation","model_upsert_observations","model_delete_observation","model_list_edges","model_upsert_edge","model_delete_edge","model_evaluate","model_list_dictionaries"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_eqh2p7rnh9d6","url":"https://roadflow.io/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-01T23:21:01.483Z","auth":{"observedAt":"2026-10-01T23:21:01.519Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-01T23:21:01.585Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"roadflow.io","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-09-11T23:15:54.000Z","validTo":"2026-12-10T23:15:53.000Z","daysToExpiry":61,"sanCount":2,"fingerprint256":"C3:76:6C:91:79:12:D4:58:A1:A7:5F:84:82:AD:FA:C2:F5:20:0A:DF:7A:D6:4B:98:31:53:71:79:3B:6E:35:E2"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.roadflow/roadflow","url":"https://registry.modelcontextprotocol.io/v0/servers/io.roadflow%2Froadflow","firstSeenAt":"2026-09-07T07:22:30.488Z","fetchedAt":"2026-10-08T17:21:41.736Z","normalizedAt":"2026-10-08T17:21:41.736Z"}]},"firstSeenAt":"2026-09-07T07:22:30.488Z","updatedAt":"2026-10-09T22:29:52.010Z"}