Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.
Full or partial graph state, or JSON string
If true, merge nodes/labels arrays from payload onto current state
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.
| Argument | Type | Description |
|---|---|---|
| json | any | Full or partial graph state, or JSON string |
| merge | boolean | If true, merge nodes/labels arrays from payload onto current state |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Full or partial graph state, or JSON string"
},
"merge": {
"type": "boolean",
"description": "If true, merge nodes/labels arrays from payload onto current state"
}
},
"additionalProperties": false
}Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/.
| Argument | Type | Description |
|---|---|---|
| editId | string | Optional edit id (default: random af-…) |
| viewId | string | Optional view id (default: random af-…) |
{
"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
}Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Export the current Artifacts workspace as JSON (serializeState).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Return the current Artifacts workspace as JSON.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save).
| Argument | Type | Description |
|---|---|---|
| rel* | integer | Relative version index: -1 = newest checkpoint |
| load | boolean | If true, replace the current MCP Artifacts workspace with this version |
{
"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
}List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared.
| Argument | Type | Description |
|---|---|---|
| json | any | Optional seed graph state |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Optional seed graph state"
}
},
"additionalProperties": false
}Load a cloud Artifacts graph by edit or view id. View links are read-only.
| Argument | Type | Description |
|---|---|---|
| id* | string | editId or viewId from /artifacts/?id=… |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "editId or viewId from /artifacts/?id=…"
}
},
"additionalProperties": false
}Return mode, ids, /artifacts/?id= URLs, and node/label counts.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Delete a manual edge by edgeId.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| edgeId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"edgeId"
],
"properties": {
"id": {
"type": "string"
},
"edgeId": {
"type": "string"
}
},
"additionalProperties": false
}Delete one fact by parameterId + scope/scopeKey + setId.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| scope | object | |
| setId | string | |
| scopeKey | string | |
| parameterId* | string |
{
"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
}Delete a parameter and its observations (cascade).
| Argument | Type | Description |
|---|---|---|
| id | string | |
| parameterId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"parameterId": {
"type": "string"
}
},
"additionalProperties": false
}Unbind the Model project from this MCP session. Does not delete MySQL rows.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Read-only computeModel. Does not write MySQL. View ids allowed. Default period is calendar start (not today). periodId and range* are mutually exclusive. Cell cap 2000.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| setId | string | |
| slice | object | |
| periodId | string | |
| rangeEnd | string | |
| rangeStart | string | |
| includeEmpty | boolean | |
| parameterIds | array | |
| includeInputs | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"setId": {
"type": "string"
},
"slice": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"periodId": {
"type": "string"
},
"rangeEnd": {
"type": "string"
},
"rangeStart": {
"type": "string"
},
"includeEmpty": {
"type": "boolean"
},
"parameterIds": {
"type": "array",
"items": {
"type": "string"
}
},
"includeInputs": {
"type": "boolean"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| include | string | Default summary |
{
"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
}One catalog row plus its observations (facts).
| Argument | Type | Description |
|---|---|---|
| id | string | |
| parameterId* | string | Stable id, e.g. PRJ.FACILITY_MW |
{
"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
}Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar.
| Argument | Type | Description |
|---|---|---|
| id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": false
}Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| toId | string | |
| fromId | string | |
| edgeType | string |
{
"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
}List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| setId | string | |
| parameterId | string | |
| evidenceStatus | string |
{
"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
}List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| role | string | |
| layer | string | |
| streamId | string | |
| primaryOwner | string |
{
"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
}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=…
| Argument | Type | Description |
|---|---|---|
| axes | array | |
| edges | array | Manual SOURCE/FLOW/INTERFACE only |
| title | string | |
| chains | array | |
| phases | array | |
| viewId | string | |
| streams | array | |
| calendar | any | { granularity, start, end } |
| parameters | array | Catalog rows (parameterId, streamId, role, formula, attrs, …) |
| observations | array | Facts: parameterId, scope, setId, value, evidence, source |
Bind this MCP session to an existing Model project (edit or view id). View ids are read-only.
| Argument | Type | Description |
|---|---|---|
| id* | string | Project edit id (mp-…) or view id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Project edit id (mp-…) or view id"
}
},
"additionalProperties": false
}Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| rev | integer | Expected project rev (If-Match) |
| axes | array | |
| title | string | |
| chains | array | |
| phases | array | |
| viewId | string | null | |
| streams | array | |
| calendar | any | |
| parameterSets | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer",
"description": "Expected project rev (If-Match)"
},
"axes": {
"type": "array"
},
"title": {
"type": "string"
},
"chains": {
"type": "array"
},
"phases": {
"type": "array"
},
"viewId": {
"type": [
"string",
"null"
]
},
"streams": {
"type": "array"
},
"calendar": {},
"parameterSets": {
"type": "array"
}
},
"additionalProperties": false
}Counts, rev, and /model/?id= URLs for the bound project (or pass id).
| Argument | Type | Description |
|---|---|---|
| id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": false
}Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| rev | integer | |
| toId | string | |
| label | string | |
| owner | string | |
| edgeId* | string | |
| fromId | string | |
| edgeType | string | |
| condition | string |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| rev | integer | |
| scope | object | axisId → memberId, e.g. { "Phase_ID": "P2" } |
| setId | string | Base (default), Downside, Upside, or custom |
| value | any | |
| source | any | { sourceId, locator, date, owner, allowedUse } |
| scopeKey | string | |
| parameterId* | string | |
| valueLocked | boolean | |
| valueOverride | boolean | |
| evidenceStatus | string |
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.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| observations* | array | Facts (parameterId, scope, setId, value, …) |
| continueOnError | boolean |
{
"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
}Create or patch one parameter definition (not observations). Pass rev for If-Match on update.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| rev | integer | |
| name | string | |
| role | string | |
| unit | string | |
| attrs | any | name, definition, unit, scopeAxes, SBC fields, comments, … |
| layer | string | |
| comment | string | |
| formula | string | |
| domainId | string | |
| priority | string | |
| streamId | string | |
Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| parameters* | array | Catalog rows (parameterId + same fields as model_upsert_parameter) |
| continueOnError | boolean |
{
"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
}Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically.
| Argument | Type | Description |
|---|---|---|
| json | any | Full or partial map state object, or JSON string |
| merge | boolean | If true, deep-ish merge timeline/display and replace roads from payload |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Full or partial map state object, or JSON string"
},
"merge": {
"type": "boolean",
"description": "If true, deep-ish merge timeline/display and replace roads from payload"
}
},
"additionalProperties": false
}Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves.
| Argument | Type | Description |
|---|---|---|
| markup* | string | Friendly roadflow markup text |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"markup"
],
"properties": {
"markup": {
"type": "string",
"description": "Friendly roadflow markup text"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| editId | string | Optional edit id (default: random rm-…) |
| viewId | string | Optional view id (default: random rm-…) |
{
"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
}Clear the in-memory workspace for this MCP session (does not delete cloud maps).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Export steps as CSV (road, goal, lane, step, notes, type, status, position, date).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Export the current workspace as JSON (serializeState).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Export the current workspace as friendly markup.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Return the current workspace as JSON and/or markup.
| Argument | Type | Description |
|---|---|---|
| format | string | Default both |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"format": {
"enum": [
"json",
"markup",
"both"
],
"type": "string",
"description": "Default both"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| rel* | integer | Relative version index: -1 = newest checkpoint, -2 = older, … |
| load | boolean | If true, also replace the current MCP workspace with this version (does not save to cloud). |
{
"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
}List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared.
| Argument | Type | Description |
|---|---|---|
| json | any | Optional seed state (same shape as serializeState) |
| markup | string | Optional friendly markup to apply after seed/empty |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"json": {
"description": "Optional seed state (same shape as serializeState)"
},
"markup": {
"type": "string",
"description": "Optional friendly markup to apply after seed/empty"
}
},
"additionalProperties": false
}Load a cloud map by edit or view id into this session. View links are read-only.
| Argument | Type | Description |
|---|---|---|
| id* | string | editId or viewId from a share URL (?id=…) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "editId or viewId from a share URL (?id=…)"
}
},
"additionalProperties": false
}Return mode, ids, URLs, and road/step counts for the current MCP session workspace.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}| parameterSets |
| array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"axes": {
"type": "array"
},
"edges": {
"type": "array",
"description": "Manual SOURCE/FLOW/INTERFACE only"
},
"title": {
"type": "string"
},
"chains": {
"type": "array"
},
"phases": {
"type": "array"
},
"viewId": {
"type": "string"
},
"streams": {
"type": "array"
},
"calendar": {
"description": "{ granularity, start, end }"
},
"parameters": {
"type": "array",
"description": "Catalog rows (parameterId, streamId, role, formula, attrs, …)"
},
"observations": {
"type": "array",
"description": "Facts: parameterId, scope, setId, value, evidence, source"
},
"parameterSets": {
"type": "array"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer"
},
"scope": {
"type": "object",
"description": "axisId → memberId, e.g. { \"Phase_ID\": \"P2\" }",
"additionalProperties": {
"type": "string"
}
},
"setId": {
"type": "string",
"description": "Base (default), Downside, Upside, or custom"
},
"value": {},
"source": {
"description": "{ sourceId, locator, date, owner, allowedUse }"
},
"scopeKey": {
"type": "string"
},
"parameterId": {
"type": "string"
},
"valueLocked": {
"type": "boolean"
},
"valueOverride": {
"type": "boolean"
},
"evidenceStatus": {
"type": "string"
}
},
"additionalProperties": false
}| scopeAxes |
| array |
| valueType | string |
| assignedWs | string |
| definition | string |
| canonicalId | string |
| parameterId* | string |
| primaryOwner | string |
| economicClass | string |
| adjustmentKind | string |
| qtyParameterId | string |
| rateComponents | array |
| rateParameterId | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"parameterId"
],
"properties": {
"id": {
"type": "string"
},
"rev": {
"type": "integer"
},
"name": {
"type": "string"
},
"role": {
"type": "string"
},
"unit": {
"type": "string"
},
"attrs": {
"description": "name, definition, unit, scopeAxes, SBC fields, comments, …"
},
"layer": {
"type": "string"
},
"comment": {
"type": "string"
},
"formula": {
"type": "string"
},
"domainId": {
"type": "string"
},
"priority": {
"type": "string"
},
"streamId": {
"type": "string"
},
"scopeAxes": {
"type": "array",
"items": {
"type": "string"
}
},
"valueType": {
"type": "string"
},
"assignedWs": {
"type": "string"
},
"definition": {
"type": "string"
},
"canonicalId": {
"type": "string"
},
"parameterId": {
"type": "string"
},
"primaryOwner": {
"type": "string"
},
"economicClass": {
"type": "string"
},
"adjustmentKind": {
"type": "string"
},
"qtyParameterId": {
"type": "string"
},
"rateComponents": {
"type": "array"
},
"rateParameterId": {
"type": "string"
}
},
"additionalProperties": false
}