Agentic scientific-computing platform: a reactive multi-agent team orchestrating PINA physics-informed neural-network workflows via pydantic-graph, with MLflow tracing/provenance and a marimo chat UI.
marimo-flow exposes a single tool 'route' with a complex input schema and lengthy description. The schema is present and typed, but the description lacks clarity about when/why to use this tool vs alternatives, and parameter descriptions are present but minimal. The tool performs a routing decision in a PINA workflow, a legitimate domain function, but the definition has several quality gaps typical of experimental research code. Parameter descriptions exist but many are terse (e.g. 'MLflow run ID' for mlflow_run_id). No documented output schema structure. Error handling guidance is absent. The tool name 'route' is generic and doesn't follow verb_noun convention (should be 'route_workflow_node' or 'decide_next_workflow_step'). Overall, this is functional but below production baseline for agent integration.
Router for a PINA (Physics-Informed NN) workflow team. Given the user intent and current FlowState, chooses the next node: notebook, problem, model, solver, training, validation, mlflow, or end. Enforces circuit breaker to prevent routing loops.
Tool name 'route' is too generic and does not follow verb_noun convention. The LLM cannot infer from the name alone that this tool decides the next workflow node in a PINA training loop.
Tool description (203 chars) mentions 'Router for a PINA workflow team' and 'chooses the next node' but lacks guidance on WHEN to call this vs other routing mechanisms, WHAT preconditions must be met, and HOW the circuit breaker state is maintained across calls.
Output schema is not documented. The tool description does not specify what fields the response contains, what types they are, or how downstream workflow steps consume the routing decision (e.g., does it return {next_node: string, reason?: string}?).
Parameter descriptions are minimal and lack detail. E.g., 'task_spec' is described as 'Task specification with title and constraints' but does not explain what structure is expected, what fields are required, or what format constraints apply.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
No error handling guidance. The tool description mentions 'circuit breaker to prevent routing loops' but does not explain what error response is returned when the circuit breaker triggers, or how the LLM should respond (retry with different input? abort workflow?).
No documented constraints on numeric parameters. 'route_count' and 'max_route_steps' are integers but lack minimum/maximum bounds. Should state e.g., 'max_route_steps: 1-100 (default: 10)'.
Parameter 'last_node' accepts a string but does not document the valid enum of node names (notebook, problem, model, solver, training, validation, mlflow, end). Should either list the enum or state 'must be one of: [list]'.