There's no MCP tool that lists or fetches a project's structure — an agent reads the flow files directly, the same way it reads any other code.
When you need this
Section titled “When you need this”You’re connected to a project over MCP and you need to know what’s in it — which flows exist, what a
node looks like, how one node feeds another — before you edit anything or call flow_patch. There’s no
catalog_list, catalog_get, or any other MCP tool that lists or fetches this for you. Use your agent’s
own file tools instead.
- A flow’s files on disk are its actual definition — the same YAML and prompt files the compiler and
the runtime read, not a copy of them in a database.
flows/<flow_id>/flow.yamlis the flow, eachnodes/<node_id>.yamlis a node, and a prompt lives in its own.prompt.mdfile next to it. Reading a flow means reading these files, the same way you’d read any other source file in the project. - That’s why there’s no listing or fetching tool for this. A
catalog_list/catalog_getpair would just be a second, MCP-shaped way to read information your agent’s file tools already read directly and more flexibly — list a directory, grep across every node for a field, open one file. AQVEN’s MCP server says as much in its own instructions to a connecting agent: flow definitions are files in the project, read them with your own Read, Grep, and Glob. The 16 MCP tools this project exposes are for the things file tools can’t do — running a check, starting a run or a series, applying a structural edit atomically — not for reading files a second way. - Read
FINDINGS.mdbefore you propose a change. It sits at the module root, next toaqven.yaml, and it is what the project already knows: every finding of a series on held-out cases, grouped by failure mode, with the cases, repeats and models it holds for. Studio’s chat agent gets it withAGENTS.mdandCLAUDE.md. Experiments are files too:experiments/<experiment_id>/experiment.yamlwith its notes inexperiment.md, the values its variants plug in undernodes/,prompts/andflows/, and its findings infindings/. Datasets aredatasets/<dataset_id>.yaml, and the media files their cases point at sit indatasets/<dataset_id>/or, when shared, under@root/paths such assamples/. See How to keep case media as files in the project. - Use whatever your agent calls “Read”, “Grep”, and “Glob”. List
flows/to see what flows exist, globflows/*/nodes/*.yamlto see every node across all of them, grep for a node id or a field name across the tree, read oneflow.yamlor<node_id>.yamlto see its shape. This is the same file reading you’d already do to understand any other part of the project’s code. - For a structured inventory instead of raw files, use the CLI, not MCP.
aqven treelists every entity in the project grouped by kind, andaqven refs KIND:IDlooks up one entity and shows its definition, what references it, and what it references. Run either from a terminal alongside your agent, or have the agent shell out to them. See How to see what’s in a project and how it connects for exactly what each command prints. flow_listandflow_getexist, but only as REST routes for Studio’s own UI — they’re not registered as MCP tools, so an agent connected over MCP can’t call them. Don’t reach for them from an agent context; read the files directly, or useaqven tree/aqven refsinstead.- Once you’ve found the node or field you need to change, edit the file directly for a point change, or
call
flow_patchfor a structural or cross-file one — see How to edit a flow’s structure as an agent.
Example
Section titled “Example”aqven new my_project --template showcasecd my_project/my_projectAn agent exploring this project for the first time might glob every flow file, then read one:
Glob: flows/*/flow.yaml flows/judge_panel/flow.yaml flows/support_case/flow.yaml
Read: flows/support_case/flow.yamlTo find every node that reads a value from triage, grep across the tree instead of calling a tool for
it:
Grep: "\$triage\." in flows/support_case/nodes/**/*.yaml flows/support_case/nodes/drafts/gemini.node.yaml:9: from: "$triage.out.summary" flows/support_case/nodes/intent/escalate.node.yaml:9: from: "$triage.out.summary" flows/support_case/nodes/panel/panel.node.yaml:8: from: "$triage.out.summary" ...For the same question with full references (file, line, and field), run aqven refs node:triage . from a terminal — see how to read that output on
How to see what’s in a project and how it connects.
See also
Section titled “See also”- How to see what’s in a project and how it connects —
aqven treeandaqven refs, with real output. - How to edit a flow’s structure as an agent — what to do once you’ve found what to change.
- Experiments, series and findings — what a finding in
FINDINGS.mdholds, and why it is never edited by hand. - How to connect AQVEN as an MCP server — getting an agent connected in the first place.
- Files as source of truth — why the files themselves, not a database, are what you’re reading here.