Skip to main content
Glama
Particle-Academy

fancy-flow-mcp-js

@particle-academy/fancy-flow-mcp-js

MCP server that lets an agent author fancy-flow workflows headlessly on a TypeScript host — the Node twin of fancy-flow-mcp (Laravel).

Same 15 tools, same names, same arguments. An agent that learned to build graphs against the PHP server drives this one without relearning anything — and that claim is asserted by a test that reads the PHP source, not maintained by hand.

npx @particle-academy/fancy-flow-mcp-js

The split it is built around

We own whether a graph is well-formed; the host owns whether it is allowed to run.

Every issue crosses the wire tagged with which of those refused it:

{ "source": "schema", "level": "error",   "message": "message: Message is required", "nodeId": "log-1" }
{ "source": "host",   "level": "error",   "message": "This host cannot resume a paused run.", "nodeId": "ask-1" }

Those have different remedies — one is fixed by editing the graph, the other by granting a capability or picking another kind. Collapsing them costs an author real time chasing the wrong fix, so they are never merged.

Related MCP server: Orchestration MCP

Two entry points

Import

What it costs

Use it when

@particle-academy/fancy-flow-mcp-js/authoring

nothing beyond fancy-flow

You have your own transport, or none

@particle-academy/fancy-flow-mcp-js

+ @modelcontextprotocol/sdk

You want an MCP server

The core was written first and deliberately depends on nothing, so a host that only wants to build and validate graphs never pays for a transport it will not use.

Use it from a host

import { createFlowServer, MemoryDraftStore } from "@particle-academy/fancy-flow-mcp-js";
import { registerBuiltinKinds } from "@particle-academy/fancy-flow/registry";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

registerBuiltinKinds(); // the registry does not populate itself in a bare process

const server = createFlowServer({
  store: new MemoryDraftStore(),

  // Your answer to "may I run this kind here?". Return a string to REFUSE —
  // and name the missing capability, because a refusal an author can act on is
  // worth more than a correct one they cannot.
  admits: (kind) =>
    kind.name.includes("terminal") ? "This host has no terminal sessions." : null,
});

await server.connect(new StdioServerTransport());

MemoryDraftStore is a convenience. Implement DraftStore (list / get / save / remove, sync or async) against your own storage and drafts survive a restart — this package never persists anything itself.

The tools

create_workflow list_workflows get_workflow delete_workflow

Drafts

add_node remove_node configure_node

Nodes

connect_nodes remove_edge

Edges

list_node_kinds describe_node_kind

The vocabulary

validate_workflow export_workflow import_workflow

Checking and portability

run_workflow

A smoke test of wiring — see below

list_node_kinds reads the live registry, so kinds a host registered itself and kinds vendored from the marketplace are included. It is not a fixed list.

configure_node writes a config that fails validation and reports warnings rather than refusing. A half-configured node is a normal intermediate state when an agent builds a graph one step at a time; validate_workflow is the place that says "not finished".

run_workflow — read this before relying on it

It is a smoke test of wiring and routing, not a production run.

It takes no executor argument, and the executor registry is bound as a literal at the call site — the same shape the PHP twin uses. An agent-reachable run is structurally incapable of being pointed at your real infrastructure. Unrepresentable beats forbidden: a policy can be relaxed by a later edit; an absent parameter cannot be passed.

Two honest limits:

  1. 9 of 31 builtin kinds have a TypeScript executor. The PHP twin's Builtin::executors() covers every kind; the TS runtime has no equivalent yet. The other 22 return ok: false with "No executor registered" — a true answer about this runtime, delivered as a result rather than an error. A test pins the count so the day it improves, this paragraph is forced to change.

  2. Kind-level executors still apply. A host process that has called registerTerminalHost or registerLlmClient makes those reachable from here. That is your doing, not this package's, and it is said plainly rather than papered over.

Protocol revision

Speaks 2025-11-25, negotiating back to 2024-11-05 — the same family laravel/mcp speaks, which is what the PHP twin is built on, and what Claude Code and Codex speak.

