@paradigma-inc/flywheel 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/package.json +1 -1
  2. package/skills/flywheel/SKILL.md +7 -25
  3. package/skills/flywheel/agents/openai.yaml +2 -2
  4. package/skills/flywheel/example-workflows/organizing-exploring-and-iterating-on-a-research-topic.md +8 -8
  5. package/skills/flywheel/example-workflows/reproducing-papers-on-a-budget.md +8 -8
  6. package/skills/flywheel/getting-started/flywheel-tutorial-overview.md +1 -1
  7. package/skills/flywheel/references/experiment-design-protocol.md +204 -0
  8. package/skills/flywheel/references/flywheel-mcp-tool-map.md +160 -0
  9. package/skills/flywheel/web-ui/flywheel-webui-map.md +1 -1
  10. package/skills/flywheel-auto/SKILL.md +156 -0
  11. package/skills/flywheel-auto/agents/openai.yaml +12 -0
  12. package/skills/flywheel-auto/evals/evals.json +20 -0
  13. package/skills/flywheel-auto/references/ARTIFACTS.md +218 -0
  14. package/skills/flywheel-auto/references/INTERFACES.md +201 -0
  15. package/skills/{flywheel/reference → flywheel-auto/references}/experiment-design-protocol.md +9 -5
  16. package/skills/flywheel-lookahead/SKILL.md +145 -0
  17. package/skills/flywheel-lookahead/agents/openai.yaml +12 -0
  18. package/skills/flywheel-lookahead/evals/evals.json +20 -0
  19. package/skills/flywheel-lookahead/references/ARTIFACTS.md +218 -0
  20. package/skills/flywheel-lookahead/references/INTERFACES.md +201 -0
  21. package/skills/flywheel-lookahead/references/flywheel-mcp-tool-map.md +160 -0
  22. package/skills/flywheel-reproduce/SKILL.md +212 -0
  23. package/skills/flywheel-reproduce/agents/openai.yaml +12 -0
  24. package/skills/flywheel-reproduce/evals/evals.json +20 -0
  25. package/skills/flywheel-reproduce/references/ARTIFACTS.md +218 -0
  26. package/skills/flywheel-reproduce/references/INTERFACES.md +201 -0
  27. package/skills/flywheel-reproduce/references/experiment-design-protocol.md +204 -0
  28. package/skills/flywheel-reproduce/references/flywheel-mcp-tool-map.md +160 -0
  29. package/skills/flywheel-to-graph/SKILL.md +187 -0
  30. package/skills/flywheel-to-graph/agents/openai.yaml +12 -0
  31. package/skills/flywheel-to-graph/evals/evals.json +20 -0
  32. package/skills/flywheel-to-graph/references/ARTIFACTS.md +218 -0
  33. package/skills/flywheel-to-graph/references/INTERFACES.md +201 -0
  34. package/skills/flywheel-to-graph/references/flywheel-mcp-tool-map.md +160 -0
  35. package/skills/flywheel/reference/command-presets.md +0 -230
  36. package/skills/flywheel/reference/wiki-porting.md +0 -92
  37. /package/skills/{flywheel/reference → flywheel-auto/references}/flywheel-mcp-tool-map.md +0 -0
