# io.roadflow/roadflow

> Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.

- name: io.roadflow/roadflow
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 77/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.roadflow%2Froadflow
- tools: https://api.protogrid.dev/v1/servers/io.roadflow%2Froadflow/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "roadflow": {
      "type": "http",
      "url": "https://roadflow.io/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-100% ~updated-78d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: model_discard (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); model_list_observations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); roadflow_apply_markup (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 4,092 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 43, about 4,092 tokens to load them all
- tool set hash: 3db9e1cb52d7cf76df97a9d1b77cd5a1
- badge: [![protogrid quality](https://protogrid.dev/badge/io.roadflow/roadflow.svg)](https://protogrid.dev/servers/io.roadflow/roadflow)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://roadflow.io/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (43)

- `artifacts_apply_json`: Replace (or merge) the Artifacts graph with normalized JSON. Shared edit mode auto-saves to the cloud.
- `artifacts_create_shared`: Persist the current Artifacts workspace to the cloud. Returns editUrl and viewUrl under /artifacts/.
- `artifacts_discard`: Clear the in-memory Artifacts workspace for this MCP session (does not delete cloud graphs or the Plans workspace).
- `artifacts_export_json`: Export the current Artifacts workspace as JSON (serializeState).
- `artifacts_get`: Return the current Artifacts workspace as JSON.
- `artifacts_get_version`: Load one shared Artifacts version by relative index (-1 newest). Optional load=true replaces the MCP workspace (does not save).
- `artifacts_list_versions`: List shared Artifacts version checkpoints (newest first). Requires a shared edit workspace.
- `artifacts_new`: Create an ephemeral in-memory Artifacts graph workspace. Optional seed JSON (serializeState shape: nodes + labels). No cloud id until artifacts_create_shared.
- `artifacts_open_shared`: Load a cloud Artifacts graph by edit or view id. View links are read-only.
- `artifacts_status`: Return mode, ids, /artifacts/?id= URLs, and node/label counts.
- `model_delete_edge`: Delete a manual edge by edgeId.
- `model_delete_observation`: Delete one fact by parameterId + scope/scopeKey + setId.
- `model_delete_parameter`: Delete a parameter and its observations (cascade).
- `model_discard`: Unbind the Model project from this MCP session. Does not delete MySQL rows.
- `model_evaluate`: 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.
- `model_get`: 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.
- `model_get_parameter`: One catalog row plus its observations (facts).
- `model_list_dictionaries`: Streams, axes (members), phases, parameter sets, chains, and calendar. Period members may be derived from calendar.
- `model_list_edges`: Manual lineage edges only (SOURCE/FLOW/INTERFACE). FORMULA edges are derived from formulas on load — not stored.
- `model_list_observations`: List facts. Filter by parameterId, setId, evidenceStatus. Sets are a column (Base/Downside/Upside), not an axis.
- `model_list_parameters`: List parameter catalog rows. Optional filters: streamId, role, layer, primaryOwner.
- `model_new`: 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=…
- `model_open`: Bind this MCP session to an existing Model project (edit or view id). View ids are read-only.
- `model_patch_project`: Update title, calendar, viewId, streams, axes, phases, parameterSets, and/or chains. Send If-Match via rev. Replaces each provided dictionary in full.
- `model_status`: Counts, rev, and /model/?id= URLs for the bound project (or pass id).
- `model_upsert_edge`: Create or patch a manual SOURCE, FLOW, or INTERFACE edge. FORMULA is rejected.
- `model_upsert_observation`: Create or replace one fact (parameterId + scope + setId). Example: Base P2 facility MW. Do not write CALC-computed values; only IN facts or CALC overrides (valueOverride). Pass rev for If-Match.
- `model_upsert_observations`: Create or replace many facts (cap 400). Same body shape as model_upsert_observation. Rejects CALC outputs unless valueOverride. continueOnError returns per-row errors; otherwise one transaction.
- `model_upsert_parameter`: Create or patch one parameter definition (not observations). Pass rev for If-Match on update.
- `model_upsert_parameters`: Create or patch many catalog rows (cap 400). Same body shape as model_upsert_parameter. continueOnError returns per-row errors; otherwise one transaction.
- `roadflow_apply_json`: Replace workspace state with normalized JSON (serializeState shape). In shared edit mode, saves to the cloud automatically.
- `roadflow_apply_markup`: Replace roads via friendly markup (same as the editor panel). Shared edit mode auto-saves.
- `roadflow_create_shared`: 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.
- `roadflow_discard`: Clear the in-memory workspace for this MCP session (does not delete cloud maps).
- `roadflow_export_csv`: Export steps as CSV (road, goal, lane, step, notes, type, status, position, date).
- `roadflow_export_json`: Export the current workspace as JSON (serializeState).
- `roadflow_export_markup`: Export the current workspace as friendly markup.
- `roadflow_get`: Return the current workspace as JSON and/or markup.
- `roadflow_get_version`: 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.
- `roadflow_list_versions`: List shared-map version checkpoints (newest first). Relative indexes: -1 = newest. Requires a shared edit workspace (not view-only).
- `roadflow_new`: Create an ephemeral in-memory roadflow workspace (default). Optional seed JSON and/or markup. No cloud id until create_shared.
- `roadflow_open_shared`: Load a cloud map by edit or view id into this session. View links are read-only.
- `roadflow_status`: Return mode, ids, URLs, and road/step counts for the current MCP session workspace.