It does not speak 2026-07-28, the revision that removed initialize and made the protocol stateless. Neither does the PHP twin. If you need to be reached by a 2026-07-28-only client, that gap is open and belongs to both twins together — a Node server that jumped ahead alone would stop being a twin.

Licence

MIT

Available Tools

15 tools
add_nodeAdd NodeA

Add a node of a given kind to a workflow. The kind is checked against the live registry (call list_node_kinds first — a host may have registered its own). Omitting config applies the kind's schema defaults. Pass parent_id to place the node inside a lane. Returns the created node.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesNode kind, e.g. "manual_trigger", "llm_call", "branch".
configNoOptional config. See describe_node_kind for the fields.
node_idNoOptional explicit node id. Omit to auto-generate.
parent_idNoOptional lane node id — puts this node inside that lane.
workflow_idYesThe workflow id from create_workflow.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the kind is checked against a live registry, that omitted config applies the kind's schema defaults, that parent_id places the node inside a lane, and that the created node is returned. This exceeds a bare mutation description and covers the relevant runtime behavior.

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

Conciseness5/5

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

Three succinct, well-ordered sentences; the core action leads, followed by the registry prerequisite and then the return behavior. No filler words, each sentence provides distinct value.

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

Completeness4/5

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

For a 5-parameter mutation tool with no output schema, the description is complete enough: it explains special cases (defaults, lane placement), prerequisites (registry check), and the return value. Residual gaps like error handling or uniqueness of node_id are minor for a typical add-node operation.

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?

Although the schema already documents all parameters (100% coverage), the description adds meaning beyond the schema: kind is resolved against the live registry, config omission triggers defaults, and parent_id controls lane placement. This supplements rather than merely repeats the schema.

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?

The description states a specific verb and resource ('add a node of a given kind to a workflow') and clarifies that the kind is validated. This distinguishes it from sibling tools such as remove_node, configure_node, and connect_nodes, making the tool's purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear operational context: call list_node_kinds first to check the live registry, omit config to apply defaults, and use parent_id for lane placement. It doesn't explicitly exclude alternative tools, but the prerequisite and placement guidance make the appropriate use case clear.

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

configure_nodeConfigure NodeA

Merge config into a node, keeping the kind's other defaults. A config that does not satisfy the kind's schema is WRITTEN ANYWAY and reported as warnings — a half-configured node is a normal intermediate state when building a graph one step at a time, and refusing the write makes it impossible to get there. validate_workflow is where 'not finished' is said.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesFields to merge into the node's config.
node_idYesThe node to configure.
workflow_idYesThe workflow id.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries full behavioral responsibility. It discloses two important behaviors: config that does not satisfy the schema will still be written (with warnings), and the tool preserves other defaults. It explains why this behavior is intentional (a normal intermediate state), which prevents an agent from being surprised and makes the tool's return semantics predictable.

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

Conciseness5/5

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

The description is three sentences with no padding. The first sentence states the primary purpose, the second adds essential behavioral nuance, and the third names the related validation tool. Each sentence contributes useful information, and the most important caveat is front-and-center.

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

Completeness4/5

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

Given that there is no output schema and no annotations, the description does a good job of covering the core context: it explains the merge operation, the leniency toward invalid configs, and the relationship to validate_workflow. The only missing details are concrete output specifics (e.g., how warnings are returned) and error cases like missing node/workflow IDs, but these are not essential for the tool's primary use. A 4 reflects this minor incompleteness.

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?

The schema already gives all three parameters descriptions, so the baseline is 3. The description adds meaning to the 'config' parameter by explaining the merge behavior (config is merged into the node and other defaults are kept), which goes beyond the schema's generic statement 'Fields to merge'. This is just enough extra semantic value to merit a 4.

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?

The description starts with 'Merge config into a node', a specific verb and resource, and adds 'keeping the kind's other defaults' to further clarify the operation. It also explicitly refers to the sibling tool validate_workflow, making the tool's purpose distinct from related workflow tools. An agent can immediately understand what this tool does without reading 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?

