Skip to main content
Glama

Check flows

check_flows
Read-onlyIdempotent

Use this when the user wants to check flow data before drawing a Sankey diagram, for example "do my flows balance" or "why will this Sankey not draw". Takes flows as from, to and amount (pasted text or a list), up to 200 flows and 100 nodes. Returns the problems found, each with its row (unreadable lines, blank names, zero, negative or ambiguous amounts, flows from a node to itself), loops named as paths, pairs that appear more than once, the column of each node, a balance table of inflow and outflow for middle nodes and totals per column. Does not draw the diagram and does not change the data.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "check_flows"
  }
}

Input Schema

NameRequiredDescriptionDefault
flowsNoAlternative to flows_text: [{"from":"Salary","to":"Budget","amount":"4000"}]. The amount may be text ("1,250.50") or a number. Up to 200 flows and 100 different nodes.
flows_textNoFlows pasted as text, one per line: from, to, amount, e.g. "Salary,Budget,4000\nBudget,Rent,1500\nBudget,Savings,800". Comma, tab or semicolon between values; an optional header row is skipped; names with commas go in double quotes. Up to 200 lines. Give this or flows.
decimal_markNoDecimal mark of the amounts, "." (1,234.50) or "," (1.234,50). Needed only when an amount such as 1,234 or 1.234 could be read both ways; otherwise it is read from the amounts.

Output Schema

NameRequiredDescriptionDefault
nodesYes
cyclesYes
balanceYes
summaryYes
can_drawYes
problemsYes
flow_countYes
link_countYes
node_countYes
self_loopsYes
column_countYes
decimal_markYes
column_totalsYes
preview_countNo
problem_countYes
header_skippedYes
duplicates_mergedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds real context: hard limits of 200 flows and 100 nodes, and the exact categories of problems it reports (unreadable lines, blank names, zero/negative/ambiguous amounts, self-loops, duplicate pairs, loops as paths, balance table). The "does not change the data" line is somewhat redundant with readOnlyHint, which keeps it from a 5.

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 selection trigger, then input shape, then limits, then outputs, then exclusions – a sensible order. The long enumeration of reported problem types is dense but partially duplicates the output schema, so it is slightly over-long for what it adds.

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?

With annotations covering the safety profile, a 100%-documented schema, and an output schema to describe return values, the description still supplies everything else an agent needs: triggers, size caps, and the two accepted input forms. Nothing required for correct invocation is missing.

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%, so all three parameters are already documented in the schema, including the flows/flows_text alternation and amount formats. The description restates the from/to/amount shape and the text-or-list choice without adding new semantics, and never mentions decimal_mark at all. Baseline 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?

States a specific verb and resource ("check flow data") and immediately bounds it against the sibling: "Does not draw the diagram." An agent can tell this apart from make_sankey without opening either 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?

Gives explicit trigger phrasing ("Use this when the user wants to check flow data before drawing a Sankey diagram") plus two concrete user utterances, and closes with two exclusions (does not draw, does not change the data). Selection is fully determined by the description.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources