Skip to main content
Glama
chrishargreaves

SOLVE-IT Workflow MCP Server

workflow_update

Add, remove, or edit nodes, edges, and mitigation selections in an existing SOLVE-IT workflow, then save the updated JSON file or share link.

Instructions

Change an existing SOLVE-IT workflow and write the result.

The source is a workflow .json file in an allowed directory (see workflow_status), or a Workflow Builder share link (https://workflows.hargs.co.uk/#~...). If the user has opened or edited the workflow in the builder since it was written, ask them for a fresh export or a share link from the builder's Share button and use that as source, so their edits are not lost.

Operations: add nodes and edges, remove nodes or edges by ID (a removed node's edges, selections, evaluations and provenance go with it, and are reported), set data fields on a node, and set mitigation selections. Existing nodes keep their IDs, positions and data except for fields you set; everything else in the file is kept. New nodes are placed after their predecessors. Nodes are given with your own keys; edges, selections and zone members refer to those keys, and the result maps each key to the node ID the server assigned. A sub-technique ID can be given directly as a technique: it is stored as its parent technique with the sub-technique as a method. Zones take the keys of their member nodes and are drawn around them. Use decision or fork nodes for branches out of a step. Use workflow_find_techniques to look up DFT IDs. New edges, selections and set_data may also refer to existing node IDs; call workflow_inspect first to get node IDs when the workflow came from the builder or an earlier session. Edges cannot connect notes or zones: the builder draws no connection points on them.

Where it is written: a source file inside the output directory is updated in place; a source elsewhere, or a link, gives a new file in the output directory (named by 'filename', else the source file's name, else the title). The result gives the path written, which later updates should use.

If a link is returned, give it to the user exactly as returned, in full: changing even one character breaks it. The file path, or open_in_browser=true, is the dependable way to open the workflow; offer those, especially when there is no link (large workflows exceed the 8000-character link limit).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceYesPath to a workflow .json file in an allowed directory, or a Workflow Builder share link https://workflows.hargs.co.uk/#~...
filenameNoFile name in the output directory for the result. Leave out to update a file in the output directory in place.
relayoutNoLay the whole workflow out again instead of only placing new nodes. Use it when adding a zone round existing nodes that are not next to each other, or after large changes. It moves every node, so arrangements made by hand in the builder are lost. Existing zones keep the nodes that lie inside them.
set_dataNoData fields to set on existing or added nodes.
add_edgesNoConnections to add, between new node keys or existing node IDs.
add_nodesNoNodes to add, each with your own key.
directionNoDirection for placing new nodes. Leave out to keep the workflow's own direction.
overwriteNoReplace an existing file of the chosen name even if this server did not write it. Otherwise a numbered name is used.
remove_idsNoIDs of existing nodes or edges to remove.
selectionsNoMitigation selections to set (Y, N or NA) per step and weakness.
open_in_browserNoAlso open the workflow in the default browser on this machine.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so richly: it discloses the removal cascade (a removed node's edges, selections, evaluations and provenance go with it and are reported), that existing nodes retain IDs/positions/data, that relayout destroys hand-made arrangements, and the exact write semantics (in-place vs new file, overwrite/numbered naming, the 8000-character link limit). This is well beyond what any annotation would provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and organized into clear paragraphs (source, operations, write target, link warning). It is long, but for an 11-parameter mutation tool with no annotations nearly every sentence conveys actionable behavior, so it avoids waste while remaining dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still covers the parts an agent needs beyond it: what the result path is used for in later updates and how to hand a returned link to the user. Given the tool's complexity and the absence of annotations, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning the schema does not: the key-to-server-assigned-ID mapping contract, that the source key/file/link choice changes where output lands, the 'filename' naming fallback chain, and relayout's effect on zones. It does not add syntax detail to individual fields, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource up front ('Change an existing SOLVE-IT workflow and write the result'), clearly distinguishing it from workflow_create (new) and the read-oriented siblings. The agent can identify the operation's scope (mutate + persist) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to alternatives and prerequisites: use workflow_status for allowed directories, workflow_find_techniques for DFT IDs, and workflow_inspect first when the workflow came from the builder or a prior session to obtain node IDs. It also tells the agent when to ask the user for a fresh export or share link so unsaved edits are not lost.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.