The description gives explicit context for when to use this tool: it's appropriate when building a graph step by step, accepting a half-configured node as an intermediate state. It also names validate_workflow as the place where 'not finished' is said, effectively telling the user when not to rely on this tool for validation. This is a clear when-to-use/alternative scenario.

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

connect_nodesConnect NodesA

Draw an edge from one node's output port to another's input port. Omit the port names to use each kind's defaults. Both nodes must already exist — connecting to a node that is not there is an error rather than a promise to create it.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesSource node id.
targetYesTarget node id.
source_portNoOptional output port on the source, e.g. "true" on a branch.
target_portNoOptional input port on the target.
workflow_idYesThe workflow id.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the error behavior for missing nodes and the defaulting behavior for omitted ports, going beyond the schema. It does not mention edge duplication or cycle validation, but covers the most important behavioral traits.

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

Conciseness5/5

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

The description is compact, two sentences, and front-loads the core action before explaining defaults and error semantics. Every sentence contributes useful information.

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

Completeness4/5

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

For a graph-edge tool, the description gives enough context: the action, default behavior, and error condition. It does not mention workflow existence or validation rules, but within the sibling-tool context and given the schema, it is sufficiently complete.

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?

The schema already describes all parameters, so baseline is 3. The description adds meaning by explaining that omitting source_port and target_port uses each kind's defaults, which is not stated in the schema.

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?

The description clearly states the action: 'Draw an edge from one node's output port to another's input port.' This distinguishes the tool from siblings like add_node, remove_node, and remove_edge.

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?

It explicitly explains how to use default ports by omitting port names and warns that connecting to a nonexistent node is an error, not a promise to create it. This gives clear when-to-use and when-not-to-use guidance.

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

create_workflowCreate WorkflowA

Start a new, empty workflow draft and return its workflow_id. Every other tool takes that id. Nothing is persisted beyond the host's store, and creating a workflow never runs anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name for the workflow, e.g. "Nightly digest".
workflow_idNoOptional explicit id. Omit to have one minted.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it handles this well. It explicitly states that no workflow ever runs anything and that nothing is persisted beyond the host's store, giving an agent useful side-effect expectations.

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

Conciseness5/5

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

The description is short and front-loaded: first sentence establishes the core purpose and return value; second sentence adds two valuable behavioral constraints. Every sentence earns its place.

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?

For a simple two-parameter create tool with no output schema, the description is complete. It explains the returned workflow_id, the created object's initial state, and the absence of side effects.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters are already described in the schema. The description adds some useful context about the returned workflow_id but does not materially extend the meaning of either name or optional workflow_id.

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?

The description clearly states the action: "Start a new, empty workflow draft" and names the return value, workflow_id. It also distinguishes itself from sibling tools by signaling that this is the entry point, since "every other tool takes that id."

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

Usage Guidelines4/5

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

The description communicates when to use it: first, to obtain the workflow_id that other tools consume. It does not explicitly contrast it with import_workflow or other creation-like alternatives, so it misses the explicit when-not guidance needed for a 5.

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

delete_workflowDelete WorkflowA

Remove a workflow draft from this host's store. Irreversible on a store that does not version, and it deletes only the draft — nothing that was already exported or run.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe workflow id to delete.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It clearly discloses irreversible deletion on non-versioned stores and that exports/runs are not affected. It does not discuss failure cases (e.g., workflow not found) or dependencies, but for a one-parameter delete tool these are the key behavioral traits an agent needs to weigh before calling.

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

Conciseness5/5

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

Two sentences with zero filler. The first states the action and scope; the second covers interation, exclusion, and a caveat. Everything earns its place and the critical 'draft' scoping is front-loaded.

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

Completeness4/5

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

For a one-parameter, no-output-schema delete tool, the description covers the action, persistence characteristics, and what it does not affect. It could mention behaviors like non-existent IDs or whether dependent items (nodes, edges) are disassociated, but those are not critical for a correctly formed call.

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

