{"serverId":"mcp-registry/io.roadflow/roadflow","tools":[{"name":"artifacts_apply_json","fixed":{"name":"artifacts_apply_json","description":"Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"json":{"description":"Full or partial graph state, or JSON string","type":"string"},"merge":{"type":"boolean","description":"If true, merge nodes/labels arrays from payload onto current state"}},"additionalProperties":false},"title":"Apply Artifacts JSON"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: json. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":127,"tokensAfter":132},{"name":"artifacts_create_shared","fixed":{"name":"artifacts_create_shared","description":"Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/.","inputSchema":{"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},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create shared Artifacts graph"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"artifacts_export_json","fixed":{"name":"artifacts_export_json","description":"Export the current Artifacts workspace as JSON (serializeState).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Export Artifacts JSON"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"artifacts_get","fixed":{"name":"artifacts_get","description":"Return the current Artifacts workspace as JSON.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Artifacts graph"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":53,"tokensAfter":53},{"name":"artifacts_get_version","fixed":{"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).","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"Get Artifacts version snapshot"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"artifacts_list_versions","fixed":{"name":"artifacts_list_versions","description":"List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Artifacts version history"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":68,"tokensAfter":68},{"name":"artifacts_new","fixed":{"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"json":{"description":"Optional seed graph state","type":"string"}},"additionalProperties":false},"title":"New Artifacts workspace"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: json. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":105,"tokensAfter":110},{"name":"artifacts_status","fixed":{"name":"artifacts_status","description":"Return mode, ids, /artifacts/?id= URLs, and node/label counts.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Artifacts workspace status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":58,"tokensAfter":58},{"name":"model_delete_edge","fixed":{"name":"model_delete_edge","description":"Delete a manual edge by edgeId.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["edgeId"],"properties":{"id":{"type":"string"},"edgeId":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete edge"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"model_delete_observation","fixed":{"name":"model_delete_observation","description":"Delete one fact by parameterId + scope/scopeKey + setId.","inputSchema":{"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},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete observation"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":123,"tokensAfter":123},{"name":"model_delete_parameter","fixed":{"name":"model_delete_parameter","description":"Delete a parameter and its observations (cascade).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["parameterId"],"properties":{"id":{"type":"string"},"parameterId":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete parameter"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"model_get","fixed":{"name":"model_get","description":"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.","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"Get Model register"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":149,"tokensAfter":149},{"name":"model_get_parameter","fixed":{"name":"model_get_parameter","description":"One catalog row plus its observations (facts).","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"Get parameter"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"model_list_dictionaries","fixed":{"name":"model_list_dictionaries","description":"Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List dictionaries"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"model_list_edges","fixed":{"name":"model_list_edges","description":"Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored.","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"List edges"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"model_list_observations","fixed":{"name":"model_list_observations","description":"List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis.","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"List observations"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"model_list_parameters","fixed":{"name":"model_list_parameters","description":"List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner.","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"List parameters"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"model_new","fixed":{"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, phases, parameterSets, chains, parameters, observations, edges. Does not persist CALC outputs or FORMULA edges. Binds this MCP session. UI: /model/?id=…","inputSchema":{"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 }","type":"string"},"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},"title":"New Model register"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: calendar. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":282,"tokensAfter":287},{"name":"model_patch_project","fixed":{"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.","inputSchema":{"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":{"type":"string"},"parameterSets":{"type":"array"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Patch Model dictionaries"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: calendar. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":180},{"name":"model_status","fixed":{"name":"model_status","description":"Counts, rev, and /model/?id= URLs for the bound project (or pass id).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Model register status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":73,"tokensAfter":73},{"name":"model_upsert_edge","fixed":{"name":"model_upsert_edge","description":"Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected.","inputSchema":{"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},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Upsert edge"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"model_upsert_observation","fixed":{"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 (valueOverride). Pass rev for If-Match.","inputSchema":{"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":{"type":"string"},"source":{"description":"{ sourceId, locator, date, owner, allowedUse }","type":"string"},"scopeKey":{"type":"string"},"parameterId":{"type":"string"},"valueLocked":{"type":"boolean"},"valueOverride":{"type":"boolean"},"evidenceStatus":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Upsert observation"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: value, source. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":255,"tokensAfter":264},{"name":"model_upsert_observations","fixed":{"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 errors; otherwise one transaction.","inputSchema":{"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},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Bulk upsert observations"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"model_upsert_parameter","fixed":{"name":"model_upsert_parameter","description":"Create or patch one parameter definition (not observations). Pass rev for If-Match on update.","inputSchema":{"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, …","type":"string"},"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},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Upsert parameter catalog"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: attrs. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":304,"tokensAfter":309},{"name":"model_upsert_parameters","fixed":{"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.","inputSchema":{"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},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Bulk upsert parameters"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"roadflow_apply_json","fixed":{"name":"roadflow_apply_json","description":"Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"json":{"description":"Full or partial map state object, or JSON string","type":"string"},"merge":{"type":"boolean","description":"If true, deep-ish merge timeline/display and replace roads from payload"}},"additionalProperties":false},"title":"Apply JSON state"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: json. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":136,"tokensAfter":140},{"name":"roadflow_create_shared","fixed":{"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 when the user only needs to see the map.","inputSchema":{"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},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create shared roadflow"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":151,"tokensAfter":151},{"name":"roadflow_export_csv","fixed":{"name":"roadflow_export_csv","description":"Export steps as CSV (road, goal, lane, step, notes, type, status, position, date).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Export CSV"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":64,"tokensAfter":64},{"name":"roadflow_export_json","fixed":{"name":"roadflow_export_json","description":"Export the current workspace as JSON (serializeState).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Export JSON"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":57,"tokensAfter":57},{"name":"roadflow_export_markup","fixed":{"name":"roadflow_export_markup","description":"Export the current workspace as friendly markup.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Export markup"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"roadflow_get","fixed":{"name":"roadflow_get","description":"Return the current workspace as JSON and/or markup.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"format":{"enum":["json","markup","both"],"type":"string","description":"Default both"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get workspace snapshot"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":86},{"name":"roadflow_get_version","fixed":{"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.","inputSchema":{"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},"annotations":{"readOnlyHint":true},"title":"Get version snapshot"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"roadflow_list_versions","fixed":{"name":"roadflow_list_versions","description":"List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List version history"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":79,"tokensAfter":79},{"name":"roadflow_new","fixed":{"name":"roadflow_new","description":"Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"json":{"description":"Optional seed state (same shape as serializeState)","type":"string"},"markup":{"type":"string","description":"Optional friendly markup to apply after seed/empty"}},"additionalProperties":false},"title":"New roadflow workspace"},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: json. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":129,"tokensAfter":134},{"name":"roadflow_status","fixed":{"name":"roadflow_status","description":"Return mode, ids, URLs, and road/step counts for the current MCP session workspace.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"Workspace status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63}],"toolsChanged":35,"tokensSaved":0,"todo":[{"tool":"model_delete_edge","params":["id","edgeId"]},{"tool":"model_delete_observation","params":["id","scope","setId","scopeKey","parameterId"]},{"tool":"model_delete_parameter","params":["id","parameterId"]},{"tool":"model_evaluate","params":["id","setId","slice","periodId","rangeEnd","rangeStart","includeEmpty","parameterIds","includeInputs"]},{"tool":"model_get","params":["id"]},{"tool":"model_get_parameter","params":["id"]},{"tool":"model_list_dictionaries","params":["id"]},{"tool":"model_list_edges","params":["id","toId","fromId","edgeType"]},{"tool":"model_list_observations","params":["id","setId","parameterId","evidenceStatus"]},{"tool":"model_list_parameters","params":["id","role","layer","streamId","primaryOwner"]},{"tool":"model_new","params":["axes","title","chains","phases","viewId","streams","parameterSets"]},{"tool":"model_patch_project","params":["id","axes","title","chains","phases","viewId","streams","calendar","parameterSets"]},{"tool":"model_status","params":["id"]},{"tool":"model_upsert_edge","params":["id","rev","toId","label","owner","edgeId","fromId","edgeType","condition"]},{"tool":"model_upsert_observation","params":["id","rev","value","scopeKey","parameterId","valueLocked","valueOverride","evidenceStatus"]},{"tool":"model_upsert_observations","params":["id","continueOnError"]},{"tool":"model_upsert_parameter","params":["id","rev","name","role","unit","layer","comment","formula","domainId","priority","streamId","scopeAxes","valueType","assignedWs","definition","canonicalId","parameterId","primaryOwner","economicClass","adjustmentKind","qtyParameterId","rateComponents","rateParameterId"]},{"tool":"model_upsert_parameters","params":["id","continueOnError"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}