@@ -0,0 +1,201 @@
1
+ # Interfaces
2
+
3
+ Canonical reference for Flywheel user-facing interfaces and public contracts.
4
+
5
+ Last updated: 2026-03-21
6
+
7
+ ## Primary Clients
8
+
9
+ - `project/flywheel-webui` - canonical web product UI
10
+ - `project/flywheel-api` - canonical programmatic client interface (local + HTTP)
11
+ - MCP hosts (Codex/Claude/ChatGPT) via `/mcp-server`
12
+
13
+ ## Canonical Entity Model
14
+
15
+ All interfaces operate on the same core entities:
16
+
17
+ - node
18
+ - node edge (branch/merge graph links)
19
+ - artifact
20
+ - execution
21
+ - compute lease
22
+ - budget grant
23
+
24
+ Node snapshots are the canonical durable contract for resume, review, and
25
+ cross-client interoperability.
26
+
27
+ ## Core HTTP Surface
28
+
29
+ ### Node lifecycle and graph
30
+
31
+ - `GET /mcp/nodes`
32
+ - `GET /mcp/nodes/{node_id}`
33
+ - `GET /mcp/nodes/{node_id}/tree`
34
+ - `POST /mcp/nodes/stage/create`
35
+ - `PATCH /mcp/nodes/{node_id}/stage/update`
36
+ - `POST /mcp/nodes/{node_id}/commit`
37
+ - `POST /mcp/nodes/{node_id}/branch`
38
+ - `POST /mcp/nodes/merge`
39
+ - `DELETE /mcp/nodes/{node_id}`
40
+ - `POST /mcp/nodes/bulk-delete`
41
+
42
+ ### Artifact lifecycle
43
+
44
+ - `POST /mcp/nodes/{node_id}/artifacts/uploads/prepare`
45
+ - `POST /mcp/nodes/{node_id}/artifacts/uploads/finalize`
46
+ - `GET /mcp/nodes/{node_id}/artifacts`
47
+ - `GET /mcp/nodes/{node_id}/artifacts/{artifact_id}`
48
+ - `GET /mcp/nodes/{node_id}/artifacts/{artifact_id}/preview`
49
+ - `DELETE /mcp/nodes/{node_id}/artifacts/{artifact_id}`
50
+ - `PUT /mcp/artifacts/uploads/{upload_id}`
51
+
52
+ ### Execution lifecycle
53
+
54
+ - `POST /mcp/nodes/{node_id}/executions`
55
+ - `GET /mcp/nodes/{node_id}/executions`
56
+ - `POST /mcp/nodes/{node_id}/executions/{execution_id}/terminate`
57
+
58
+ ### Compute catalog
59
+
60
+ - `GET /compute/providers`
61
+ - `GET /compute/offers`
62
+ - `GET /compute/offers/{provider}`
63
+
64
+ ### Managed compute and budgets
65
+
66
+ - `GET /mcp/nodes/{node_id}/compute/options`
67
+ - `POST /mcp/nodes/{node_id}/compute/acquire`
68
+ - `GET /mcp/compute/status`
69
+ - `GET /mcp/compute/connection`
70
+ - `POST /mcp/compute/release`
71
+ - `POST /mcp/compute/release-all`
72
+ - `GET /mcp/nodes/{node_id}/budget/grants`
73
+ - `GET /mcp/nodes/{node_id}/budget/campaign-grants`
74
+ - `POST /mcp/nodes/{node_id}/budget/campaign-grants`
75
+ - `PATCH /mcp/nodes/{node_id}/budget/campaign-grants/{budget_grant_id}`
76
+ - `DELETE /mcp/nodes/{node_id}/budget/campaign-grants/{budget_grant_id}`
77
+
78
+ ### Sharing, tags, and audit
79
+
80
+ - `GET /mcp/nodes/{node_id}/sharing`
81
+ - `PUT /mcp/nodes/{node_id}/sharing`
82
+ - `POST /mcp/nodes/sharing/bulk`
83
+ - `GET /mcp/nodes/{node_id}/audit`
84
+ - `POST /mcp/nodes/{root_node_id}/tags`
85
+ - `PATCH /mcp/nodes/{root_node_id}/tags/{tag_id}`
86
+ - `DELETE /mcp/nodes/{root_node_id}/tags/{tag_id}`
87
+ - `PUT /mcp/nodes/{node_id}/tags`
88
+
89
+ ### Export and summaries
90
+
91
+ - `POST /mcp/export`
92
+ - `POST /mcp/import`
93
+ - `POST /mcp/export-summary`
94
+ - `POST /mcp/export-summary-stream`
95
+ - `POST /mcp/export-summary-pdf`
96
+ - `POST /mcp/export-summary-render-pdf`
97
+
98
+ ### Auth and integrations
99
+
100
+ - `GET /auth/status`
101
+ - `GET /auth/accounts`
102
+ - `POST /auth/accounts/merge/source-proof`
103
+ - `POST /auth/accounts/merge/preview`
104
+ - `POST /auth/accounts/merge`
105
+ - `POST /auth/accounts/detach`
106
+ - `GET /auth/integrations/status`
107
+ - `PUT /auth/integrations/wandb`
108
+ - `PUT /auth/integrations/huggingface`
109
+ - `DELETE /auth/integrations/wandb`
110
+ - `DELETE /auth/integrations/huggingface`
111
+
112
+ ### Analytics
113
+
114
+ - `POST /analytics/events`
115
+ - `GET /admin/analytics/kpis`
116
+ - `GET /admin/analytics/overview`
117
+
118
+ ## MCP Tool Surface
119
+
120
+ ### Discovery and sharing tools
121
+
122
+ - `flywheel_auth_status`
123
+ - `flywheel_get_credits_balance`
124
+ - `flywheel_list_nodes`
125
+ - `flywheel_get_node`
126
+ - `flywheel_get_node_tree`
127
+ - `flywheel_get_node_sharing`
128
+ - `flywheel_set_node_sharing`
129
+ - `flywheel_bulk_set_node_sharing`
130
+ - `flywheel_create_node_tag`
131
+ - `flywheel_update_node_tag`
132
+ - `flywheel_delete_node_tag`
133
+ - `flywheel_set_node_tag_assignments`
134
+
135
+ ### Node and graph tools
136
+
137
+ - `flywheel_stage_node_create`
138
+ - `flywheel_stage_node_update`
139
+ - `flywheel_commit_node`
140
+ - `flywheel_branch_node`
141
+ - `flywheel_merge_nodes`
142
+ - `flywheel_delete_node`
143
+ - `flywheel_bulk_delete_nodes`
144
+
145
+ ### Artifact tools
146
+
147
+ - `flywheel_prepare_artifact_uploads`
148
+ - `flywheel_finalize_artifact_uploads`
149
+ - `flywheel_list_artifacts`
150
+ - `flywheel_get_artifact`
151
+ - `flywheel_get_artifact_preview`
152
+ - `flywheel_delete_artifact`
153
+
154
+ ### Execution tools
155
+
156
+ - `flywheel_launch_execution`
157
+ - `flywheel_list_executions`
158
+ - `flywheel_terminate_execution`
159
+
160
+ ### Compute lease and budget tools
161
+
162
+ - `flywheel_compute_list_options`
163
+ - `flywheel_request_compute_grant_approval`
164
+ - `flywheel_list_compute_grants`
165
+ - `flywheel_compute_acquire`
166
+ - `flywheel_compute_status`
167
+ - `flywheel_compute_connection`
168
+ - `flywheel_compute_release`
169
+ - `flywheel_compute_release_all`
170
+
171
+ ### Campaign budget tools
172
+
173
+ - `flywheel_list_campaign_budgets`
174
+ - `flywheel_create_campaign_budget`
175
+ - `flywheel_update_campaign_budget`
176
+ - `flywheel_revoke_campaign_budget`
177
+
178
+ ### Contract, audit, and export tools
179
+
180
+ - `flywheel_get_contract`
181
+ - `flywheel_list_audit`
182
+ - `flywheel_summarize_node_tree`
183
+ - `flywheel_export_subgraph`
184
+ - `flywheel_import_subgraph`
185
+ - `flywheel_export_summary`
186
+ - `flywheel_export_summary_stream`
187
+ - `flywheel_export_summary_pdf`
188
+ - `flywheel_export_summary_render_pdf`
189
+
190
+ ## Legacy Archival Export
191
+
192
+ Experimental settings keep legacy history export available as an archival
193
+ migration aid. This path is read-only and outside canonical node workflows.
194
+
195
+ ## Related Docs
196
+
197
+ - `docs/flywheel/CONCEPT.md`
198
+ - `docs/flywheel/FLYWHEEL_MCP.md`
199
+ - `docs/flywheel/PROVISIONING.md`
200
+ - `docs/flywheel/ARTIFACTS.md`
201
+ - `docs/flywheel/GIT_INTEGRATION.md`
@@ -0,0 +1,204 @@
1
+ # Experiment Design Protocol
2
+
3
+ Use this when the user needs help turning research intent into a well-formed experiment or exploration before spending compute.
4
+
5
+ ## Goal
6
+
7
+ Help the user clarify what they are trying to learn, shape the work around that question, and avoid wasting compute before the design is solid.
8
+
9
+ ## Operating rules
10
+
11
+ - Treat design and execution as separate phases.
12
+ - Optimize for clarity of experimental purpose, not speed to a first run.
13
+ - Adapt depth to the user's experience and the clarity already present in the conversation.
14
+ - Apply epistemic discipline: separate what is known from what is assumed, and name uncertainty instead of smoothing it over.
15
+ - Support both hypothesis-driven and exploratory work.
16
+ - Support simple runs and complex shapes such as multi-stage pipelines, sweep-then-deep-dive, multi-arm comparisons, and custom structures.
17
+ - Keep all 10 brief fields, but allow exploratory fields to be marked `exploratory` or `TBD` rather than fabricated.
18
+ - Use quick Socratic questioning to surface assumptions, confidence, and what would change the user's mind. Keep it to 1-2 short questions per turn.
19
+ - Propose defaults for structural choices such as experiment shape, stop condition, or artifact plan. Use questions rather than defaults for epistemic choices such as beliefs, assumptions, and what evidence would matter.
20
+ - When a reasoning or design gap is visible, raise it as a question rather than an assertion.
21
+ - If the core gate is satisfied and the user wants to proceed, stop asking more design questions.
22
+ - Use Flywheel `insight` nodes to preserve design context when it will help across turns or sessions.
23
+
24
+ ## Phase 1: Clarify what the user is trying to learn
25
+
26
+ Start with:
27
+
28
+ 1. What are you trying to learn or decide?
29
+ 2. Is this mainly hypothesis-driven or exploratory right now?
30
+
31
+ Keep this phase quick. Ask 1-2 short questions per turn, and use light Socratic questioning as an epistemic check after the user states the learning goal: briefly surface what seems known versus assumed before moving on.
32
+
33
+ If the work is hypothesis-driven, ask:
34
+
35
+ - What is the hypothesis?
36
+ - Compared to what baseline or alternative?
37
+ - What result would matter?
38
+
39
+ If the work is exploratory, ask:
40
+
41
+ - What is the big question?
42
+ - What would you need to learn first before tackling it?
43
+ - What is the cheapest or cleanest way to learn that first piece?
44
+ - What signal or pattern are you looking for?
45
+
46
+ If the user is still fuzzy after this phase, stay in planning mode. If needed, create or update an `insight` node rather than an `empirical` node.
47
+
48
+ ## Phase 2: Shape the work
49
+
50
+ Choose or define the experiment shape through quick Socratic questioning:
51
+
52
+ - single focused run
53
+ - multi-stage pipeline
54
+ - sweep then deep-dive
55
+ - multi-arm comparison
56
+ - custom shape
57
+
58
+ If the user is unsure about structure, propose a default shape, stop condition, or artifact plan instead of extending the question loop.
59
+
60
+ Then fill the experiment brief:
61
+
62
+ - `question`: the decision or learning goal
63
+ - `hypothesis`: the claim being tested
64
+ - `comparator`: the baseline or alternative
65
+ - `unit_of_work`: what one run, branch, or stage actually changes
66
+ - `primary_metric`: the main number or observable to inspect
67
+ - `artifact_plan`: which artifact will help interpret the result
68
+ - `budget_cap`: max spend or runtime for the current stage
69
+ - `stop_condition`: when to stop rather than letting the run expand
70
+ - `interpretation`: what would count as signal, no signal, or ambiguity
71
+ - `next_branch_if_inconclusive`: the follow-up branch if the result is unclear
72
+
73
+ For exploratory work, `hypothesis` or `comparator` may be marked `exploratory` or `TBD`, but the learning goal still needs to be explicit.
74
+
75
+ ## Phase 3: Run the adaptive design gate
76
+
77
+ Frame the gate as preventing waste, not enforcing bureaucracy.
78
+
79
+ Always check:
80
+
81
+ - the question or goal is explicit
82
+ - at least one metric or observable is defined
83
+ - a budget cap or stop condition exists
84
+
85
+ For hypothesis-driven work, also check:
86
+
87
+ - there is a falsifiable hypothesis
88
+ - there is a comparator or baseline
89
+
90
+ For exploratory work, instead check:
91
+
92
+ - the user can say what they are looking for
93
+ - the first learning step is scoped well enough to run
94
+
95
+ Additional checks when relevant:
96
+
97
+ - an artifact plan or `no_artifacts_reason` exists
98
+ - the run shape matches the question and is not changing too many important things without purpose
99
+ - an interpretation rule or next branch is defined
100
+
101
+ If the core gate passes and the user wants to proceed, let them run even if some non-core details are still `TBD`.
102
+
103
+ When blocked, ask only the next necessary question instead of reopening the whole brief.
104
+
105
+ ## Phase 4: Confirm the plan
106
+
107
+ Before any compute request or training launch, restate:
108
+
109
+ - what we are trying to learn
110
+ - the experiment shape
111
+ - the metric or observable
112
+ - the artifact plan
113
+ - the budget or stop condition
114
+ - what result would change the next step
115
+
116
+ If the run is expensive or high-risk, ask for explicit confirmation.
117
+
118
+ ## Phase 5: Drive Flywheel
119
+
120
+ Use Flywheel in layers when possible.
121
+
122
+ Before execution, load `references/flywheel-mcp-tool-map.md` and verify the
123
+ exact tool surface exposed by the current MCP host before critical flows.
124
+
125
+ ### Design layer
126
+
127
+ Use an `insight` node to capture rationale, open questions, experiment shape, and any decomposition needed for exploratory or multi-stage work.
128
+
129
+ Typical flow:
130
+
131
+ 1. `mcp__flywheel__flywheel_stage_node_create`
132
+ 2. `mcp__flywheel__flywheel_stage_node_update`
133
+ 3. `mcp__flywheel__flywheel_commit_node`
134
+
135
+ ### Execution layer
136
+
137
+ Only after the design gate passes, create or branch the `empirical` node for the runnable part of the work.
138
+
139
+ Typical flow:
140
+
141
+ 1. `mcp__flywheel__flywheel_branch_node` or `mcp__flywheel__flywheel_stage_node_create`
142
+ 2. `mcp__flywheel__flywheel_stage_node_update` with the explicit run summary and the local question or hypothesis for that branch
143
+ 3. `mcp__flywheel__flywheel_request_compute_grant_approval` only after the user accepts the design
144
+ 4. `mcp__flywheel__flywheel_list_compute_grants` or `mcp__flywheel__flywheel_list_approval_sessions` when you need to resolve the approved `compute_grant_id`
145
+ 5. `mcp__flywheel__flywheel_compute_acquire` and related compute tools only when execution is actually needed
146
+ 6. `mcp__flywheel__flywheel_prepare_artifact_uploads`, raw upload to the returned signed URLs, then `mcp__flywheel__flywheel_finalize_artifact_uploads`
147
+ 7. Do a brief epistemic check before commit: verify what the evidence actually shows, whether it matches the interpretation rule from the brief, and whether any gap between the data and the hoped-for story needs to be named explicitly in the node summary.
148
+ 8. `mcp__flywheel__flywheel_commit_node`
149
+
150
+ Important notes:
151
+
152
+ - Exploratory work can stay in `insight` nodes until a specific empirical probe is ready.
153
+ - Because `empirical` commits require a non-empty `hypothesis`, turn each runnable exploratory probe into a concrete local question or hypothesis for that branch.
154
+ - For multi-stage or multi-arm work, use branches to represent stages or arms and keep summaries clear about how each branch feeds the next.
155
+ - Completed empirical work needs artifacts or a `no_artifacts_reason`.
156
+
157
+ ## Adaptive question flow
158
+
159
+ Ask in short batches of 1-2 questions per turn. Keep the flow light, Socratic, and epistemic rather than exhaustive.
160
+
161
+ 1. What are you trying to learn or decide?
162
+ 2. Is this hypothesis-driven or exploratory?
163
+ 3. Briefly separate what the user seems to know from what they seem to be assuming before locking the design.
164
+ 4. If hypothesis-driven: what is the hypothesis and compared to what?
165
+ 5. If exploratory: what is the first thing you need to learn and what is the cheapest way to learn it?
166
+ 6. What experiment shape fits this work?
167
+ 7. What metric or observable and artifact will you inspect?
168
+ 8. What budget or stop condition keeps this from wasting compute?
169
+ 9. What interpretation rule will distinguish evidence from expectation?
170
+ 10. If the result is ambiguous, what is the next branch?
171
+
172
+ ## Output template
173
+
174
+ Use this shape when turning a vague request into an executable plan:
175
+
176
+ ```md
177
+ Experiment brief
178
+
179
+ - Question:
180
+ - Hypothesis:
181
+ - Comparator:
182
+ - Unit of work:
183
+ - Primary metric or observable:
184
+ - Artifact plan:
185
+ - Budget/time cap:
186
+ - Stop condition:
187
+ - Interpretation rule:
188
+ - Next branch if inconclusive:
189
+
190
+ Experiment type: hypothesis-driven | exploratory
191
+ Design gate: ready | blocked
192
+ Remaining gap:
193
+ Recommended next action:
194
+ ```
195
+
196
+ ## Generalization rule
197
+
198
+ Reuse the same protocol across domains by changing the unit of work and artifact type:
199
+
200
+ - model training -> metrics tables, loss curves, checkpoints
201
+ - benchmark comparisons -> score tables, latency plots, error slices
202
+ - prompt evaluations -> rubric tables, failure examples, sampled outputs
203
+ - product experiments -> funnels, event tables, user-segment slices
204
+ - scientific workflows -> figures, logs, result tables, notebooks
@@ -0,0 +1,160 @@
1
+ # Flywheel MCP Tool Map
2
+
3
+ This reference describes the Flywheel MCP tool families and the common runtime
4
+ contract expected by the public Flywheel skill.
5
+
6
+ Use it as a routing guide, not as a session snapshot. Always verify the exact
7
+ tool surface exposed by your current MCP host before executing critical flows.
8
+
9
+ ## Core Contract Expectations
10
+
11
+ - Node lifecycle and graph-mutation flows use optimistic locking
12
+ (`expected_revision`).
13
+ - Node commits require `kind`, `outcome`, and `summary`.
14
+ - `kind` is typically `insight` or `empirical`.
15
+ - `insight` commits require non-empty `insights`.
16
+ - `empirical` commits require a non-empty `hypothesis`; completed empirical
17
+ commits also require artifacts or a `no_artifacts_reason`.
18
+ - Artifact publish is a two-step flow:
19
+ prepare upload, upload raw bytes to returned signed URLs, then finalize
20
+ the upload batch.
21
+
22
+ ## Tool Families
23
+
24
+ ### Session, Auth, and Contract
25
+
26
+ - `mcp__flywheel__flywheel_auth_status`
27
+ - `mcp__flywheel__flywheel_get_contract`
28
+ - `mcp__flywheel__flywheel_get_contract_section`
29
+ - `mcp__flywheel__flywheel_get_credits_balance`
30
+
31
+ ### Node Discovery and Read
32
+
33
+ - `mcp__flywheel__flywheel_list_nodes`
34
+ - `mcp__flywheel__flywheel_get_node`
35
+ - `mcp__flywheel__flywheel_get_node_tree`
36
+ - `mcp__flywheel__flywheel_get_node_ancestry`
37
+ - `mcp__flywheel__flywheel_summarize_node_tree`
38
+ - `mcp__flywheel__flywheel_get_campaign_snapshot`
39
+ - `mcp__flywheel__flywheel_list_audit`
40
+
41
+ ### Node Mutation, Branching, and Commit
42
+
43
+ - `mcp__flywheel__flywheel_stage_node_create`
44
+ - `mcp__flywheel__flywheel_stage_node_update`
45
+ - `mcp__flywheel__flywheel_commit_node`
46
+ - `mcp__flywheel__flywheel_branch_node`
47
+ - `mcp__flywheel__flywheel_merge_nodes`
48
+ - `mcp__flywheel__flywheel_add_parent`
49
+ - `mcp__flywheel__flywheel_remove_parent`
50
+ - `mcp__flywheel__flywheel_delete_node`
51
+ - `mcp__flywheel__flywheel_bulk_delete_nodes`
52
+
53
+ ### Access Policy and Collaboration
54
+
55
+ - `mcp__flywheel__flywheel_get_node_sharing`
56
+ - `mcp__flywheel__flywheel_set_sharing_for_node`
57
+ - `mcp__flywheel__flywheel_set_sharing_for_nodes`
58
+
59
+ ### Tags and Graph Annotation
60
+
61
+ - `mcp__flywheel__flywheel_create_node_tag`
62
+ - `mcp__flywheel__flywheel_update_node_tag`
63
+ - `mcp__flywheel__flywheel_delete_node_tag`
64
+ - `mcp__flywheel__flywheel_set_node_tag_assignments`
65
+
66
+ ### Artifacts
67
+
68
+ - `mcp__flywheel__flywheel_list_artifacts`
69
+ - `mcp__flywheel__flywheel_get_artifact`
70
+ - `mcp__flywheel__flywheel_get_artifact_preview`
71
+ - `mcp__flywheel__flywheel_prepare_artifact_uploads`
72
+ - `mcp__flywheel__flywheel_finalize_artifact_uploads`
73
+ - `mcp__flywheel__flywheel_set_artifact_note`
74
+ - `mcp__flywheel__flywheel_delete_artifact`
75
+
76
+ Common artifact types include:
77
+ `text`, `table`, `json`, `image`, `banner`, `html`, `plotly_html`, `vega`,
78
+ `checkpoint`, and `diff_carousel`.
79
+
80
+ ### Export and Import
81
+
82
+ - `mcp__flywheel__flywheel_export_subgraph`
83
+ - `mcp__flywheel__flywheel_import_subgraph`
84
+ - `mcp__flywheel__flywheel_export_summary`
85
+ - `mcp__flywheel__flywheel_export_summary_stream`
86
+ - `mcp__flywheel__flywheel_export_summary_pdf`
87
+ - `mcp__flywheel__flywheel_export_summary_render_pdf`
88
+
89
+ ### Executions
90
+
91
+ - `mcp__flywheel__flywheel_launch_execution`
92
+ - `mcp__flywheel__flywheel_list_executions`
93
+ - `mcp__flywheel__flywheel_terminate_execution`
94
+
95
+ ### Managed Compute
96
+
97
+ - `mcp__flywheel__flywheel_approval_session_heartbeat`
98
+ - `mcp__flywheel__flywheel_list_approval_sessions`
99
+ - `mcp__flywheel__flywheel_expire_approval_session`
100
+ - `mcp__flywheel__flywheel_request_compute_grant_approval`
101
+ - `mcp__flywheel__flywheel_list_compute_grants`
102
+ - `mcp__flywheel__flywheel_compute_list_options`
103
+ - `mcp__flywheel__flywheel_compute_acquire`
104
+ - `mcp__flywheel__flywheel_compute_status`
105
+ - `mcp__flywheel__flywheel_compute_connection`
106
+ - `mcp__flywheel__flywheel_compute_release`
107
+ - `mcp__flywheel__flywheel_compute_release_all`
108
+
109
+ ### Campaign Budgets (Organizer Flows)
110
+
111
+ - `mcp__flywheel__flywheel_list_campaign_budgets`
112
+ - `mcp__flywheel__flywheel_create_campaign_budget`
113
+ - `mcp__flywheel__flywheel_update_campaign_budget`
114
+ - `mcp__flywheel__flywheel_revoke_campaign_budget`
115
+
116
+ ### Migration Helpers
117
+
118
+ Some installations may expose migration-only helper tools with hashed names.
119
+ Treat these as specialized one-off tools, not part of day-to-day research
120
+ workflows.
121
+
122
+ ## Practical Tool Sequences
123
+
124
+ ### Insight Node Flow
125
+
126
+ 1. `mcp__flywheel__flywheel_stage_node_create`
127
+ 2. `mcp__flywheel__flywheel_stage_node_update`
128
+ 3. `mcp__flywheel__flywheel_commit_node`
129
+
130
+ ### Empirical Node With Artifacts
131
+
132
+ 1. `mcp__flywheel__flywheel_stage_node_create`
133
+ 2. `mcp__flywheel__flywheel_stage_node_update`
134
+ 3. Run experiment or compute steps
135
+ 4. `mcp__flywheel__flywheel_prepare_artifact_uploads`
136
+ 5. Upload artifact bytes to signed URLs
137
+ 6. `mcp__flywheel__flywheel_finalize_artifact_uploads`
138
+ 7. `mcp__flywheel__flywheel_commit_node`
139
+
140
+ ### Managed Compute Flow
141
+
142
+ 1. `mcp__flywheel__flywheel_approval_session_heartbeat`
143
+ 2. `mcp__flywheel__flywheel_request_compute_grant_approval`
144
+ 3. `mcp__flywheel__flywheel_list_compute_grants` (if needed)
145
+ 4. `mcp__flywheel__flywheel_compute_acquire`
146
+ 5. `mcp__flywheel__flywheel_compute_status` until ready
147
+ 6. `mcp__flywheel__flywheel_compute_connection`
148
+ 7. `mcp__flywheel__flywheel_compute_release` (or `..._release_all`)
149
+
150
+ ### Share a Graph With Collaborators
151
+
152
+ 1. `mcp__flywheel__flywheel_get_node_sharing`
153
+ 2. `mcp__flywheel__flywheel_set_sharing_for_node` (or `..._for_nodes`)
154
+ 3. `mcp__flywheel__flywheel_export_summary` or `..._export_subgraph` for handoff
155
+
156
+ ## Safety Notes
157
+
158
+ - Prefer `get_contract` before implementing strict assumptions in automation.
159
+ - Avoid call-order assumptions not mandated by contract.
160
+ - Keep checks bounded: list/read first, then mutate only the intended nodes.