Parameters3/5

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

The schema already fully documents the only parameter (workflow_id) at 100% coverage, describing it as 'The workflow id to delete.' The description adds no additional semantic detail or format requirements beyond what the schema provides, so it meets the baseline 3 without adding value.

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?

The description opens with a specific verb and resource ('Remove a workflow draft...') and immediately differentiates the scope from exported or run artifacts. An agent can clearly tell this is the only tool for deleting a workflow draft among siblings, which include no other delete tool.

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

Usage Guidelines3/5

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

The description provides contextual guidance by stating irreversibility and that it only affects the draft, not exported or run items. However, it does not explicitly say when to prefer this over alternate approaches or what excludes its use beyond that scoping. The 'only the draft' phrase implies limitations but leaves implicit when a user might need a different tool.

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

describe_node_kindDescribe Node KindA

One kind in full — its config schema, its default config, and its input and output ports. Call this before configure_node rather than guessing field names; the fields are deliberately not on list_node_kinds, which would turn a vocabulary query into a payload nobody reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesThe kind name, e.g. "llm_call" or the fully-qualified form.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are present, so the description carries the behavioral burden. It signals that this is a read-like lookup by saying what data it returns and by positioning it as a pre-configuration step, but it does not explicitly state side-effect-freedom or error behavior. For a simple describe operation, this is a minor gap.

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

Conciseness5/5

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

Two sentences deliver the full value: the first front-loads the exact purpose and return content, the second provides the call-order rationale and names the alternative that should not be used. There is no wasted wording.

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?

For a single-argument, read-oriented, no-output-schema tool, the description is complete. It explains what will be returned, when to call it, why it is needed, and how it relates to list_node_kinds and configure_node. An agent has enough information to select and call it correctly.

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

Parameters3/5

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

Only one parameter exists, kind, and the input schema already documents it with an example. The description does not add much parameter-level meaning beyond aligning kind with the concept of a node type, and with 100% schema coverage, the baseline score of 3 is appropriate.

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?

The description names a concrete operation and enumerates the content it returns: config schema, default config, and input/output ports. It separates the tool from list_node_kinds by explaining that fields are deliberately omitted from that sibling, so an agent can distinguish it without needing to inspect schemas.

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?

The description gives explicit call-order guidance: call this before configure_node rather than guessing field names. It also explains why list_node_kinds is not a substitute for looking up field names, which is clear, actionable guidance on when and why to use this tool.

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

export_workflowExport WorkflowA

Emit the portable WorkflowSchema document — the same JSON the TypeScript, PHP and Python runtimes all read. This is what you hand to another runtime, commit to a repo, or pass to import_workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe workflow id.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool emits a document, implying a read-only operation, but it does not explicitly mention side effects, error conditions, or permissions. This is adequate but not thorough.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose. Every sentence adds value, with no redundancy or fluff.

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

Completeness4/5

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

Given the simple schema, the description provides sufficient context about when and why to use the tool, including its relationship to import_workflow and portability. It does not detail the output format, but that is implied by 'portable WorkflowSchema document'.

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

Parameters3/5

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

The schema provides a description for the single parameter (workflow_id), so coverage is 100%. The tool description adds no further explanation, so the baseline score of 3 applies.

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?

The description clearly states the tool emits the portable WorkflowSchema document, distinguishing it from siblings by emphasizing its portability and direct connection to import_workflow. It unambiguously identifies the action (emit) and the resource (workflow schema).

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

Usage Guidelines4/5

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

The description gives explicit usage scenarios: handing to another runtime, committing to a repo, or passing to import_workflow. It implies when to use it, though it does not explicitly contrast with get_workflow or other related tools.

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

get_workflowGet WorkflowA

Return one workflow's full graph — every node with its kind, config and parentId, and every edge. This is the authoring view; use export_workflow for the portable WorkflowSchema document.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe workflow id from create_workflow.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of disclosing behavior. It clearly states the tool returns the entire graph, listing every node's fields and every edge, which makes the read-only nature of the operation implicit. It does not explicitly say 'no side effects' or address error cases (e.g., nonexistent workflow_id), but its email definition is largely transparent and adequate for the task.

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

Conciseness5/5

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

The description is compact and front-loaded: it states the core action and resource in the first sentence, then offers a useful contrast with export_workflow in the second. There is no filler, and each clause contributes a distinct fact.

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?

For a one-parameter retrieval tool with no annotations and no output schema, the description fully covers what an agent needs: the exact return contents (nodes with all specified fields and edges) and a clear conceptual category (authoring view). Nothing essential is missing for safe and correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, with workflow_id documented as 'The workflow id from create_workflow.' The description itself adds no new parameter-specific information, meaning it does not compensate beyond the schema. Since the schema already covers the single parameter, the baseline 3 is appropriate.

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?

The description opens with the specific verb 'Return' and a precise resource ('one workflow's full graph'), then adds concrete detail ('every node with its kind, config and parentId, and every edge'). It goes further by naming the sibling tool it is not ('use export_workflow for the portable WorkflowSchema document'), making it instantly distinguishable from other workflow tools without needing to inspect their schemas.

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?

The description provides an explicit alternative: 'This is the authoring view; use export_workflow for the portable WorkflowSchema document.' This tells an agent exactly when to call get_workflow (need the editable graph representation) versus when to use a sibling, leaving no ambiguity about the decision boundary.

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

import_workflowImport WorkflowA

Read a WorkflowSchema document into a NEW draft and return its workflow_id, plus any issues found. Import is lenient on purpose: a document referencing a kind this host has not registered still imports, with the problem reported — refusing would lose the other forty nodes to fix one.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name for the imported draft.
workflowYesA WorkflowSchema document, as export_workflow emits.
workflow_idNoOptional explicit id for the new draft.

TDQS

A3.6/5.0
Behavior4/5

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

Since there are no annotations, the description carries the full behavioral burden and it carries it well: it discloses that import creates a new draft, that it returns issues alongside the id, and that it is deliberately lenient with a rationale ('refusing would lose the other forty nodes'). The main shortcoming is not detailing what the 'issues' look like or whether anything is partially written when problems occur.

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?

Two sentences, front-loaded purpose first and return value second. The leniency rationale ('refusing would lose the other forty nodes to fix one') is a slightly vivid metaphor but earns its place by explaining a surprising behavioral relaxation that would otherwise seem like a bug. No wasted structure.

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

Completeness3/5

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

For a tool with one required nested object and no output schema, the description covers the operation, the key behavior (lenient import), and the return essentials (workflow_id plus issues). However, it does not concretize the 'issues' payload or explain what happens if a conflicting workflow_id is supplied. It is adequate, not exhaustive, for a creation-related tool with three parameters and no annotations.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents name, workflow, and workflow_id well. The description adds only the conceptual framing that the payload is a WorkflowSchema document imported into a new draft, which reflects the workflow parameter's meaning. This meets the baseline 3 but contributes no extra param semantics beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Read a WorkflowSchema document into a NEW draft' and gives the return value ('workflow_id, plus any issues found'). This clearly distinguishes import from list/get/delete, but it does not explicitly name the sibling it is not (e.g., create_workflow or export_workflow), so the differentiation is implied rather than explicit.

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

Usage Guidelines3/5

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

The description explains when leniency applies ('a document referencing a kind this host has not registered still imports') and implies the tool is the import counterpart to export_workflow (whose schema is referenced in the parameter description). But it never explicitly says 'use this when...' or points to an alternative like validate_workflow for stricter checking, leaving the usage boundary to inference.

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

list_node_kindsList Node KindsA

Every node kind this host has registered, read from the LIVE registry rather than a fixed list — so kinds the host added itself, and kinds vendored in from the marketplace, are included. Each says whether this host ADMITS it, and a refusal names the missing capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional filter, e.g. "logic", "ai", "io", "trigger".

TDQS

A3.9/5.0
Behavior4/5

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

Although no annotations are present, the description explicitly says 'read from the LIVE registry', indicating a read-only operation. It also discloses that each entry indicates whether the host 'ADMITS' it and that refusals name missing capabilities, providing insight into output behavior.

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?

The description is brief (two sentences) and structured with a clear source statement and an output behavior statement. Some redundancy exists in the first sentence, but it remains concise and organized.

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

Completeness4/5

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

For a simple listing tool with one optional filter, the description provides the essential context: what is listed, the source of data, and the nature of the output. It does not specify sorting or pagination, but these are not critical for a basic list operation.

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

Parameters3/5

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

The only parameter, 'category', is well-described in the schema with examples. The tool description adds no extra meaning, but the schema alone sufficiently explains the filter, so the baseline score is appropriate.

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?

The description clearly states the tool lists node kinds registered on the host, with explicit context about the live registry and inclusion of locally added and marketplace-vendored kinds. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description hints at a distinction from a 'fixed list' but does not explicitly name alternative tools or provide clear when-to-use guidance. It implies freshness but lacks direct comparison to sibling tools like describe_node_kind.

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

list_workflowsList WorkflowsA

List every workflow draft this host is holding, with node and edge counts. Use it to recover a workflow_id you did not keep, before creating a duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A5/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. It clearly indicates the operation is a read-only listing (no side effects mentioned), and the 'recover' phrasing implies safety. The behavior is transparent.

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

Conciseness5/5

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

The description is two sentences, concise and focused. It provides essential information without extraneous detail, earning a perfect score for structure.

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?

Given the sibling tools (create, get, delete, etc.), the description adequately contextualizes this tool's role. It mentions the workflow draft listing and the recovery use case, making it complete for an agent to decide when to use it.

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

Parameters5/5

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

The tool has no parameters, so there is nothing to explain. The description does not introduce any ambiguity about inputs, making this dimension trivially satisfied.

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?

The description clearly states the tool's function: listing every workflow draft with node and edge counts. It also mentions a specific use case (recovering a workflow_id), making its purpose unambiguous.

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?

It explicitly instructs when to use this tool: to recover a workflow_id before creating a duplicate, preventing unintended duplicates. This is direct and actionable.

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

remove_edgeRemove EdgeA

Remove one edge, named either by its edge id or by the source/target pair it connects. Removing an edge never removes the nodes it joined.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoSource node id, if naming the edge by its endpoints.
targetNoTarget node id, if naming the edge by its endpoints.
edge_idNoThe edge id, if you have it.
workflow_idYesThe workflow id.

TDQS

A4.4/5.0
Behavior4/5

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

Provides a key behavioral guarantee: removing an edge does not remove the nodes it joined. This helps the agent understand the side effects. No annotations exist, so this description carries the transparency burden and does so adequately.

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

Conciseness5/5

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

Two short sentences, no fluff. All information is relevant and directly supports the agent's decision-making.

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

Completeness4/5

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

Sufficient for a simple edge-removal operation. It explains what, how, and a critical side-effect. It does not specify error conditions or output, but given the tool's simplicity and lack of output schema, this is acceptable.

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?

The description adds relational context beyond the schema by explaining that either edge_id or the source/target pair can be used, which is not immediately obvious from individual parameter descriptions. Schema coverage is 100%, so this is supplementary but valuable.

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 ('Remove') and resource ('edge'), and clarifies the two ways the edge can be identified (by edge id or by source/target pair). This distinguishes it from sibling tools like remove_node or connect_nodes.

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

Usage Guidelines4/5

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

Clearly implies when to use it (to remove an edge). It does not explicitly name alternatives or conditions when not to use it, but the purpose is unambiguous enough for an agent to select it appropriately among siblings.

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

remove_nodeRemove NodeA

Remove a node and every edge touching it. The edges go WITH the node deliberately — leaving them would produce edges pointing at nothing, reported as a second error the author did not cause.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYesThe node to remove.
workflow_idYesThe workflow id.

TDQS

A3.8/5.0
Behavior3/5

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

Since there are no annotations, the description carries the full load for behavioral disclosure. It reveals the key behavior that edges are removed along with the node and gives a rationale for this. However, it does not cover other behaviors such as irreversibility, error conditions, or what happens if the node does not exist.

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

Conciseness5/5

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

The description is two sentences: the first states the action and scope; the second explains the deliberate cascade design. There is no unnecessary repetition or filler, and the core information is front-loaded.

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

Completeness4/5

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

For a two-parameter, no-schema, no-output tool, the description covers the critical information: the operation removes a node and its edges. The rationale for avoiding dangling edges gives additional context that is sufficient for basic use. It lacks explicit mention of return or error scenarios, but those are less critical for this simple operation.

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

Parameters3/5

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

The input schema already provides clear descriptions and 100% coverage for both node_id and workflow_id. The tool description adds no additional parameter-level explanation besides contextualizing the cascade of edges, which is a behavior rather than a parameter-specific meaning. The baseline of 3 is appropriate.

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?

The description clearly states that the tool removes a node and every edge touching it, and explains that edges are removed deliberately to prevent dangling references. This specific verb and scope distinguishes it from the sibling remove_edge, making the tool's purpose unambiguous.

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

Usage Guidelines3/5

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

The tool is clearly meant for removing nodes and their associated edges, but the description does not explicitly mention when to use it versus remove_edge for single-edge deletions. It provides context through the deliberate edge cascade but lacks an explicit when/when-not statement or alternative guidance.

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

run_workflowRun WorkflowA

Execute the graph and return per-node outputs plus ok/error. This is a SMOKE TEST of wiring and routing, not a production run: it takes no executors, so nodes fall back to their kind's own behaviour and anything needing a host capability (a terminal session, an LLM client) refuses rather than acting. Refuses outright to run a graph with validation errors, because a malformed graph produces failures that look like engine bugs and are not. Seed entry nodes with initial_inputs, keyed by node id then port.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe workflow id.
initial_inputsNoInputs seeded to entry nodes: { "<node_id>": { "<port>": <value> } }.

TDQS

A4.1/5.0
Behavior4/5

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

There are no annotations, so the description carries the burden of behavioral disclosure. It explains node fallback behavior, refusals for missing host capabilities, and rejection of validation-error graphs. It does not mention persistence, side effects, or mutability, but for a smoke-test runner these omissions are minor.

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?

The definition is compact and front-loaded with the key behavior—outputs and the smoke-test distinction. The subsequent clauses about fallback and refusal are useful clarifications. It is slightly dense, but every clause contributes directly to safe invocation.

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

Completeness4/5

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

For a two-parameter, smoke-test tool with no annotations and no output schema, the description covers purpose, input handling, valid conditions, and the return format of per-node outputs plus status. It offers enough for an agent to call correctly, though an explicit note about side effects/state mutability was absent.

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

Parameters3/5

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

Schema coverage is 100% and the schema already describes both workflow_id and initial_inputs, including the nested object shape. The description's 'keyed by node id then port' adds a little emphasis but mostly restates what the schema already documents, so the baseline of 3 is appropriate.

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?

The description starts with an unambiguous verb and object: 'Execute the graph and return per-node outputs plus ok/error.' It then clearly labels itself as 'a SMOKE TEST of wiring and routing, not a production run,' which distinguishes it from lifecycle and validation siblings without needing to open schemas.

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

Usage Guidelines4/5

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

The description gives explicit usage context: a smoke test, not a production run, takes no executors, refuses host-dependent capabilities, and rejects invalid graphs. This tells the agent when it is and is not safe to use, though it does not explicitly name an alternative sibling for production-like execution or validation.

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

validate_workflowValidate WorkflowA

Check a workflow and return every issue TAGGED by who refused it: source "schema" means the graph is malformed and editing it is the fix; source "host" means this host will not run that kind and the fix is a capability or a different kind. Collapsing the two costs you the wrong fix.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe workflow id.

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description must bear the behavioral disclosure burden. It does: it clarifies that each issue is tagged with its refusing source, that 'schema' means malformed graph, and that 'host' means a capability mismatch—distinguishing the two is critical to choosing the right fix. It does not explicitly mention read-only status, but 'check' and 'return' make mutation unlikely, and the richer context about issue sources is extremely valuable beyond any structured metadata.

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

Conciseness5/5

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

Three sentences, each earning its place: the first states the action, the second states the two issue sources and their fixes, and the third warns against collapsing them. There is no filler, and the most important statement—the cheaper message—is in the final strong sentence. This is concise without being under-specified.

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

Completeness4/5

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

For a single-parameter tool with no output schema and no annotations, this description is largely complete: it explains what the tool returns, the meaning of the return values in the two categories, and the practical consequence of using that output. Minor gaps are the lack of an explicit read-only declaration and no guidance about whether the graph's state is checked asynchronously or instantly with the result.

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

Parameters3/5

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

There is only one parameter ('workflow_id') and schema_description_coverage is 100%, so the schema fully documents it. The description adds no parameter-specific detail beyond referring to the workflow generally, which meets the baseline but does not exceed it.

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?

The description opens with a specific verb and resource—'Check a workflow and return every issue'—and goes further by specifying that issues are tagged by source ('schema' vs 'host'). Among siblings like get_workflow, run_workflow, and delete_workflow, only this one validates, and that uniqueness is clear 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 Guidelines3/5

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

The description explains how to interpret results and what action each issue source implies, but it never explicitly states when to use validate_workflow versus alternatives like run_workflow or get_workflow. Usage context is implied by the word 'validate' rather than stated, so while there is interpretational guidance after the call, there is no before-the-call when-to-use advice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv0.1.0
    • First observedadd_node
    • First observedconfigure_node
    • First observedconnect_nodes
    • First observedcreate_workflow
    • First observeddelete_workflow
    • First observeddescribe_node_kind
    • First observedexport_workflow
    • First observedget_workflow
    • First observedimport_workflow
    • First observedlist_node_kinds
    • First observedlist_workflows
    • First observedremove_edge
    • First observedremove_node
    • First observedrun_workflow
    • First observedvalidate_workflow

TDQS

A4.3/5.0

Scored across 15 tools

Disambiguation5/5

Every tool maps to one distinct operation: workflow-level CRUD, node editing, edge editing, node-kind introspection, validation, import/export, and smoke-test running. The close pairs like get_workflow/export_workflow and list_node_kinds/describe_node_kind are explicitly differentiated. No two tools appear to do the same job.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern: list_, create_, get_, delete_, add_, remove_, configure_, connect_, describe_, validate_, export_, import_, and run_. The object nouns are predictable and consistent. There is no mixed casing or vague verb usage.

Tool Count5/5

Fifteen tools sits at the upper boundary of ideal, but each tool earns its place in the workflow-authoring lifecycle. There are no duplicate or filler tools, and the count matches the apparent domain richness. It feels intentionally scoped rather than bloated.

Completeness5/5

The server covers workflow CRUD, node editing, edge editing, node-kind introspection, validation, portable import/export, and a run smoke test. Every editing operation has a corresponding read or delete path, and get_workflow/export_workflow provide both authoring and portable views. The declared out-of-scope production execution is a deliberate boundary, not a gap.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A TypeScript MCP server for launching, tracking, and managing external coding-agent runs across local and remote backends like Codex and Claude Code. It allows top-level agents to orchestrate subagents through tools for spawning tasks, polling events, and handling interactive sessions.
    7
    2
    -
  • A
    license
    D
    quality
    D
    maintenance
    A TypeScript MCP server demo supporting local Stdio and remote Streamable HTTP, demonstrating tool invocation for AI agents.
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Particle-Academy/fancy-flow-mcp-js'

If you have feedback or need assistance with the MCP directory API, please join our Discord server