{"type":"thread.started","thread_id":"019fcec9-0355-7fd3-8fc1-6d305f67687b"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","type":"agent_message","text":"I’ll use the OpenHCS MCP as the sole control and inspection surface. I’ll first inspect the TIFF metadata and desktop state, then build the Source Bindings-aware workflow, validate/compile it, run with granular progress visible, inspect outputs, and finish the Napari presentation on port 5613."}}
{"type":"item.started","item":{"id":"item_1","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_health_check","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_1","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_health_check","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"status\": \"ok\",\n  \"started_at_unix\": 1785880709.3639889,\n  \"service\": \"openhcs.mcp\",\n  \"openhcs_version\": \"0.7.13\",\n  \"packaged_resources_ready\": true,\n  \"packaged_resource_count\": 42,\n  \"missing_packaged_resource_paths\": [],\n  \"server_process_id\": 4184966,\n  \"server_source_path\": \"/home/ts/code/projects/openhcs/openhcs/mcp/server.py\",\n  \"server_import_mtime_ns\": 1785523500187366151,\n  \"server_current_mtime_ns\": 1785523500187366151,\n  \"server_source_changed_since_import\": false,\n  \"stale_source_paths\": [],\n  \"recovery_reason\": \"current\",\n  \"installation_pointer_path\": null,\n  \"installation_pointer_changed_since_import\": false,\n  \"installation_pointer_available\": null,\n  \"restart_required\": false,\n  \"restart_command\": [],\n  \"restart_command_is_stable\": false,\n  \"reconnect_required\": false,\n  \"reconnect_owner\": null,\n  \"retry_after_reconnect\": false,\n  \"automatic_recovery_on_reconnect\": false,\n  \"restart_hint\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"status":"ok","started_at_unix":1785880709.3639889,"service":"openhcs.mcp","openhcs_version":"0.7.13","packaged_resources_ready":true,"packaged_resource_count":42,"missing_packaged_resource_paths":[],"server_process_id":4184966,"server_source_path":"/home/ts/code/projects/openhcs/openhcs/mcp/server.py","server_import_mtime_ns":1785523500187366151,"server_current_mtime_ns":1785523500187366151,"server_source_changed_since_import":false,"stale_source_paths":[],"recovery_reason":"current","installation_pointer_path":null,"installation_pointer_changed_since_import":false,"installation_pointer_available":null,"restart_required":false,"restart_command":[],"restart_command_is_stable":false,"reconnect_required":false,"reconnect_owner":null,"retry_after_reconnect":false,"automatic_recovery_on_reconnect":false,"restart_hint":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_2","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_authoring_context","arguments":{"kind":"first_use","max_chars":12000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_2","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_authoring_context","arguments":{"kind":"first_use","max_chars":12000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"kind\": \"first_use\",\n  \"content\": \"=== CHOOSE AN OPENHCS WORKFLOW ===\\nUse this context when you do not yet know which OpenHCS state owner or workflow matches the request.\\n\\n=== CORE MODEL IN ONE PASS ===\\n- OpenHCS is a typed compiler/runtime for high-content microscopy. It projects microscope data into a storage-independent virtual workspace, compiles PipelineConfig plus ordered FunctionStep declarations, resolves multidimensional grouping and artifact contracts, executes through typed runtime values, and validates results through plate and viewer evidence.\\n- Choose the state owner before choosing file formats or tools. If the user asks to open, show, continue, or edit work in the desktop, the UI-owned route always takes precedence over folder inspection or a headless session.\\n\\n=== CHOOSE ONE TASK ROUTE ===\\nRequest exactly one matching context with openhcs_get_authoring_context; deepen into another only when the workflow reaches that boundary.\\n- kind=\\\"ui_visible_workflow\\\" — Work in the running desktop UI: the user asks to open, show, continue, or edit work in the visible OpenHCS desktop.\\n- kind=\\\"domain_expert_assisted_setup\\\" — Set up a workflow from biological intent: a domain expert describes the experiment and expected result but wants the agent to handle OpenHCS mechanics.\\n- kind=\\\"folder_onboarding\\\" — Inspect and onboard image data: the task starts from a local plate, image folder, or rich image container and does not require visible UI ownership.\\n- kind=\\\"pipeline\\\" — Author or revise a typed pipeline: the sources are understood and the next task is choosing functions, axes, grouping, configuration, or artifact contracts.\\n- kind=\\\"custom_function\\\" — Author a custom processing function: the required operation is not already in the function registry or needs a typed custom artifact contract.\\n- kind=\\\"headless_execution\\\" — Compile and execute headlessly: a reviewed pipeline should run without becoming selected or editable in the desktop UI.\\n- kind=\\\"debugging\\\" — Diagnose compiled and runtime behavior: a compile, execution, step output, runtime value, or artifact must be inspected at its owning boundary.\\n- kind=\\\"viewer_review\\\" — Validate results in a managed viewer: execution produced images, labels, or ROIs that need bounded visual and structured validation.\\n- kind=\\\"objectstate_editing\\\" — Inspect or edit typed UI state: one exact UI-backed field, inheritance value, snapshot, or branch must be inspected or changed.\\n- kind=\\\"cellprofiler_translation\\\" — Translate or validate a CellProfiler workflow: the intent begins with a .cppipe, CellProfiler module vocabulary, or an exact parity claim.\\n\\n=== SAFE FIRST ACTION ===\\n- Start read-only. Query the active surface through openhcs_search_capabilities with task-relevant workflow, target, or text filters; its registry-owned metadata is the authority for what this server exposes. Use openhcs_list_capabilities only when the complete selected surface is required.\\n- Request the matching task context before mutation. Do not read every knowledge document, enumerate every function, invent config fields, or load full-resolution image data up front.\\n- Before any write or execution, show the exact target and intended change, refresh revision/request tokens, obtain approval, validate, and compile before running.\\n\\n=== DEEPEN ONLY WHEN NEEDED ===\\nRetrieve one relevant source-backed target with openhcs_get_knowledge_document; use its returned section ids to narrow further instead of loading every document.\\n- openhcs_architecture_quick_start — OpenHCS architecture quick start: Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","kind":"first_use","content":"=== CHOOSE AN OPENHCS WORKFLOW ===\nUse this context when you do not yet know which OpenHCS state owner or workflow matches the request.\n\n=== CORE MODEL IN ONE PASS ===\n- OpenHCS is a typed compiler/runtime for high-content microscopy. It projects microscope data into a storage-independent virtual workspace, compiles PipelineConfig plus ordered FunctionStep declarations, resolves multidimensional grouping and artifact contracts, executes through typed runtime values, and validates results through plate and viewer evidence.\n- Choose the state owner before choosing file formats or tools. If the user asks to open, show, continue, or edit work in the desktop, the UI-owned route always takes precedence over folder inspection or a headless session.\n\n=== CHOOSE ONE TASK ROUTE ===\nRequest exactly one matching context with openhcs_get_authoring_context; deepen into another only when the workflow reaches that boundary.\n- kind=\"ui_visible_workflow\" — Work in the running desktop UI: the user asks to open, show, continue, or edit work in the visible OpenHCS desktop.\n- kind=\"domain_expert_assisted_setup\" — Set up a workflow from biological intent: a domain expert describes the experiment and expected result but wants the agent to handle OpenHCS mechanics.\n- kind=\"folder_onboarding\" — Inspect and onboard image data: the task starts from a local plate, image folder, or rich image container and does not require visible UI ownership.\n- kind=\"pipeline\" — Author or revise a typed pipeline: the sources are understood and the next task is choosing functions, axes, grouping, configuration, or artifact contracts.\n- kind=\"custom_function\" — Author a custom processing function: the required operation is not already in the function registry or needs a typed custom artifact contract.\n- kind=\"headless_execution\" — Compile and execute headlessly: a reviewed pipeline should run without becoming selected or editable in the desktop UI.\n- kind=\"debugging\" — Diagnose compiled and runtime behavior: a compile, execution, step output, runtime value, or artifact must be inspected at its owning boundary.\n- kind=\"viewer_review\" — Validate results in a managed viewer: execution produced images, labels, or ROIs that need bounded visual and structured validation.\n- kind=\"objectstate_editing\" — Inspect or edit typed UI state: one exact UI-backed field, inheritance value, snapshot, or branch must be inspected or changed.\n- kind=\"cellprofiler_translation\" — Translate or validate a CellProfiler workflow: the intent begins with a .cppipe, CellProfiler module vocabulary, or an exact parity claim.\n\n=== SAFE FIRST ACTION ===\n- Start read-only. Query the active surface through openhcs_search_capabilities with task-relevant workflow, target, or text filters; its registry-owned metadata is the authority for what this server exposes. Use openhcs_list_capabilities only when the complete selected surface is required.\n- Request the matching task context before mutation. Do not read every knowledge document, enumerate every function, invent config fields, or load full-resolution image data up front.\n- Before any write or execution, show the exact target and intended change, refresh revision/request tokens, obtain approval, validate, and compile before running.\n\n=== DEEPEN ONLY WHEN NEEDED ===\nRetrieve one relevant source-backed target with openhcs_get_knowledge_document; use its returned section ids to narrow further instead of loading every document.\n- openhcs_architecture_quick_start — OpenHCS architecture quick start: Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation."}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_3","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_authoring_context","arguments":{"kind":"ui_visible_workflow","max_chars":16000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_authoring_context","arguments":{"kind":"ui_visible_workflow","max_chars":16000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"kind\": \"ui_visible_workflow\",\n  \"content\": \"=== WORK IN THE RUNNING DESKTOP UI ===\\nUse this context when the user asks to open, show, continue, or edit work in the visible OpenHCS desktop.\\n\\n=== RUNTIME AND UI COORDINATION ===\\n- If the OpenHCS UI is open and the user should see the work, use the UI bridge path: read/apply plate_manager.orchestrator_config as one complete document (plate_paths, global_config, per_plate_configs, pipeline_data), then dispatch init_plate, compile_plate, run_plate through openhcs_ui_selected_plate_workflow.\\n- Direct orchestrator sessions are headless runtime jobs: they can execute, stream to viewers, and write output plates, but they do not make PlateManager rows, ObjectState snapshots, or selected UI state visible unless the UI path is used.\\n- A UI bridge mutation receipt and a workflow terminal state are separate evidence. Retain the returned operation_id, wait once with openhcs_ui_wait_for_operation_receipt only for bridge receipt terminality, then read plate_manager.state with openhcs_ui_get_state_surface until the selected plate's compile/run state is terminal.\\n- After UI-owned runs, confirm source and output rows on that state surface, then inspect/query/sample the output plate and validate viewer layers from those visible paths.\\n\\n=== OBJECTSTATE AND CODE ROUNDTRIP ===\\n- ObjectState is the edit/provenance layer for config, pipelines, steps, and code surfaces; list scopes and fields through openhcs_ui_list_object_state_scopes and openhcs_ui_get_object_state_fields before assuming UI text or raw None values.\\n- Field markers are semantic: * means unsaved/dirty, _ means differs from defaults, inherited/resolved values show lazy/default resolution even when raw values are None.\\n- Code documents are live typed bidirectional UI<->code projections over ObjectState-backed UI objects, not freeform files. Read, validate, and apply them through their declared capabilities with fresh revision tokens.\\n- UI mutations can create snapshots and branches. Inspect them with openhcs_ui_list_snapshots and openhcs_ui_list_branches; recover an approved prior state with openhcs_ui_restore_snapshot, return from historical inspection with openhcs_ui_time_travel_head, and change branches only through openhcs_ui_switch_branch. Retrieve the targeted code/UI knowledge document below only when this ownership boundary needs more detail.\\n\\n=== UI-VISIBLE WORKFLOW ===\\n- ObjectState is the UI state authority; code documents are live typed pycodified projections over UI-reflected objects with revision tokens, not standalone scripts.\\n- This route takes precedence over headless folder onboarding whenever the user asks to open, inspect, or continue work in the desktop. Plate inspection remains diagnostic evidence and must not become a parallel UI setup path.\\n- Discover or verify the UI bridge with openhcs_ui_list_bridges and openhcs_ui_bridge_status; when multiple bridges exist, pin the descriptor/connection rather than guessing.\\n- Read ui_live_overview.state first for the current ObjectState token, revision, snapshot, windows, statuses, and operations contributed by registered UI providers.\\n- Read the PlateManager state surface with openhcs_ui_list_state_surfaces and openhcs_ui_get_state_surface; the selected/source/output rows are the UI authority for visible workflows.\\n- The declared 'view_results' action relates the Plate Manager state to its widget-owned quantitative-results surface through `related_state_surface_ids`. Follow that declared relation after a quantitative run, then read the returned surface_id for bounded table rows, full row counts, artifact location, object/source identity, execution/axis provenance, and truncation flags. Do not select a surface by title matching. This is retained result data, not a mirror of dialog tabs or table cells.\\n- Read, validate, and apply the PlateManager code document with openhcs_ui_list_code_documents, openhcs_ui_get_code_document, openhcs_ui_validate_code_document, and openhcs_ui_apply_code_document.\\n- Add the containing plate directory and initialize with auto-detection. Recognized HCS layouts and CZI/OME stores keep their detected handler; use SourceBindingsConfig only for semantic selection/naming after discovery, or as the SourceBindingsHandler ingestion declaration for an otherwise unrecognized arbitrary-file folder.\\n- For a write: read, explain, obtain approval, re-read, validate, then apply using the fresh document revision and approved confirmation policy; retain the mutation receipt and snapshot facts.\\n- Dispatch init, compile, and run through openhcs_ui_selected_plate_workflow using its current selection revision token. Wait for the returned operation_id once with openhcs_ui_wait_for_operation_receipt only to establish bridge receipt terminality, then read the Plate Manager state surface for the separate workflow terminal condition.\\n- For an assay with measurement outputs, completion includes reading the live-measurement surface and reconciling its object identifiers and row cardinality with final labels/ROIs. Invoke the declared Plate Manager Results action when the user should see the same retained tables; do not scrape the widget tree to reconstruct them.\\n- Retrieve the targeted code/UI knowledge document below only if the ownership boundary remains unclear.\\n\\n=== DEEPEN ONLY WHEN NEEDED ===\\nRetrieve one relevant source-backed target with openhcs_get_knowledge_document; use its returned section ids to narrow further instead of loading every document.\\n- openhcs_basic_interface — OpenHCS basic interface: Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\\n- openhcs_code_ui_editing — OpenHCS code and UI editing: User workflow for selecting the owning Code document, clean versus resolved source, revision-safe validation and apply, dirty markers, save behavior, snapshots, and recovery.\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","kind":"ui_visible_workflow","content":"=== WORK IN THE RUNNING DESKTOP UI ===\nUse this context when the user asks to open, show, continue, or edit work in the visible OpenHCS desktop.\n\n=== RUNTIME AND UI COORDINATION ===\n- If the OpenHCS UI is open and the user should see the work, use the UI bridge path: read/apply plate_manager.orchestrator_config as one complete document (plate_paths, global_config, per_plate_configs, pipeline_data), then dispatch init_plate, compile_plate, run_plate through openhcs_ui_selected_plate_workflow.\n- Direct orchestrator sessions are headless runtime jobs: they can execute, stream to viewers, and write output plates, but they do not make PlateManager rows, ObjectState snapshots, or selected UI state visible unless the UI path is used.\n- A UI bridge mutation receipt and a workflow terminal state are separate evidence. Retain the returned operation_id, wait once with openhcs_ui_wait_for_operation_receipt only for bridge receipt terminality, then read plate_manager.state with openhcs_ui_get_state_surface until the selected plate's compile/run state is terminal.\n- After UI-owned runs, confirm source and output rows on that state surface, then inspect/query/sample the output plate and validate viewer layers from those visible paths.\n\n=== OBJECTSTATE AND CODE ROUNDTRIP ===\n- ObjectState is the edit/provenance layer for config, pipelines, steps, and code surfaces; list scopes and fields through openhcs_ui_list_object_state_scopes and openhcs_ui_get_object_state_fields before assuming UI text or raw None values.\n- Field markers are semantic: * means unsaved/dirty, _ means differs from defaults, inherited/resolved values show lazy/default resolution even when raw values are None.\n- Code documents are live typed bidirectional UI<->code projections over ObjectState-backed UI objects, not freeform files. Read, validate, and apply them through their declared capabilities with fresh revision tokens.\n- UI mutations can create snapshots and branches. Inspect them with openhcs_ui_list_snapshots and openhcs_ui_list_branches; recover an approved prior state with openhcs_ui_restore_snapshot, return from historical inspection with openhcs_ui_time_travel_head, and change branches only through openhcs_ui_switch_branch. Retrieve the targeted code/UI knowledge document below only when this ownership boundary needs more detail.\n\n=== UI-VISIBLE WORKFLOW ===\n- ObjectState is the UI state authority; code documents are live typed pycodified projections over UI-reflected objects with revision tokens, not standalone scripts.\n- This route takes precedence over headless folder onboarding whenever the user asks to open, inspect, or continue work in the desktop. Plate inspection remains diagnostic evidence and must not become a parallel UI setup path.\n- Discover or verify the UI bridge with openhcs_ui_list_bridges and openhcs_ui_bridge_status; when multiple bridges exist, pin the descriptor/connection rather than guessing.\n- Read ui_live_overview.state first for the current ObjectState token, revision, snapshot, windows, statuses, and operations contributed by registered UI providers.\n- Read the PlateManager state surface with openhcs_ui_list_state_surfaces and openhcs_ui_get_state_surface; the selected/source/output rows are the UI authority for visible workflows.\n- The declared 'view_results' action relates the Plate Manager state to its widget-owned quantitative-results surface through `related_state_surface_ids`. Follow that declared relation after a quantitative run, then read the returned surface_id for bounded table rows, full row counts, artifact location, object/source identity, execution/axis provenance, and truncation flags. Do not select a surface by title matching. This is retained result data, not a mirror of dialog tabs or table cells.\n- Read, validate, and apply the PlateManager code document with openhcs_ui_list_code_documents, openhcs_ui_get_code_document, openhcs_ui_validate_code_document, and openhcs_ui_apply_code_document.\n- Add the containing plate directory and initialize with auto-detection. Recognized HCS layouts and CZI/OME stores keep their detected handler; use SourceBindingsConfig only for semantic selection/naming after discovery, or as the SourceBindingsHandler ingestion declaration for an otherwise unrecognized arbitrary-file folder.\n- For a write: read, explain, obtain approval, re-read, validate, then apply using the fresh document revision and approved confirmation policy; retain the mutation receipt and snapshot facts.\n- Dispatch init, compile, and run through openhcs_ui_selected_plate_workflow using its current selection revision token. Wait for the returned operation_id once with openhcs_ui_wait_for_operation_receipt only to establish bridge receipt terminality, then read the Plate Manager state surface for the separate workflow terminal condition.\n- For an assay with measurement outputs, completion includes reading the live-measurement surface and reconciling its object identifiers and row cardinality with final labels/ROIs. Invoke the declared Plate Manager Results action when the user should see the same retained tables; do not scrape the widget tree to reconstruct them.\n- Retrieve the targeted code/UI knowledge document below only if the ownership boundary remains unclear.\n\n=== DEEPEN ONLY WHEN NEEDED ===\nRetrieve one relevant source-backed target with openhcs_get_knowledge_document; use its returned section ids to narrow further instead of loading every document.\n- openhcs_basic_interface — OpenHCS basic interface: Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\n- openhcs_code_ui_editing — OpenHCS code and UI editing: User workflow for selecting the owning Code document, clean versus resolved source, revision-safe validation and apply, dirty markers, save behavior, snapshots, and recovery."}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_4","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"desktop selected plate inspect source bindings pipeline validate compile execute ZMQ progress Napari viewer","limit":30},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_4","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"desktop selected plate inspect source bindings pipeline validate compile execute ZMQ progress Napari viewer","limit":30},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"surface_profile\": \"desktop\",\n  \"query\": {\n    \"text\": \"desktop selected plate inspect source bindings pipeline validate compile execute ZMQ progress Napari viewer\",\n    \"kind\": null,\n    \"workflow_group\": null,\n    \"workflow_stage\": null,\n    \"target_context\": null,\n    \"visibility\": null,\n    \"role\": null,\n    \"has_side_effects\": null,\n    \"side_effect_contains\": null,\n    \"offset\": 0,\n    \"limit\": 30\n  },\n  \"matched_count\": 0,\n  \"returned_count\": 0,\n  \"next_offset\": null,\n  \"capabilities\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","surface_profile":"desktop","query":{"text":"desktop selected plate inspect source bindings pipeline validate compile execute ZMQ progress Napari viewer","kind":null,"workflow_group":null,"workflow_stage":null,"target_context":null,"visibility":null,"role":null,"has_side_effects":null,"side_effect_contains":null,"offset":0,"limit":30},"matched_count":0,"returned_count":0,"next_offset":null,"capabilities":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_5","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_bridges","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_5","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_bridges","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"bridges\": [\n    {\n      \"descriptor_file_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/ui-bridge/ui_bridge_ui-fd6f7d10-fa50-4fb9-b86f-8b6dff007b13.json\",\n      \"bridge_instance_id\": \"ui-fd6f7d10-fa50-4fb9-b86f-8b6dff007b13\",\n      \"connection\": {\n        \"host\": \"127.0.0.1\",\n        \"port\": 7888,\n        \"transport_mode\": \"ipc\",\n        \"persistent\": true\n      },\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"errors\": [],\n      \"warnings\": [],\n      \"status\": \"live\",\n      \"started_at_unix\": 1785880688.705405,\n      \"pid\": 4184250\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","bridges":[{"descriptor_file_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/ui-bridge/ui_bridge_ui-fd6f7d10-fa50-4fb9-b86f-8b6dff007b13.json","bridge_instance_id":"ui-fd6f7d10-fa50-4fb9-b86f-8b6dff007b13","connection":{"host":"127.0.0.1","port":7888,"transport_mode":"ipc","persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"status":"live","started_at_unix":1785880688.705405,"pid":4184250}],"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_6","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_state_surfaces","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_6","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_state_surfaces","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"surfaces\": [\n    {\n      \"widget_id\": \"main_window\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"UI live overview\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 1,\n      \"surface_id\": \"ui_live_overview.state\"\n    },\n    {\n      \"widget_id\": \"pipeline_editor\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Pipeline editor state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 0,\n      \"surface_id\": \"pipeline_editor.state\"\n    },\n    {\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Pipeline debug session state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 0,\n      \"surface_id\": \"pipeline_debug_toolbar.session\"\n    },\n    {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 0,\n      \"surface_id\": \"plate_manager.state\"\n    },\n    {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Live measurement results\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 0,\n      \"surface_id\": \"plate_manager.live_measurements\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","surfaces":[{"widget_id":"main_window","schema_version":"openhcs.agent.v1","title":"UI live overview","readable":true,"supported_selection_modes":["all"],"current_selection_count":0,"total_scope_count":1,"surface_id":"ui_live_overview.state"},{"widget_id":"pipeline_editor","schema_version":"openhcs.agent.v1","title":"Pipeline editor state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0,"surface_id":"pipeline_editor.state"},{"widget_id":"pipeline_debug_toolbar","schema_version":"openhcs.agent.v1","title":"Pipeline debug session state","readable":true,"supported_selection_modes":["all"],"current_selection_count":0,"total_scope_count":0,"surface_id":"pipeline_debug_toolbar.session"},{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0,"surface_id":"plate_manager.state"},{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","title":"Live measurement results","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0,"surface_id":"plate_manager.live_measurements"}],"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_7","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_code_documents","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_code_documents","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"documents\": [\n    {\n      \"widget_id\": \"object_state_scope\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"ObjectState scope code documents (object_state_scope:<scope_id>)\",\n      \"readable\": false,\n      \"writable\": false,\n      \"supported_selection_modes\": [],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 3,\n      \"document_id\": \"object_state_scope\"\n    },\n    {\n      \"widget_id\": \"pipeline_editor\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code mode - Edit Pipeline\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1,\n      \"document_id\": \"window_code_document:pipeline_editor\"\n    },\n    {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Plate manager orchestrator config\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 0,\n      \"document_id\": \"plate_manager.orchestrator_config\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","documents":[{"widget_id":"object_state_scope","schema_version":"openhcs.agent.v1","title":"ObjectState scope code documents (object_state_scope:<scope_id>)","readable":false,"writable":false,"supported_selection_modes":[],"current_selection_count":0,"total_scope_count":3,"document_id":"object_state_scope"},{"widget_id":"pipeline_editor","schema_version":"openhcs.agent.v1","title":"Code mode - Edit Pipeline","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":1,"document_id":"window_code_document:pipeline_editor"},{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","title":"Plate manager orchestrator config","readable":true,"writable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0,"document_id":"plate_manager.orchestrator_config"}],"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_8","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"ui_live_overview.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"ui_live_overview.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": null,\n  \"current_revision_token\": \"0fa8f4dfff84364346f766693d10c5f4c76ee2f00b4d51bd092e19e0e5d47e79\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"main_window\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"ui_live_overview.state\"\n    },\n    \"title\": \"UI live overview\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"all\"\n    ],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.live_overview_state.v1\",\n  \"payload\": {\n    \"selection_mode\": null,\n    \"selected_scope_ids\": [],\n    \"current_snapshot\": null,\n    \"current_revision_token\": \"0fa8f4dfff84364346f766693d10c5f4c76ee2f00b4d51bd092e19e0e5d47e79\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"main_window\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"ui_live_overview.state\"\n      },\n      \"title\": \"UI live overview\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 0,\n    \"sections\": [\n      {\n        \"section_id\": \"pipeline_debug_toolbar.session\",\n        \"title\": \"Pipeline debug session state\",\n        \"summary\": \"no_plate\",\n        \"metrics\": [\n          {\n            \"key\": \"phase\",\n            \"label\": \"phase\",\n            \"value\": \"no_plate\"\n          },\n          {\n            \"key\": \"compiled\",\n            \"label\": \"compiled\",\n            \"value\": \"False\"\n          },\n          {\n            \"key\": \"actions\",\n            \"label\": \"actions\",\n            \"value\": \"7\"\n          },\n          {\n            \"key\": \"disabled\",\n            \"label\": \"disabled\",\n            \"value\": \"7\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"Inspect Runtime\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Debug\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Step\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Run to Pause\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Choose source group\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Stop debug session\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Restart\",\n            \"status\": \"debug_target_required\",\n            \"detail\": \"Debug controls require a selected plate.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          }\n        ]\n      },\n      {\n        \"section_id\": \"plate_manager.state\",\n        \"title\": \"Plate manager state\",\n        \"summary\": \"idle\",\n        \"metrics\": [\n          {\n            \"key\": \"plates\",\n            \"label\": \"plates\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"selected\",\n            \"label\": \"selected\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"active\",\n            \"label\": \"active\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"queued\",\n            \"label\": \"queued\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      },\n      {\n        \"section_id\": \"plate_manager.live_measurements\",\n        \"title\": \"Live measurement results\",\n        \"summary\": \"No live measurement results yet\",\n        \"metrics\": [\n          {\n            \"key\": \"tables\",\n            \"label\": \"tables\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"rows\",\n            \"label\": \"rows\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"executions\",\n            \"label\": \"executions\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      },\n      {\n        \"section_id\": \"qt_top_level.windows\",\n        \"title\": \"Qt top-level windows\",\n        \"summary\": \"0 windows\",\n        \"metrics\": [\n          {\n            \"key\": \"windows\",\n            \"label\": \"windows\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"visible\",\n            \"label\": \"visible\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"error_dialogs\",\n            \"label\": \"error dialogs\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      },\n      {\n        \"section_id\": \"main_window.windows\",\n        \"title\": \"Main window windows\",\n        \"summary\": \"8 windows\",\n        \"metrics\": [\n          {\n            \"key\": \"windows\",\n            \"label\": \"windows\",\n            \"value\": \"8\"\n          },\n          {\n            \"key\": \"visible\",\n            \"label\": \"visible\",\n            \"value\": \"4\"\n          },\n          {\n            \"key\": \"error_dialogs\",\n            \"label\": \"error dialogs\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"System Monitor\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"system_monitor\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Plate Manager\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"plate_manager\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"ZMQ Server Manager\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"zmq_server_manager\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Pipeline Editor\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"pipeline_editor\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Image Browser\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"image_browser\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Log Viewer\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"log_viewer\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"OpenHCS Knowledge Base\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"knowledge_base\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"About OpenHCS\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"about_openhcs\",\n            \"source_widget_id\": null\n          }\n        ]\n      },\n      {\n        \"section_id\": \"zmq_server_manager\",\n        \"title\": \"ZMQ Server Manager\",\n        \"summary\": \"1 servers\",\n        \"metrics\": [\n          {\n            \"key\": \"servers\",\n            \"label\": \"servers\",\n            \"value\": \"1\"\n          },\n          {\n            \"key\": \"ready\",\n            \"label\": \"ready\",\n            \"value\": \"1\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"Port 7888 - OpenHCSUiBridgeServer\",\n            \"status\": \"✅\",\n            \"detail\": \"\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"zmq_server_manager\",\n            \"source_widget_id\": null\n          }\n        ]\n      },\n      {\n        \"section_id\": \"ui-bridge-operations\",\n        \"title\": \"UI bridge operations\",\n        \"summary\": \"0 running, 0 failed, 0 completed\",\n        \"metrics\": [\n          {\n            \"key\": \"running\",\n            \"label\": \"Running\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"failed\",\n            \"label\": \"Failed\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"completed\",\n            \"label\": \"Completed\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      },\n      {\n        \"section_id\": \"viewer-sessions\",\n        \"title\": \"Viewer sessions\",\n        \"summary\": \"0 viewers\",\n        \"metrics\": [\n          {\n            \"key\": \"viewers\",\n            \"label\": \"viewers\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"healthy\",\n            \"label\": \"healthy\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"queued_images\",\n            \"label\": \"queued images\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"0fa8f4dfff84364346f766693d10c5f4c76ee2f00b4d51bd092e19e0e5d47e79","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"main_window","schema_version":"openhcs.agent.v1","identity":{"surface_id":"ui_live_overview.state"},"title":"UI live overview","readable":true,"supported_selection_modes":["all"],"current_selection_count":0,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.live_overview_state.v1","payload":{"selection_mode":null,"selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"0fa8f4dfff84364346f766693d10c5f4c76ee2f00b4d51bd092e19e0e5d47e79","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"main_window","schema_version":"openhcs.agent.v1","identity":{"surface_id":"ui_live_overview.state"},"title":"UI live overview","readable":true,"supported_selection_modes":["all"],"current_selection_count":0,"total_scope_count":1},"unchanged":false,"object_state_token":0,"sections":[{"section_id":"pipeline_debug_toolbar.session","title":"Pipeline debug session state","summary":"no_plate","metrics":[{"key":"phase","label":"phase","value":"no_plate"},{"key":"compiled","label":"compiled","value":"False"},{"key":"actions","label":"actions","value":"7"},{"key":"disabled","label":"disabled","value":"7"}],"items":[{"label":"Inspect Runtime","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Debug","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Step","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Run to Pause","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Choose source group","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Stop debug session","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Restart","status":"debug_target_required","detail":"Debug controls require a selected plate.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"}]},{"section_id":"plate_manager.state","title":"Plate manager state","summary":"idle","metrics":[{"key":"plates","label":"plates","value":"0"},{"key":"selected","label":"selected","value":"0"},{"key":"active","label":"active","value":"0"},{"key":"queued","label":"queued","value":"0"}],"items":[]},{"section_id":"plate_manager.live_measurements","title":"Live measurement results","summary":"No live measurement results yet","metrics":[{"key":"tables","label":"tables","value":"0"},{"key":"rows","label":"rows","value":"0"},{"key":"executions","label":"executions","value":"0"}],"items":[]},{"section_id":"qt_top_level.windows","title":"Qt top-level windows","summary":"0 windows","metrics":[{"key":"windows","label":"windows","value":"0"},{"key":"visible","label":"visible","value":"0"},{"key":"error_dialogs","label":"error dialogs","value":"0"}],"items":[]},{"section_id":"main_window.windows","title":"Main window windows","summary":"8 windows","metrics":[{"key":"windows","label":"windows","value":"8"},{"key":"visible","label":"visible","value":"4"},{"key":"error_dialogs","label":"error dialogs","value":"0"}],"items":[{"label":"System Monitor","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"system_monitor","source_widget_id":null},{"label":"Plate Manager","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"plate_manager","source_widget_id":null},{"label":"ZMQ Server Manager","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"zmq_server_manager","source_widget_id":null},{"label":"Pipeline Editor","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"pipeline_editor","source_widget_id":null},{"label":"Image Browser","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"image_browser","source_widget_id":null},{"label":"Log Viewer","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"log_viewer","source_widget_id":null},{"label":"OpenHCS Knowledge Base","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"knowledge_base","source_widget_id":null},{"label":"About OpenHCS","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"about_openhcs","source_widget_id":null}]},{"section_id":"zmq_server_manager","title":"ZMQ Server Manager","summary":"1 servers","metrics":[{"key":"servers","label":"servers","value":"1"},{"key":"ready","label":"ready","value":"1"}],"items":[{"label":"Port 7888 - OpenHCSUiBridgeServer","status":"✅","detail":"","severity":"info","source_surface_id":null,"source_window_id":"zmq_server_manager","source_widget_id":null}]},{"section_id":"ui-bridge-operations","title":"UI bridge operations","summary":"0 running, 0 failed, 0 completed","metrics":[{"key":"running","label":"Running","value":"0"},{"key":"failed","label":"Failed","value":"0"},{"key":"completed","label":"Completed","value":"0"}],"items":[]},{"section_id":"viewer-sessions","title":"Viewer sessions","summary":"0 viewers","metrics":[{"key":"viewers","label":"viewers","value":"0"},{"key":"healthy","label":"healthy","value":"0"},{"key":"queued_images","label":"queued images","value":"0"}],"items":[]}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_9","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"all","clean":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_9","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"all","clean":true},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": null,\n  \"current_revision_token\": \"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"plate_manager.orchestrator_config\"\n    },\n    \"title\": \"Plate manager orchestrator config\",\n    \"readable\": true,\n    \"writable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 0\n  },\n  \"source\": \"# Edit this orchestrator configuration and save to apply changes\\n\\nfrom openhcs.core.config import GlobalPipelineConfig\\n\\nplate_paths = []\\n\\nglobal_config = GlobalPipelineConfig()\\n\\nper_plate_configs = {}\\n\\npipeline_data = {}\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 220,\n  \"sha256\": \"a23bd4158078dd4d75a0f0153ab6afac7eb1863be6e2610c9dfea0d3be3c9a0a\",\n  \"warnings\": [],\n  \"errors\": []\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","schema_version":"openhcs.agent.v1","summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"document_id":"plate_manager.orchestrator_config"},"title":"Plate manager orchestrator config","readable":true,"writable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0},"source":"# Edit this orchestrator configuration and save to apply changes\n\nfrom openhcs.core.config import GlobalPipelineConfig\n\nplate_paths = []\n\nglobal_config = GlobalPipelineConfig()\n\nper_plate_configs = {}\n\npipeline_data = {}","mime_type":"text/x-python","size_bytes":220,"sha256":"a23bd4158078dd4d75a0f0153ab6afac7eb1863be6e2610c9dfea0d3be3c9a0a","warnings":[],"errors":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_10","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","clean":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_10","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","clean":true},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"selected\",\n  \"selected_scope_ids\": [\n    \"pipeline_editor\"\n  ],\n  \"current_snapshot\": null,\n  \"current_revision_token\": \"cb6c13fc818b1758be085cc1d98abe86cd1b303fb99e35ebfcae1f24372e4027\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"pipeline_editor\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"window_code_document:pipeline_editor\"\n    },\n    \"title\": \"Edit Pipeline\",\n    \"readable\": true,\n    \"writable\": true,\n    \"supported_selection_modes\": [],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"source\": \"# OpenHCS pipeline\\n\\nfrom openhcs.core.config import PipelineConfig\\n\\npipeline_config = PipelineConfig()\\n\\npipeline_steps = []\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 123,\n  \"sha256\": \"cb6c13fc818b1758be085cc1d98abe86cd1b303fb99e35ebfcae1f24372e4027\",\n  \"warnings\": [],\n  \"errors\": []\n}"}],"structured_content":{"selection_mode":"selected","selected_scope_ids":["pipeline_editor"],"current_snapshot":null,"current_revision_token":"cb6c13fc818b1758be085cc1d98abe86cd1b303fb99e35ebfcae1f24372e4027","schema_version":"openhcs.agent.v1","summary":{"widget_id":"pipeline_editor","schema_version":"openhcs.agent.v1","identity":{"document_id":"window_code_document:pipeline_editor"},"title":"Edit Pipeline","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":1},"source":"# OpenHCS pipeline\n\nfrom openhcs.core.config import PipelineConfig\n\npipeline_config = PipelineConfig()\n\npipeline_steps = []","mime_type":"text/x-python","size_bytes":123,"sha256":"cb6c13fc818b1758be085cc1d98abe86cd1b303fb99e35ebfcae1f24372e4027","warnings":[],"errors":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_11","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_inspect_plate_path","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","max_files_to_parse":20,"max_sample_files":10,"max_component_values":20},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_inspect_plate_path","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","max_files_to_parse":20,"max_sample_files":10,"max_component_values":20},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n  \"requested_microscope_type\": \"auto\",\n  \"status\": \"ok\",\n  \"confidence\": \"high\",\n  \"available_microscope_types\": [\n    \"bbbc021\",\n    \"bbbc038\",\n    \"bioformats\",\n    \"imagexpress\",\n    \"omero\",\n    \"openhcsdata\",\n    \"opera_phenix\",\n    \"source_bindings\"\n  ],\n  \"detected_microscope_type\": \"bioformats\",\n  \"handler_class\": \"BioFormatsHandler\",\n  \"parser_class\": \"BioFormatsFilenameParser\",\n  \"metadata_handler_class\": \"BioFormatsMetadataHandler\",\n  \"root_dir\": \".\",\n  \"compatible_backends\": [\n    \"bioformats\"\n  ],\n  \"available_backends\": [\n    \"bioformats\"\n  ],\n  \"metadata_file_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n  \"grid_dimensions\": [\n    1,\n    1\n  ],\n  \"pixel_size\": 1.0,\n  \"image_files\": {\n    \"count\": 2,\n    \"sampled_files\": [\n      \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n      \"1%5Fw2.tif_s001_w1_z001_t001.tif\"\n    ],\n    \"sampled_records\": [\n      {\n        \"virtual_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n        \"metadata\": {\n          \"filename\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n          \"virtual_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n          \"type\": \"Image\",\n          \"well\": \"1%5Fw1.tif\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"extension\": \".tif\",\n          \"size\": \"625.1 KB\",\n          \"modified\": \"2026-08-04T17:56:53\"\n        }\n      },\n      {\n        \"virtual_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n        \"metadata\": {\n          \"filename\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n          \"virtual_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n          \"type\": \"Image\",\n          \"well\": \"1%5Fw2.tif\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"extension\": \".tif\",\n          \"size\": \"625.1 KB\",\n          \"modified\": \"2026-08-04T17:56:53\"\n        }\n      }\n    ],\n    \"truncated_file_count\": 0\n  },\n  \"result_files\": {\n    \"count\": 0,\n    \"scanned_file_count\": 0,\n    \"sampled_files\": [],\n    \"sampled_records\": [],\n    \"truncated_file_count\": 0\n  },\n  \"parse_summary\": {\n    \"attempted_file_count\": 2,\n    \"skipped_file_count\": 0,\n    \"parsed_file_count\": 2,\n    \"failed_file_count\": 0,\n    \"failure_samples\": [],\n    \"truncated_failure_count\": 0\n  },\n  \"components\": [\n    {\n      \"component\": \"site\",\n      \"source\": \"metadata_and_parsed_filenames\",\n      \"count\": 1,\n      \"values\": [\n        {\n          \"key\": \"1\",\n          \"label\": null,\n          \"declared_in_metadata\": true,\n          \"observed_in_filenames\": true\n        }\n      ],\n      \"truncated_value_count\": 0\n    },\n    {\n      \"component\": \"channel\",\n      \"source\": \"metadata_and_parsed_filenames\",\n      \"count\": 1,\n      \"values\": [\n        {\n          \"key\": \"1\",\n          \"label\": null,\n          \"declared_in_metadata\": true,\n          \"observed_in_filenames\": true\n        }\n      ],\n      \"truncated_value_count\": 0\n    },\n    {\n      \"component\": \"z_index\",\n      \"source\": \"metadata_and_parsed_filenames\",\n      \"count\": 1,\n      \"values\": [\n        {\n          \"key\": \"1\",\n          \"label\": null,\n          \"declared_in_metadata\": true,\n          \"observed_in_filenames\": true\n        }\n      ],\n      \"truncated_value_count\": 0\n    },\n    {\n      \"component\": \"timepoint\",\n      \"source\": \"metadata_and_parsed_filenames\",\n      \"count\": 1,\n      \"values\": [\n        {\n          \"key\": \"1\",\n          \"label\": null,\n          \"declared_in_metadata\": true,\n          \"observed_in_filenames\": true\n        }\n      ],\n      \"truncated_value_count\": 0\n    },\n    {\n      \"component\": \"well\",\n      \"source\": \"metadata_and_parsed_filenames\",\n      \"count\": 2,\n      \"values\": [\n        {\n          \"key\": \"1%5Fw1.tif\",\n          \"label\": \"1_w1.tif\",\n          \"declared_in_metadata\": true,\n          \"observed_in_filenames\": true\n        },\n        {\n          \"key\": \"1%5Fw2.tif\",\n          \"label\": \"1_w2.tif\",\n          \"declared_in_metadata\": true,\n          \"observed_in_filenames\": true\n        }\n      ],\n      \"truncated_value_count\": 0\n    }\n  ],\n  \"source_diagnostics\": [],\n  \"format_specific_handler_candidates\": [],\n  \"workspace_preparation\": {\n    \"read_only_inspection\": true,\n    \"required_before_execution\": true,\n    \"operation\": \"initialize_workspace\",\n    \"reason\": \"Raw microscope layouts usually need initialize_workspace before execution; this inspection did not mutate the plate.\"\n  },\n  \"workflow_advice\": {\n    \"workflow_scope\": \"diagnostic\",\n    \"ingestion_route\": \"detected_handler\",\n    \"ingestion_owner\": \"bioformats\",\n    \"source_binding_role\": \"semantic_selection\",\n    \"ui_code_document_id\": \"plate_manager.orchestrator_config\",\n    \"ui_operation\": \"init\",\n    \"knowledge_query\": \"source model CZI Bio-Formats source bindings\",\n    \"probable_native_ingestion_owners\": [],\n    \"message\": \"Keep the detected bioformats handler as the ingestion owner. For a visible workflow, add the plate directory through the PlateManager code document and initialize with auto-detection. Use for a supported structured or rich container when no registered format-specific parser recognizes the source layout. A missing native metadata file alone does not make the broad decoder semantically preferable when a format-specific parser recognizes the filenames. SourceBindingsConfig may name or select the planes emitted by this handler; it does not open or replace the detected store.\"\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","requested_microscope_type":"auto","status":"ok","confidence":"high","available_microscope_types":["bbbc021","bbbc038","bioformats","imagexpress","omero","openhcsdata","opera_phenix","source_bindings"],"detected_microscope_type":"bioformats","handler_class":"BioFormatsHandler","parser_class":"BioFormatsFilenameParser","metadata_handler_class":"BioFormatsMetadataHandler","root_dir":".","compatible_backends":["bioformats"],"available_backends":["bioformats"],"metadata_file_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","grid_dimensions":[1,1],"pixel_size":1.0,"image_files":{"count":2,"sampled_files":["1%5Fw1.tif_s001_w1_z001_t001.tif","1%5Fw2.tif_s001_w1_z001_t001.tif"],"sampled_records":[{"virtual_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","metadata":{"filename":"1%5Fw1.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","type":"Image","well":"1%5Fw1.tif","site":1,"channel":1,"z_index":1,"timepoint":1,"extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"}},{"virtual_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","metadata":{"filename":"1%5Fw2.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","type":"Image","well":"1%5Fw2.tif","site":1,"channel":1,"z_index":1,"timepoint":1,"extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"}}],"truncated_file_count":0},"result_files":{"count":0,"scanned_file_count":0,"sampled_files":[],"sampled_records":[],"truncated_file_count":0},"parse_summary":{"attempted_file_count":2,"skipped_file_count":0,"parsed_file_count":2,"failed_file_count":0,"failure_samples":[],"truncated_failure_count":0},"components":[{"component":"site","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"channel","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"z_index","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"timepoint","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"well","source":"metadata_and_parsed_filenames","count":2,"values":[{"key":"1%5Fw1.tif","label":"1_w1.tif","declared_in_metadata":true,"observed_in_filenames":true},{"key":"1%5Fw2.tif","label":"1_w2.tif","declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0}],"source_diagnostics":[],"format_specific_handler_candidates":[],"workspace_preparation":{"read_only_inspection":true,"required_before_execution":true,"operation":"initialize_workspace","reason":"Raw microscope layouts usually need initialize_workspace before execution; this inspection did not mutate the plate."},"workflow_advice":{"workflow_scope":"diagnostic","ingestion_route":"detected_handler","ingestion_owner":"bioformats","source_binding_role":"semantic_selection","ui_code_document_id":"plate_manager.orchestrator_config","ui_operation":"init","knowledge_query":"source model CZI Bio-Formats source bindings","probable_native_ingestion_owners":[],"message":"Keep the detected bioformats handler as the ingestion owner. For a visible workflow, add the plate directory through the PlateManager code document and initialize with auto-detection. Use for a supported structured or rich container when no registered format-specific parser recognizes the source layout. A missing native metadata file alone does not make the broad decoder semantically preferable when a format-specific parser recognizes the filenames. SourceBindingsConfig may name or select the planes emitted by this handler; it does not open or replace the detected store."}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_12","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_query_plate_files","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","kind":"all","limit":20,"include_previews":true,"max_preview_lines":30},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_query_plate_files","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","kind":"all","limit":20,"include_previews":true,"max_preview_lines":30},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n  \"requested_microscope_type\": \"auto\",\n  \"detected_microscope_type\": \"bioformats\",\n  \"handler_class\": \"BioFormatsHandler\",\n  \"parser_class\": \"BioFormatsFilenameParser\",\n  \"total_count\": 2,\n  \"returned_count\": 2,\n  \"offset\": 0,\n  \"limit\": 20,\n  \"truncated_count\": 0,\n  \"records\": [\n    {\n      \"kind\": \"image\",\n      \"key\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n      \"metadata\": {\n        \"filename\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n        \"virtual_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n        \"type\": \"Image\",\n        \"well\": \"1%5Fw1.tif\",\n        \"site\": 1,\n        \"channel\": 1,\n        \"z_index\": 1,\n        \"timepoint\": 1,\n        \"extension\": \".tif\",\n        \"size\": \"625.1 KB\",\n        \"modified\": \"2026-08-04T17:56:53\"\n      },\n      \"virtual_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n      \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif\",\n      \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n      \"relative_path\": null,\n      \"full_path\": null,\n      \"file_format\": null,\n      \"preview\": null\n    },\n    {\n      \"kind\": \"image\",\n      \"key\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n      \"metadata\": {\n        \"filename\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n        \"virtual_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n        \"type\": \"Image\",\n        \"well\": \"1%5Fw2.tif\",\n        \"site\": 1,\n        \"channel\": 1,\n        \"z_index\": 1,\n        \"timepoint\": 1,\n        \"extension\": \".tif\",\n        \"size\": \"625.1 KB\",\n        \"modified\": \"2026-08-04T17:56:53\"\n      },\n      \"virtual_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n      \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif\",\n      \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n      \"relative_path\": null,\n      \"full_path\": null,\n      \"file_format\": null,\n      \"preview\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","requested_microscope_type":"auto","detected_microscope_type":"bioformats","handler_class":"BioFormatsHandler","parser_class":"BioFormatsFilenameParser","total_count":2,"returned_count":2,"offset":0,"limit":20,"truncated_count":0,"records":[{"kind":"image","key":"1%5Fw1.tif_s001_w1_z001_t001.tif","metadata":{"filename":"1%5Fw1.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","type":"Image","well":"1%5Fw1.tif","site":1,"channel":1,"z_index":1,"timepoint":1,"extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"},"virtual_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","relative_path":null,"full_path":null,"file_format":null,"preview":null},{"kind":"image","key":"1%5Fw2.tif_s001_w1_z001_t001.tif","metadata":{"filename":"1%5Fw2.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","type":"Image","well":"1%5Fw2.tif","site":1,"channel":1,"z_index":1,"timepoint":1,"extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"},"virtual_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","relative_path":null,"full_path":null,"file_format":null,"preview":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_13","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_sample_plate_image","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","image_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","width":256,"height":256,"include_array_values":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_sample_plate_image","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","image_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","width":256,"height":256,"include_array_values":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n  \"requested_image_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n  \"virtual_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n  \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif\",\n  \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n  \"source_metadata\": {\n    \"filename\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n    \"virtual_path\": \"1%5Fw1.tif_s001_w1_z001_t001.tif\",\n    \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif\",\n    \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n    \"type\": \"Image\",\n    \"well\": \"1%5Fw1.tif\",\n    \"site\": 1,\n    \"channel\": 1,\n    \"z_index\": 1,\n    \"timepoint\": 1,\n    \"extension\": \".tif\",\n    \"size\": \"625.1 KB\",\n    \"modified\": \"2026-08-04T17:56:53\"\n  },\n  \"shape\": [\n    800,\n    800\n  ],\n  \"resolution_shape\": [\n    800,\n    800\n  ],\n  \"dtype\": \"uint8\",\n  \"minimum\": 0,\n  \"maximum\": 255,\n  \"mean\": 5.506578125,\n  \"requested_resolution_index\": null,\n  \"selected_resolution_index\": 0,\n  \"resolution_count\": 1,\n  \"downsample_yx\": [\n    1.0,\n    1.0\n  ],\n  \"statistics_scope\": \"source_resolution\",\n  \"sample_origin_yx\": [\n    0,\n    0\n  ],\n  \"sample_shape\": [\n    256,\n    256\n  ],\n  \"sample_included\": false,\n  \"sample_values\": [],\n  \"sample_omitted_reason\": \"include_array_values is false\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","requested_image_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","source_metadata":{"filename":"1%5Fw1.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw1.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw1.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","type":"Image","well":"1%5Fw1.tif","site":1,"channel":1,"z_index":1,"timepoint":1,"extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"},"shape":[800,800],"resolution_shape":[800,800],"dtype":"uint8","minimum":0,"maximum":255,"mean":5.506578125,"requested_resolution_index":null,"selected_resolution_index":0,"resolution_count":1,"downsample_yx":[1.0,1.0],"statistics_scope":"source_resolution","sample_origin_yx":[0,0],"sample_shape":[256,256],"sample_included":false,"sample_values":[],"sample_omitted_reason":"include_array_values is false"}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_sample_plate_image","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","image_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","width":256,"height":256,"include_array_values":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_sample_plate_image","arguments":{"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","image_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","width":256,"height":256,"include_array_values":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n  \"requested_image_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n  \"virtual_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n  \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif\",\n  \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n  \"source_metadata\": {\n    \"filename\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n    \"virtual_path\": \"1%5Fw2.tif_s001_w1_z001_t001.tif\",\n    \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif\",\n    \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n    \"type\": \"Image\",\n    \"well\": \"1%5Fw2.tif\",\n    \"site\": 1,\n    \"channel\": 1,\n    \"z_index\": 1,\n    \"timepoint\": 1,\n    \"extension\": \".tif\",\n    \"size\": \"625.1 KB\",\n    \"modified\": \"2026-08-04T17:56:53\"\n  },\n  \"shape\": [\n    800,\n    800\n  ],\n  \"resolution_shape\": [\n    800,\n    800\n  ],\n  \"dtype\": \"uint8\",\n  \"minimum\": 0,\n  \"maximum\": 255,\n  \"mean\": 4.2635296875,\n  \"requested_resolution_index\": null,\n  \"selected_resolution_index\": 0,\n  \"resolution_count\": 1,\n  \"downsample_yx\": [\n    1.0,\n    1.0\n  ],\n  \"statistics_scope\": \"source_resolution\",\n  \"sample_origin_yx\": [\n    0,\n    0\n  ],\n  \"sample_shape\": [\n    256,\n    256\n  ],\n  \"sample_included\": false,\n  \"sample_values\": [],\n  \"sample_omitted_reason\": \"include_array_values is false\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","requested_image_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","source_metadata":{"filename":"1%5Fw2.tif_s001_w1_z001_t001.tif","virtual_path":"1%5Fw2.tif_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1%5Fw2.tif_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","type":"Image","well":"1%5Fw2.tif","site":1,"channel":1,"z_index":1,"timepoint":1,"extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"},"shape":[800,800],"resolution_shape":[800,800],"dtype":"uint8","minimum":0,"maximum":255,"mean":4.2635296875,"requested_resolution_index":null,"selected_resolution_index":0,"resolution_count":1,"downsample_yx":[1.0,1.0],"statistics_scope":"source_resolution","sample_origin_yx":[0,0],"sample_shape":[256,256],"sample_included":false,"sample_values":[],"sample_omitted_reason":"include_array_values is false"}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_15","type":"agent_message","text":"The source model is confirmed: two 800×800 uint8 Bio-Formats planes, each with native channel 1 and separate filename-derived wells (`1_w1.tif`, `1_w2.tif`). I’ll preserve Bio-Formats ingestion and apply Source Bindings only as the semantic projection so both map to biological well/image 1 while W1→channel 1 and W2→channel 2, retaining both physical source paths."}}
{"type":"item.started","item":{"id":"item_16","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"neurite outgrowth neuron nuclei cell body spatial graph SWC morphology measurements source bindings preset"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_16","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"neurite outgrowth neuron nuclei cell body spatial graph SWC morphology measurements source bindings preset"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"neurite outgrowth neuron nuclei cell body spatial graph SWC morphology measurements source bindings preset\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 623,\n      \"snippet\": \"Source path: openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n      \"score\": 120,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"preset\",\n        \"neuron\",\n        \"cell\",\n        \"body\",\n        \"measurements\",\n        \"source\",\n        \"bindings\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 1111,\n          \"end_line\": 1233\n        }\n      },\n      \"line_number\": 1114,\n      \"snippet\": \"Source path: openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py\",\n      \"score\": 110,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"preset\",\n        \"nuclei\",\n        \"cell\",\n        \"body\",\n        \"source\",\n        \"bindings\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"loose-opera-phenix-neurite-outgrowth\",\n        \"title\": \"Loose Opera Phenix neurite outgrowth\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 70,\n          \"end_line\": 97\n        }\n      },\n      \"line_number\": 73,\n      \"snippet\": \"``openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py``\",\n      \"score\": 110,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"neuron\",\n        \"cell\",\n        \"body\",\n        \"measurements\",\n        \"source\",\n        \"bindings\",\n        \"preset\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_viewer_management\",\n        \"title\": \"OpenHCS viewer management\",\n        \"summary\": \"How to inspect images in Napari and Fiji, image browser streaming, hyperstacks, viewer instance management, and troubleshooting.\",\n        \"source_path\": \"docs/source/guides/viewer_management.rst\",\n        \"tags\": [\n          \"Napari\",\n          \"Fiji\",\n          \"viewer\",\n          \"image browser\",\n          \"hyperstack\",\n          \"inspection\"\n        ],\n        \"section_count\": 7\n      },\n      \"section\": {\n        \"section_id\": \"spatial-graphs-and-neuronal-morphology\",\n        \"title\": \"Spatial graphs and neuronal morphology\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 97,\n          \"end_line\": 148\n        }\n      },\n      \"line_number\": 97,\n      \"snippet\": \"Spatial graphs and neuronal morphology\",\n      \"score\": 100,\n      \"matched_terms\": [\n        \"neuron\",\n        \"spatial\",\n        \"graph\",\n        \"morphology\",\n        \"swc\",\n        \"measurements\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"native-openhcs-examples\",\n        \"title\": \"Native OpenHCS Examples\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 61,\n          \"end_line\": 115\n        }\n      },\n      \"line_number\": 76,\n      \"snippet\": \"``openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py``.\",\n      \"score\": 90,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"neuron\",\n        \"cell\",\n        \"body\",\n        \"measurements\",\n        \"source\",\n        \"bindings\",\n        \"preset\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"operator-workflow\",\n        \"title\": \"Operator Workflow\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 116,\n          \"end_line\": 136\n        }\n      },\n      \"line_number\": 126,\n      \"snippet\": \"quality control, neurite outgrowth, worm analysis, wound healing, or\",\n      \"score\": 70,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"nuclei\",\n        \"cell\",\n        \"measurements\",\n        \"source\",\n        \"preset\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_image_sources\",\n        \"title\": \"Loading and naming image sources\",\n        \"summary\": \"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.\",\n        \"source_path\": \"docs/source/guide_for_biologists/image_sources.rst\",\n        \"tags\": [\n          \"loading CZI\",\n          \"CZI\",\n          \"OME-TIFF\",\n          \"OME-Zarr\",\n          \"NGFF\",\n          \"TIFF\",\n          \"PNG\",\n          \"mixed image stores\",\n          \"named source bindings\",\n          \"named channels\",\n          \"component metadata\",\n          \"well site channel Z timepoint\",\n          \"source provenance\"\n        ],\n        \"section_count\": 7\n      },\n      \"section\": {\n        \"section_id\": \"binding-positions-are-not-microscope-channel-values\",\n        \"title\": \"Binding positions are not microscope channel values\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 88,\n          \"end_line\": 179\n        }\n      },\n      \"line_number\": 94,\n      \"snippet\": \"``PipelineConfig.source_bindings_config`` declares the full named physical\",\n      \"score\": 70,\n      \"matched_terms\": [\n        \"bindings\",\n        \"neurite\",\n        \"neuron\",\n        \"cell\",\n        \"body\",\n        \"source\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": null,\n      \"line_number\": null,\n      \"snippet\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n      \"score\": 60,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"nuclei\",\n        \"cell\",\n        \"source\",\n        \"preset\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"master-multi-plate-lab-meeting-showcase\",\n        \"title\": \"Master multi-plate lab-meeting showcase\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 98,\n          \"end_line\": 167\n        }\n      },\n      \"line_number\": 140,\n      \"snippet\": \"--contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution\",\n      \"score\": 60,\n      \"matched_terms\": [\n        \"neurite\",\n        \"outgrowth\",\n        \"neuron\",\n        \"morphology\",\n        \"source\",\n        \"preset\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_cellprofiler_interop\",\n        \"title\": \"OpenHCS CellProfiler interoperability\",\n        \"summary\": \"Canonical .cppipe lowering through CellProfilerModule declarations, compatibility evidence levels, runtime parity boundaries, and concrete SQLite plus CellProfiler Analyst properties export.\",\n        \"source_path\": \"docs/source/architecture/cellprofiler_interop.rst\",\n        \"tags\": [\n          \"CellProfiler\",\n          \"cppipe\",\n          \"CellProfilerModule\",\n          \"lowering\",\n          \"interop\",\n          \"parity\",\n          \"CellProfiler Analyst\",\n          \"CPA\",\n          \"ExportToDatabase\",\n          \"SQLite\",\n          \"properties\",\n          \"ExportToSpreadsheet\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"artifacts-and-exports\",\n        \"title\": \"Artifacts and exports\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 171,\n          \"end_line\": 186\n        }\n      },\n      \"line_number\": 179,\n      \"snippet\": \"labels, measurements, object lineage and relationships, tables, spatial grids,\",\n      \"score\": 60,\n      \"matched_terms\": [\n        \"cell\",\n        \"spatial\",\n        \"graph\",\n        \"measurements\",\n        \"source\",\n        \"bindings\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"neurite outgrowth neuron nuclei cell body spatial graph SWC morphology measurements source bindings preset","hits":[{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":623,"snippet":"Source path: openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","score":120,"matched_terms":["neurite","outgrowth","preset","neuron","cell","body","measurements","source","bindings"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py","level":2,"span":{"start_line":1111,"end_line":1233}},"line_number":1114,"snippet":"Source path: openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py","score":110,"matched_terms":["neurite","outgrowth","preset","nuclei","cell","body","source","bindings"]},{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"loose-opera-phenix-neurite-outgrowth","title":"Loose Opera Phenix neurite outgrowth","level":2,"span":{"start_line":70,"end_line":97}},"line_number":73,"snippet":"``openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py``","score":110,"matched_terms":["neurite","outgrowth","neuron","cell","body","measurements","source","bindings","preset"]},{"document":{"document_id":"openhcs_viewer_management","title":"OpenHCS viewer management","summary":"How to inspect images in Napari and Fiji, image browser streaming, hyperstacks, viewer instance management, and troubleshooting.","source_path":"docs/source/guides/viewer_management.rst","tags":["Napari","Fiji","viewer","image browser","hyperstack","inspection"],"section_count":7},"section":{"section_id":"spatial-graphs-and-neuronal-morphology","title":"Spatial graphs and neuronal morphology","level":2,"span":{"start_line":97,"end_line":148}},"line_number":97,"snippet":"Spatial graphs and neuronal morphology","score":100,"matched_terms":["neuron","spatial","graph","morphology","swc","measurements"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"native-openhcs-examples","title":"Native OpenHCS Examples","level":2,"span":{"start_line":61,"end_line":115}},"line_number":76,"snippet":"``openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py``.","score":90,"matched_terms":["neurite","outgrowth","neuron","cell","body","measurements","source","bindings","preset"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"operator-workflow","title":"Operator Workflow","level":2,"span":{"start_line":116,"end_line":136}},"line_number":126,"snippet":"quality control, neurite outgrowth, worm analysis, wound healing, or","score":70,"matched_terms":["neurite","outgrowth","nuclei","cell","measurements","source","preset"]},{"document":{"document_id":"openhcs_image_sources","title":"Loading and naming image sources","summary":"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.","source_path":"docs/source/guide_for_biologists/image_sources.rst","tags":["loading CZI","CZI","OME-TIFF","OME-Zarr","NGFF","TIFF","PNG","mixed image stores","named source bindings","named channels","component metadata","well site channel Z timepoint","source provenance"],"section_count":7},"section":{"section_id":"binding-positions-are-not-microscope-channel-values","title":"Binding positions are not microscope channel values","level":2,"span":{"start_line":88,"end_line":179}},"line_number":94,"snippet":"``PipelineConfig.source_bindings_config`` declares the full named physical","score":70,"matched_terms":["bindings","neurite","neuron","cell","body","source"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":null,"line_number":null,"snippet":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","score":60,"matched_terms":["neurite","outgrowth","nuclei","cell","source","preset"]},{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"master-multi-plate-lab-meeting-showcase","title":"Master multi-plate lab-meeting showcase","level":2,"span":{"start_line":98,"end_line":167}},"line_number":140,"snippet":"--contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution","score":60,"matched_terms":["neurite","outgrowth","neuron","morphology","source","preset"]},{"document":{"document_id":"openhcs_cellprofiler_interop","title":"OpenHCS CellProfiler interoperability","summary":"Canonical .cppipe lowering through CellProfilerModule declarations, compatibility evidence levels, runtime parity boundaries, and concrete SQLite plus CellProfiler Analyst properties export.","source_path":"docs/source/architecture/cellprofiler_interop.rst","tags":["CellProfiler","cppipe","CellProfilerModule","lowering","interop","parity","CellProfiler Analyst","CPA","ExportToDatabase","SQLite","properties","ExportToSpreadsheet"],"section_count":15},"section":{"section_id":"artifacts-and-exports","title":"Artifacts and exports","level":2,"span":{"start_line":171,"end_line":186}},"line_number":179,"snippet":"labels, measurements, object lineage and relationships, tables, spatial grids,","score":60,"matched_terms":["cell","spatial","graph","measurements","source","bindings"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_17","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neurite","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_17","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neurite","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 4,\n  \"limit\": 30,\n  \"query\": \"neurite\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]}],"total":4,"limit":30,"query":"neurite","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_18","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"spatial graph","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"spatial graph","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.spatial_bin_2d\",\n      \"function_id\": \"openhcs:processors_numpy_processor_spatial_bin_2d\",\n      \"name\": \"spatial_bin_2d\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"spatial_bin_2d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply 2D spatial binning to each slice in the stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.spatial_bin_3d\",\n      \"function_id\": \"openhcs:processors_numpy_processor_spatial_bin_3d\",\n      \"name\": \"spatial_bin_3d\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"spatial_bin_3d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply 3D spatial binning to the entire stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.define_grid_automatic\",\n      \"function_id\": \"openhcs:cellprofiler_define_grid_automatic\",\n      \"name\": \"define_grid_automatic\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"define_grid_automatic(grid_rows, grid_columns, origin, ordering, ...)\",\n      \"summary\": \"Define a CellProfiler grid from object-label centroid extrema.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.define_grid_manual\",\n      \"function_id\": \"openhcs:cellprofiler_define_grid_manual\",\n      \"name\": \"define_grid_manual\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"define_grid_manual(grid_rows, grid_columns, first_spot_x, first_spot_y, ...)\",\n      \"summary\": \"Define a CellProfiler grid manually from two spot references.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.worms.identify_dead_worms\",\n      \"function_id\": \"openhcs:cellprofiler_identify_dead_worms\",\n      \"name\": \"identify_dead_worms\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.worms\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_dead_worms(worm_width, worm_length, angle_count, auto_distance, ...)\",\n      \"summary\": \"Identify straight dead worms by diamond-template matches across angles.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.identify_objects_in_grid\",\n      \"function_id\": \"openhcs:cellprofiler_identify_objects_in_grid\",\n      \"name\": \"identify_objects_in_grid\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_objects_in_grid(grid_rows, grid_columns, x_spacing, y_spacing, ...)\",\n      \"summary\": \"Identify objects within each section of a grid pattern.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_geometry.mask_image\",\n      \"function_id\": \"openhcs:cellprofiler_mask_image\",\n      \"name\": \"mask_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_geometry\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Mask an image using CellProfiler image/object mask semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.mask_objects\",\n      \"function_id\": \"openhcs:cellprofiler_mask_objects\",\n      \"name\": \"mask_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)\",\n      \"summary\": \"Mask object labels while preserving OpenHCS object-label domain semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.match_template\",\n      \"function_id\": \"openhcs:cellprofiler_match_template\",\n      \"name\": \"match_template\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"match_template(template=None, pad_input=True, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Match an image template using normalized cross-correlation.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_quality\",\n      \"name\": \"measure_image_quality\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_quality\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible image-quality metrics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.tophat\",\n      \"function_id\": \"openhcs:processors_numpy_processor_tophat\",\n      \"name\": \"tophat\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"tophat(selem_radius, downsample_factor, downsample_anti_aliasing, upsample_order, ...)\",\n      \"summary\": \"Apply white top-hat background subtraction to each image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy\",\n      \"function_id\": \"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy\",\n      \"name\": \"basic_flatfield_correction_numpy\",\n      \"module\": \"openhcs.processing.backends.enhance.basic_processor_numpy\",\n      \"library\": \"openhcs\",\n      \"signature\": \"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)\",\n      \"summary\": \"Correct a shared illumination field with low-rank and sparse decomposition.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"enhance\",\n        \"basic_processor_numpy\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_calculate\",\n      \"name\": \"correct_illumination_calculate\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)\",\n      \"summary\": \"Estimate a smooth illumination correction function from image data.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.skeletonize_and_save.skeletonize_and_save\",\n      \"function_id\": \"openhcs:analysis_skeletonize_and_save_skeletonize_and_save\",\n      \"name\": \"skeletonize_and_save\",\n      \"module\": \"openhcs.processing.backends.analysis.skeletonize_and_save\",\n      \"library\": \"openhcs\",\n      \"signature\": \"skeletonize_and_save(threshold=None, min_component_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]\",\n      \"summary\": \"Skeletonize each image plane and emit CSV measurements and labeled ROIs.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"skeletonize_and_save\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    }\n  ],\n  \"total\": 17,\n  \"limit\": 30,\n  \"query\": \"spatial graph\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.spatial_bin_2d","function_id":"openhcs:processors_numpy_processor_spatial_bin_2d","name":"spatial_bin_2d","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"spatial_bin_2d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray","summary":"Apply 2D spatial binning to each slice in the stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.spatial_bin_3d","function_id":"openhcs:processors_numpy_processor_spatial_bin_3d","name":"spatial_bin_3d","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"spatial_bin_3d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray","summary":"Apply 3D spatial binning to the entire stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.define_grid_automatic","function_id":"openhcs:cellprofiler_define_grid_automatic","name":"define_grid_automatic","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"define_grid_automatic(grid_rows, grid_columns, origin, ordering, ...)","summary":"Define a CellProfiler grid from object-label centroid extrema.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.define_grid_manual","function_id":"openhcs:cellprofiler_define_grid_manual","name":"define_grid_manual","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"define_grid_manual(grid_rows, grid_columns, first_spot_x, first_spot_y, ...)","summary":"Define a CellProfiler grid manually from two spot references.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.worms.identify_dead_worms","function_id":"openhcs:cellprofiler_identify_dead_worms","name":"identify_dead_worms","module":"openhcs.processing.backends.cellprofiler.worms","library":"openhcs","signature":"identify_dead_worms(worm_width, worm_length, angle_count, auto_distance, ...)","summary":"Identify straight dead worms by diamond-template matches across angles.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.identify_objects_in_grid","function_id":"openhcs:cellprofiler_identify_objects_in_grid","name":"identify_objects_in_grid","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"identify_objects_in_grid(grid_rows, grid_columns, x_spacing, y_spacing, ...)","summary":"Identify objects within each section of a grid pattern.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_geometry.mask_image","function_id":"openhcs:cellprofiler_mask_image","name":"mask_image","module":"openhcs.processing.backends.cellprofiler.image_geometry","library":"openhcs","signature":"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray","summary":"Mask an image using CellProfiler image/object mask semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.mask_objects","function_id":"openhcs:cellprofiler_mask_objects","name":"mask_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)","summary":"Mask object labels while preserving OpenHCS object-label domain semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.match_template","function_id":"openhcs:cellprofiler_match_template","name":"match_template","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"match_template(template=None, pad_input=True, *, enabled=True) -> numpy.ndarray","summary":"Match an image template using normalized cross-correlation.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality","function_id":"openhcs:cellprofiler_measure_image_quality","name":"measure_image_quality","module":"openhcs.processing.backends.cellprofiler.image_quality","library":"openhcs","signature":"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)","summary":"Measure CellProfiler-compatible image-quality metrics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.tophat","function_id":"openhcs:processors_numpy_processor_tophat","name":"tophat","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"tophat(selem_radius, downsample_factor, downsample_anti_aliasing, upsample_order, ...)","summary":"Apply white top-hat background subtraction to each image plane.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy","function_id":"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy","name":"basic_flatfield_correction_numpy","module":"openhcs.processing.backends.enhance.basic_processor_numpy","library":"openhcs","signature":"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)","summary":"Correct a shared illumination field with low-rank and sparse decomposition.","backend_tags":["openhcs","enhance","basic_processor_numpy"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate","function_id":"openhcs:cellprofiler_correct_illumination_calculate","name":"correct_illumination_calculate","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)","summary":"Estimate a smooth illumination correction function from image data.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.skeletonize_and_save.skeletonize_and_save","function_id":"openhcs:analysis_skeletonize_and_save_skeletonize_and_save","name":"skeletonize_and_save","module":"openhcs.processing.backends.analysis.skeletonize_and_save","library":"openhcs","signature":"skeletonize_and_save(threshold=None, min_component_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]","summary":"Skeletonize each image plane and emit CSV measurements and labeled ROIs.","backend_tags":["openhcs","analysis","skeletonize_and_save"]},{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]}],"total":17,"limit":30,"query":"spatial graph","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_19","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"SWC","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_19","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"SWC","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    }\n  ],\n  \"total\": 1,\n  \"limit\": 30,\n  \"query\": \"SWC\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]}],"total":1,"limit":30,"query":"SWC","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_20","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"source bindings","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_20","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"source bindings","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.crop.crop\",\n      \"function_id\": \"openhcs:cellprofiler_crop\",\n      \"name\": \"crop\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.crop\",\n      \"library\": \"openhcs\",\n      \"signature\": \"crop(crop_shape, cropping_method, removal_method, left_right_rectangle_positions, ...)\",\n      \"summary\": \"Crop an image and return its CellProfiler crop-mask sidecar.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_scatter_plot\",\n      \"function_id\": \"openhcs:cellprofiler_display_scatter_plot\",\n      \"name\": \"display_scatter_plot\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_scatter_plot(x_source, x_object_name, x_measurement_feature, y_source, ...)\",\n      \"summary\": \"Extract scatter plot data from two measurement arrays.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.flagging.flag_image\",\n      \"function_id\": \"openhcs:cellprofiler_flag_image\",\n      \"name\": \"flag_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.flagging\",\n      \"library\": \"openhcs\",\n      \"signature\": \"flag_image(flag_categories, flag_names, combination_choices, wants_skip, ...)\",\n      \"summary\": \"Emit one exact integer image measurement for every repeated flag.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.color.gray_to_color\",\n      \"function_id\": \"openhcs:cellprofiler_gray_to_color\",\n      \"name\": \"gray_to_color\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.color\",\n      \"library\": \"openhcs\",\n      \"signature\": \"gray_to_color(color_scheme, rescale_intensity, red_channel, green_channel, ...)\",\n      \"summary\": \"Dispatch GrayToColor across its RGB, CMYK, Stack, and Composite variants.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_geometry.mask_image\",\n      \"function_id\": \"openhcs:cellprofiler_mask_image\",\n      \"name\": \"mask_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_geometry\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Mask an image using CellProfiler image/object mask semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.mask_objects\",\n      \"function_id\": \"openhcs:cellprofiler_mask_objects\",\n      \"name\": \"mask_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)\",\n      \"summary\": \"Mask object labels while preserving OpenHCS object-label domain semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization\",\n      \"name\": \"measure_colocalization\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)\",\n      \"summary\": \"Measure colocalization between two channels from an N-channel image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization_objects\",\n      \"name\": \"measure_colocalization_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)\",\n      \"summary\": \"Measure image and/or object colocalization through one declared callable.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity_distribution.measure_object_intensity_distribution\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_intensity_distribution\",\n      \"name\": \"measure_object_intensity_distribution\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity_distribution\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_intensity_distribution(bin_count, wants_scaled, maximum_radius, wants_zernikes, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible object intensity distribution rows.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.shape.measure_object_size_shape\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_size_shape\",\n      \"name\": \"measure_object_size_shape\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.shape\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_size_shape(calculate_advanced, calculate_zernikes, shape_backend_provider, zernike_backend_provider, ...)\",\n      \"summary\": \"Measure CellProfiler AreaShape rows for labeled objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.outlines.overlay_outlines\",\n      \"function_id\": \"openhcs:cellprofiler_overlay_outlines\",\n      \"name\": \"overlay_outlines\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.outlines\",\n      \"library\": \"openhcs\",\n      \"signature\": \"overlay_outlines(blank_image, display_mode, line_mode, max_type, ...)\",\n      \"summary\": \"Overlay object-derived or image-derived outlines onto one output image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.rescale_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_rescale_intensity\",\n      \"name\": \"rescale_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"rescale_intensity(rescale_method, automatic_low, automatic_high, source_low, ...)\",\n      \"summary\": \"Rescale CellProfiler image intensity using its declared range policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.gaussian_filter.gaussian_filter\",\n      \"function_id\": \"openhcs:cellprofiler_gaussian_filter\",\n      \"name\": \"gaussian_filter\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.gaussian_filter\",\n      \"library\": \"openhcs\",\n      \"signature\": \"gaussian_filter(sigma=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible Gaussian smoothing to an image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 14,\n  \"limit\": 30,\n  \"query\": \"source bindings\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.cellprofiler.crop.crop","function_id":"openhcs:cellprofiler_crop","name":"crop","module":"openhcs.processing.backends.cellprofiler.crop","library":"openhcs","signature":"crop(crop_shape, cropping_method, removal_method, left_right_rectangle_positions, ...)","summary":"Crop an image and return its CellProfiler crop-mask sidecar.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_scatter_plot","function_id":"openhcs:cellprofiler_display_scatter_plot","name":"display_scatter_plot","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_scatter_plot(x_source, x_object_name, x_measurement_feature, y_source, ...)","summary":"Extract scatter plot data from two measurement arrays.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.flagging.flag_image","function_id":"openhcs:cellprofiler_flag_image","name":"flag_image","module":"openhcs.processing.backends.cellprofiler.flagging","library":"openhcs","signature":"flag_image(flag_categories, flag_names, combination_choices, wants_skip, ...)","summary":"Emit one exact integer image measurement for every repeated flag.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.color.gray_to_color","function_id":"openhcs:cellprofiler_gray_to_color","name":"gray_to_color","module":"openhcs.processing.backends.cellprofiler.color","library":"openhcs","signature":"gray_to_color(color_scheme, rescale_intensity, red_channel, green_channel, ...)","summary":"Dispatch GrayToColor across its RGB, CMYK, Stack, and Composite variants.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_geometry.mask_image","function_id":"openhcs:cellprofiler_mask_image","name":"mask_image","module":"openhcs.processing.backends.cellprofiler.image_geometry","library":"openhcs","signature":"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray","summary":"Mask an image using CellProfiler image/object mask semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.mask_objects","function_id":"openhcs:cellprofiler_mask_objects","name":"mask_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)","summary":"Mask object labels while preserving OpenHCS object-label domain semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization","function_id":"openhcs:cellprofiler_measure_colocalization","name":"measure_colocalization","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)","summary":"Measure colocalization between two channels from an N-channel image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects","function_id":"openhcs:cellprofiler_measure_colocalization_objects","name":"measure_colocalization_objects","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)","summary":"Measure image and/or object colocalization through one declared callable.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity_distribution.measure_object_intensity_distribution","function_id":"openhcs:cellprofiler_measure_object_intensity_distribution","name":"measure_object_intensity_distribution","module":"openhcs.processing.backends.cellprofiler.intensity_distribution","library":"openhcs","signature":"measure_object_intensity_distribution(bin_count, wants_scaled, maximum_radius, wants_zernikes, ...)","summary":"Measure CellProfiler-compatible object intensity distribution rows.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.shape.measure_object_size_shape","function_id":"openhcs:cellprofiler_measure_object_size_shape","name":"measure_object_size_shape","module":"openhcs.processing.backends.cellprofiler.shape","library":"openhcs","signature":"measure_object_size_shape(calculate_advanced, calculate_zernikes, shape_backend_provider, zernike_backend_provider, ...)","summary":"Measure CellProfiler AreaShape rows for labeled objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.outlines.overlay_outlines","function_id":"openhcs:cellprofiler_overlay_outlines","name":"overlay_outlines","module":"openhcs.processing.backends.cellprofiler.outlines","library":"openhcs","signature":"overlay_outlines(blank_image, display_mode, line_mode, max_type, ...)","summary":"Overlay object-derived or image-derived outlines onto one output image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.rescale_intensity","function_id":"openhcs:cellprofiler_rescale_intensity","name":"rescale_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"rescale_intensity(rescale_method, automatic_low, automatic_high, source_low, ...)","summary":"Rescale CellProfiler image intensity using its declared range policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.gaussian_filter.gaussian_filter","function_id":"openhcs:cellprofiler_gaussian_filter","name":"gaussian_filter","module":"openhcs.processing.backends.cellprofiler.gaussian_filter","library":"openhcs","signature":"gaussian_filter(sigma=1.0, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible Gaussian smoothing to an image.","backend_tags":["openhcs","cellprofiler"]}],"total":14,"limit":30,"query":"source bindings","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_21","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"normalize intensity","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_21","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"normalize intensity","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.percentile_normalize\",\n      \"function_id\": \"openhcs:processors_numpy_processor_percentile_normalize\",\n      \"name\": \"percentile_normalize\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)\",\n      \"summary\": \"Normalize each plane independently using percentile-based contrast stretching.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.stack_percentile_normalize\",\n      \"function_id\": \"openhcs:processors_numpy_processor_stack_percentile_normalize\",\n      \"name\": \"stack_percentile_normalize\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"stack_percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)\",\n      \"summary\": \"Normalize a stack using global percentile-based contrast stretching.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.thresholding.threshold\",\n      \"function_id\": \"openhcs:cellprofiler_threshold\",\n      \"name\": \"threshold\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.thresholding\",\n      \"library\": \"openhcs\",\n      \"signature\": \"threshold(mask, threshold_scope, threshold_method, assign_middle_to_foreground, ...)\",\n      \"summary\": \"Apply CP-compatible thresholding and emit the module measurement row.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy\",\n      \"function_id\": \"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy\",\n      \"name\": \"basic_flatfield_correction_numpy\",\n      \"module\": \"openhcs.processing.backends.enhance.basic_processor_numpy\",\n      \"library\": \"openhcs\",\n      \"signature\": \"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)\",\n      \"summary\": \"Correct a shared illumination field with low-rank and sparse decomposition.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"enhance\",\n        \"basic_processor_numpy\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_intensity\",\n      \"name\": \"measure_image_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_intensity(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure intensity across the declared image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_intensity_objects\",\n      \"name\": \"measure_image_intensity_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_intensity_objects(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure image intensity within one declared object set.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_object_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_intensity\",\n      \"name\": \"measure_object_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_intensity(object_intensity_backend_provider=DefaultCellProfilerBackendProviderSelection(), object_intensity_prepared_labels=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.processing.backends.cellprofiler.intensity.ObjectIntensityMeasurementRows]\",\n      \"summary\": \"Measure CellProfiler intensity features for identified objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity_distribution.measure_object_intensity_distribution\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_intensity_distribution\",\n      \"name\": \"measure_object_intensity_distribution\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity_distribution\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_intensity_distribution(bin_count, wants_scaled, maximum_radius, wants_zernikes, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible object intensity distribution rows.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.rescale_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_rescale_intensity\",\n      \"name\": \"rescale_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"rescale_intensity(rescale_method, automatic_low, automatic_high, source_low, ...)\",\n      \"summary\": \"Rescale CellProfiler image intensity using its declared range policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.alignment.align\",\n      \"function_id\": \"openhcs:cellprofiler_align\",\n      \"name\": \"align\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.alignment\",\n      \"library\": \"openhcs\",\n      \"signature\": \"align(method, crop_mode, additional_alignment_modes, alignment_backend_provider, ...)\",\n      \"summary\": \"Align primary images and apply declared additional-image shifts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_calculate\",\n      \"name\": \"correct_illumination_calculate\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)\",\n      \"summary\": \"Estimate a smooth illumination correction function from image data.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel\",\n      \"function_id\": \"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel\",\n      \"name\": \"count_cells_multi_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.cell_counting_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)\",\n      \"summary\": \"Count cells in multi-channel image stack with colocalization analysis.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"cell_counting_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel\",\n      \"function_id\": \"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel\",\n      \"name\": \"count_cells_simple_dual_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.count_cells_simple\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"count_cells_simple\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_histogram\",\n      \"function_id\": \"openhcs:cellprofiler_display_histogram\",\n      \"name\": \"display_histogram\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_histogram(object_name, measurement_feature, num_bins, x_scale, ...)\",\n      \"summary\": \"Compute histogram statistics from object measurements.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.maxima.find_maxima\",\n      \"function_id\": \"openhcs:cellprofiler_find_maxima\",\n      \"name\": \"find_maxima\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.maxima\",\n      \"library\": \"openhcs\",\n      \"signature\": \"find_maxima(min_distance, exclude_mode, min_intensity, label_maxima, ...)\",\n      \"summary\": \"Find local maxima under the requested CP exclusion policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.maxima.find_maxima_with_mask\",\n      \"function_id\": \"openhcs:cellprofiler_find_maxima_with_mask\",\n      \"name\": \"find_maxima_with_mask\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.maxima\",\n      \"library\": \"openhcs\",\n      \"signature\": \"find_maxima_with_mask(min_distance=5, min_intensity=0.0, label_maxima=True, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Find local maxima within a stacked mask input.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.flagging.flag_image\",\n      \"function_id\": \"openhcs:cellprofiler_flag_image\",\n      \"name\": \"flag_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.flagging\",\n      \"library\": \"openhcs\",\n      \"signature\": \"flag_image(flag_categories, flag_names, combination_choices, wants_skip, ...)\",\n      \"summary\": \"Emit one exact integer image measurement for every repeated flag.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.color.gray_to_color\",\n      \"function_id\": \"openhcs:cellprofiler_gray_to_color\",\n      \"name\": \"gray_to_color\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.color\",\n      \"library\": \"openhcs\",\n      \"signature\": \"gray_to_color(color_scheme, rescale_intensity, red_channel, green_channel, ...)\",\n      \"summary\": \"Dispatch GrayToColor across its RGB, CMYK, Stack, and Composite variants.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects\",\n      \"name\": \"identify_secondary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Identify secondary objects without a replacement-primary output.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary\",\n      \"name\": \"identify_secondary_objects_with_replacement_primary\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Execute the contract variant that emits replacement-primary artifacts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization\",\n      \"name\": \"measure_colocalization\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)\",\n      \"summary\": \"Measure colocalization between two channels from an N-channel image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization_objects\",\n      \"name\": \"measure_colocalization_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)\",\n      \"summary\": \"Measure image and/or object colocalization through one declared callable.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_quality\",\n      \"name\": \"measure_image_quality\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_quality\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible image-quality metrics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_volume_occupied_objects\",\n      \"name\": \"measure_image_volume_occupied_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.area_occupied\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_volume_occupied_objects(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure volume occupied by labeled objects in 3D.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morph\",\n      \"function_id\": \"openhcs:cellprofiler_morph\",\n      \"name\": \"morph\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)\",\n      \"summary\": \"Decorated CellProfiler Morph entrypoint backed by registered strategies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop\",\n      \"name\": \"multi_template_crop\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop(template_path, score_threshold, max_matches, crop_margin, ...)\",\n      \"summary\": \"Perform multi-template matching on each slice of a 3D image stack and return cropped regions.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_reference_channel\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop_reference_channel\",\n      \"name\": \"multi_template_crop_reference_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop_reference_channel(template_path, reference_channel, score_threshold, max_matches, ...)\",\n      \"summary\": \"Perform template matching on a reference channel and apply the same crop to all channels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    }\n  ],\n  \"total\": 46,\n  \"limit\": 30,\n  \"query\": \"normalize intensity\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.processors.numpy_processor.percentile_normalize","function_id":"openhcs:processors_numpy_processor_percentile_normalize","name":"percentile_normalize","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)","summary":"Normalize each plane independently using percentile-based contrast stretching.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.stack_percentile_normalize","function_id":"openhcs:processors_numpy_processor_stack_percentile_normalize","name":"stack_percentile_normalize","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"stack_percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)","summary":"Normalize a stack using global percentile-based contrast stretching.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.thresholding.threshold","function_id":"openhcs:cellprofiler_threshold","name":"threshold","module":"openhcs.processing.backends.cellprofiler.thresholding","library":"openhcs","signature":"threshold(mask, threshold_scope, threshold_method, assign_middle_to_foreground, ...)","summary":"Apply CP-compatible thresholding and emit the module measurement row.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy","function_id":"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy","name":"basic_flatfield_correction_numpy","module":"openhcs.processing.backends.enhance.basic_processor_numpy","library":"openhcs","signature":"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)","summary":"Correct a shared illumination field with low-rank and sparse decomposition.","backend_tags":["openhcs","enhance","basic_processor_numpy"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity","function_id":"openhcs:cellprofiler_measure_image_intensity","name":"measure_image_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_image_intensity(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure intensity across the declared image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity_objects","function_id":"openhcs:cellprofiler_measure_image_intensity_objects","name":"measure_image_intensity_objects","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_image_intensity_objects(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure image intensity within one declared object set.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_object_intensity","function_id":"openhcs:cellprofiler_measure_object_intensity","name":"measure_object_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_object_intensity(object_intensity_backend_provider=DefaultCellProfilerBackendProviderSelection(), object_intensity_prepared_labels=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.processing.backends.cellprofiler.intensity.ObjectIntensityMeasurementRows]","summary":"Measure CellProfiler intensity features for identified objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity_distribution.measure_object_intensity_distribution","function_id":"openhcs:cellprofiler_measure_object_intensity_distribution","name":"measure_object_intensity_distribution","module":"openhcs.processing.backends.cellprofiler.intensity_distribution","library":"openhcs","signature":"measure_object_intensity_distribution(bin_count, wants_scaled, maximum_radius, wants_zernikes, ...)","summary":"Measure CellProfiler-compatible object intensity distribution rows.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.rescale_intensity","function_id":"openhcs:cellprofiler_rescale_intensity","name":"rescale_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"rescale_intensity(rescale_method, automatic_low, automatic_high, source_low, ...)","summary":"Rescale CellProfiler image intensity using its declared range policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.alignment.align","function_id":"openhcs:cellprofiler_align","name":"align","module":"openhcs.processing.backends.cellprofiler.alignment","library":"openhcs","signature":"align(method, crop_mode, additional_alignment_modes, alignment_backend_provider, ...)","summary":"Align primary images and apply declared additional-image shifts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate","function_id":"openhcs:cellprofiler_correct_illumination_calculate","name":"correct_illumination_calculate","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)","summary":"Estimate a smooth illumination correction function from image data.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel","function_id":"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel","name":"count_cells_multi_channel","module":"openhcs.processing.backends.analysis.cell_counting_cpu","library":"openhcs","signature":"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)","summary":"Count cells in multi-channel image stack with colocalization analysis.","backend_tags":["openhcs","analysis","cell_counting_cpu"]},{"import_path":"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel","function_id":"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel","name":"count_cells_simple_dual_channel","module":"openhcs.processing.backends.analysis.count_cells_simple","library":"openhcs","signature":"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.","backend_tags":["openhcs","analysis","count_cells_simple"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_histogram","function_id":"openhcs:cellprofiler_display_histogram","name":"display_histogram","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_histogram(object_name, measurement_feature, num_bins, x_scale, ...)","summary":"Compute histogram statistics from object measurements.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.maxima.find_maxima","function_id":"openhcs:cellprofiler_find_maxima","name":"find_maxima","module":"openhcs.processing.backends.cellprofiler.maxima","library":"openhcs","signature":"find_maxima(min_distance, exclude_mode, min_intensity, label_maxima, ...)","summary":"Find local maxima under the requested CP exclusion policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.maxima.find_maxima_with_mask","function_id":"openhcs:cellprofiler_find_maxima_with_mask","name":"find_maxima_with_mask","module":"openhcs.processing.backends.cellprofiler.maxima","library":"openhcs","signature":"find_maxima_with_mask(min_distance=5, min_intensity=0.0, label_maxima=True, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Find local maxima within a stacked mask input.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.flagging.flag_image","function_id":"openhcs:cellprofiler_flag_image","name":"flag_image","module":"openhcs.processing.backends.cellprofiler.flagging","library":"openhcs","signature":"flag_image(flag_categories, flag_names, combination_choices, wants_skip, ...)","summary":"Emit one exact integer image measurement for every repeated flag.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.color.gray_to_color","function_id":"openhcs:cellprofiler_gray_to_color","name":"gray_to_color","module":"openhcs.processing.backends.cellprofiler.color","library":"openhcs","signature":"gray_to_color(color_scheme, rescale_intensity, red_channel, green_channel, ...)","summary":"Dispatch GrayToColor across its RGB, CMYK, Stack, and Composite variants.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects","function_id":"openhcs:cellprofiler_identify_secondary_objects","name":"identify_secondary_objects","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Identify secondary objects without a replacement-primary output.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary","function_id":"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary","name":"identify_secondary_objects_with_replacement_primary","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Execute the contract variant that emits replacement-primary artifacts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization","function_id":"openhcs:cellprofiler_measure_colocalization","name":"measure_colocalization","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)","summary":"Measure colocalization between two channels from an N-channel image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects","function_id":"openhcs:cellprofiler_measure_colocalization_objects","name":"measure_colocalization_objects","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)","summary":"Measure image and/or object colocalization through one declared callable.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality","function_id":"openhcs:cellprofiler_measure_image_quality","name":"measure_image_quality","module":"openhcs.processing.backends.cellprofiler.image_quality","library":"openhcs","signature":"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)","summary":"Measure CellProfiler-compatible image-quality metrics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_objects","function_id":"openhcs:cellprofiler_measure_image_volume_occupied_objects","name":"measure_image_volume_occupied_objects","module":"openhcs.processing.backends.cellprofiler.area_occupied","library":"openhcs","signature":"measure_image_volume_occupied_objects(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure volume occupied by labeled objects in 3D.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morph","function_id":"openhcs:cellprofiler_morph","name":"morph","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)","summary":"Decorated CellProfiler Morph entrypoint backed by registered strategies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop","name":"multi_template_crop","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop(template_path, score_threshold, max_matches, crop_margin, ...)","summary":"Perform multi-template matching on each slice of a 3D image stack and return cropped regions.","backend_tags":["openhcs","analysis","multi_template_matching"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_reference_channel","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop_reference_channel","name":"multi_template_crop_reference_channel","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop_reference_channel(template_path, reference_channel, score_threshold, max_matches, ...)","summary":"Perform template matching on a reference channel and apply the same crop to all channels.","backend_tags":["openhcs","analysis","multi_template_matching"]}],"total":46,"limit":30,"query":"normalize intensity","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_22","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"cell body nuclei","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_22","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"cell body nuclei","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.worms.straighten_worms\",\n      \"function_id\": \"openhcs:cellprofiler_straighten_worms\",\n      \"name\": \"straighten_worms\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.worms\",\n      \"library\": \"openhcs\",\n      \"signature\": \"straighten_worms(worm_width, num_control_points, flip_mode, alignment_image_index, ...)\",\n      \"summary\": \"Straighten labeled worms using sampled or provided control points.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel\",\n      \"function_id\": \"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel\",\n      \"name\": \"count_cells_simple_dual_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.count_cells_simple\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"count_cells_simple\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel\",\n      \"function_id\": \"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel\",\n      \"name\": \"count_cells_multi_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.cell_counting_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)\",\n      \"summary\": \"Count cells in multi-channel image stack with colocalization analysis.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"cell_counting_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_single_channel\",\n      \"function_id\": \"openhcs:analysis_cell_counting_cpu_count_cells_single_channel\",\n      \"name\": \"count_cells_single_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.cell_counting_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_single_channel(detection_method, min_sigma, max_sigma, num_sigma, ...)\",\n      \"summary\": \"Count cells in single-channel image stack using various detection methods.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"cell_counting_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.alignment.align\",\n      \"function_id\": \"openhcs:cellprofiler_align\",\n      \"name\": \"align\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.alignment\",\n      \"library\": \"openhcs\",\n      \"signature\": \"align(method, crop_mode, additional_alignment_modes, alignment_backend_provider, ...)\",\n      \"summary\": \"Align primary images and apply declared additional-image shifts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.measurement_math.calculate_math\",\n      \"function_id\": \"openhcs:cellprofiler_calculate_math\",\n      \"name\": \"calculate_math\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.measurement_math\",\n      \"library\": \"openhcs\",\n      \"signature\": \"calculate_math(operand1_feature, operand2_feature, operation, operand1_multiplicand, ...)\",\n      \"summary\": \"Perform CellProfiler CalculateMath measurement-row execution.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.calculate_statistics.calculate_statistics\",\n      \"function_id\": \"openhcs:cellprofiler_calculate_statistics\",\n      \"name\": \"calculate_statistics\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.calculate_statistics\",\n      \"library\": \"openhcs\",\n      \"signature\": \"calculate_statistics(grouping_feature='Metadata_Control', dose_features=('Metadata_Dose',), log_transform_doses=(False,), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.runtime_tabular_values.ColumnarRows]\",\n      \"summary\": \"Calculate experiment statistics from contract-selected measurements.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.classification.classify_objects_single_measurement\",\n      \"function_id\": \"openhcs:cellprofiler_classify_objects_single_measurement\",\n      \"name\": \"classify_objects_single_measurement\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.classification\",\n      \"library\": \"openhcs\",\n      \"signature\": \"classify_objects_single_measurement(measurement_feature, classification_rules, bin_choice, bin_count, ...)\",\n      \"summary\": \"Classify objects based on one measurement or declared rule rows.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.classification.classify_objects_two_measurements\",\n      \"function_id\": \"openhcs:cellprofiler_classify_objects_two_measurements\",\n      \"name\": \"classify_objects_two_measurements\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.classification\",\n      \"library\": \"openhcs\",\n      \"signature\": \"classify_objects_two_measurements(measurement1_feature, measurement2_feature, threshold1_method, threshold1_value, ...)\",\n      \"summary\": \"Classify objects from two measurements into four quadrants.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.closing\",\n      \"function_id\": \"openhcs:cellprofiler_closing\",\n      \"name\": \"closing\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale closing to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.color.color_to_gray\",\n      \"function_id\": \"openhcs:cellprofiler_color_to_gray\",\n      \"name\": \"color_to_gray\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.color\",\n      \"library\": \"openhcs\",\n      \"signature\": \"color_to_gray(mode, image_type, channel_indices, contributions, ...)\",\n      \"summary\": \"Convert a channel-last color image to selected grayscale outputs.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.combineobjects\",\n      \"function_id\": \"openhcs:cellprofiler_combineobjects\",\n      \"name\": \"combineobjects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Combine objects from two label images using CellProfiler policies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.object_images.convert_objects_to_image\",\n      \"function_id\": \"openhcs:cellprofiler_convert_objects_to_image\",\n      \"name\": \"convert_objects_to_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.object_images\",\n      \"library\": \"openhcs\",\n      \"signature\": \"convert_objects_to_image(image_mode=<ImageMode.COLOR: 'color'>, colormap_value='jet', *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Render object labels into the requested CellProfiler image mode.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_apply\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_apply\",\n      \"name\": \"correct_illumination_apply\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_apply(*, method=<IlluminationCorrectionMethod.DIVIDE: 'divide'>, truncate_low=True, truncate_high=True, enabled=True) -> openhcs.core.runtime_array_values.RuntimeArrayPayload | numpy.ndarray\",\n      \"summary\": \"Apply one illumination artifact to one runtime image slice.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_calculate\",\n      \"name\": \"correct_illumination_calculate\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)\",\n      \"summary\": \"Estimate a smooth illumination correction function from image data.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple\",\n      \"function_id\": \"openhcs:analysis_count_cells_simple_count_cells_simple\",\n      \"name\": \"count_cells_simple\",\n      \"module\": \"openhcs.processing.backends.analysis.count_cells_simple\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_simple(segmentation_settings=SimpleCellSegmentationConfig(threshold_method=<ThresholdMethod.OTSU: 'otsu'>, threshold=0.5, threshold_percentile=99.0, foreground=<Foreground.BRIGHT: 'bright'>, min_size=20, max_size=100000, max_eccentricity=1.0, watershed_large_objects=False, watershed_min_size=None, watershed_max_size=None, watershed_min_distance=5, watershed_footprint_size=3), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]\",\n      \"summary\": \"Count thresholded objects in a 3D image stack with optional shape cleanup.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"count_cells_simple\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.crop.crop\",\n      \"function_id\": \"openhcs:cellprofiler_crop\",\n      \"name\": \"crop\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.crop\",\n      \"library\": \"openhcs\",\n      \"signature\": \"crop(crop_shape, cropping_method, removal_method, left_right_rectangle_positions, ...)\",\n      \"summary\": \"Crop an image and return its CellProfiler crop-mask sidecar.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.define_grid_automatic\",\n      \"function_id\": \"openhcs:cellprofiler_define_grid_automatic\",\n      \"name\": \"define_grid_automatic\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"define_grid_automatic(grid_rows, grid_columns, origin, ordering, ...)\",\n      \"summary\": \"Define a CellProfiler grid from object-label centroid extrema.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.define_grid_manual\",\n      \"function_id\": \"openhcs:cellprofiler_define_grid_manual\",\n      \"name\": \"define_grid_manual\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"define_grid_manual(grid_rows, grid_columns, first_spot_x, first_spot_y, ...)\",\n      \"summary\": \"Define a CellProfiler grid manually from two spot references.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_data_on_image\",\n      \"function_id\": \"openhcs:cellprofiler_display_data_on_image\",\n      \"name\": \"display_data_on_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_data_on_image(measurement_feature, objects_or_image, display_mode, wants_background_image, ...)\",\n      \"summary\": \"Display measurement data on top of an image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_density_plot\",\n      \"function_id\": \"openhcs:cellprofiler_display_density_plot\",\n      \"name\": \"display_density_plot\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_density_plot(x_object_name, x_measurement_feature, y_object_name, y_measurement_feature, ...)\",\n      \"summary\": \"Compute 2D density histogram from two measurement arrays.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_histogram\",\n      \"function_id\": \"openhcs:cellprofiler_display_histogram\",\n      \"name\": \"display_histogram\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_histogram(object_name, measurement_feature, num_bins, x_scale, ...)\",\n      \"summary\": \"Compute histogram statistics from object measurements.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_platemap\",\n      \"function_id\": \"openhcs:cellprofiler_display_platemap\",\n      \"name\": \"display_platemap\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_platemap(objects_or_image, object_name, measurement_feature, plate_metadata_feature, ...)\",\n      \"summary\": \"Aggregate measurements by well for plate map visualization.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_scatter_plot\",\n      \"function_id\": \"openhcs:cellprofiler_display_scatter_plot\",\n      \"name\": \"display_scatter_plot\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_scatter_plot(x_source, x_object_name, x_measurement_feature, y_source, ...)\",\n      \"summary\": \"Extract scatter plot data from two measurement arrays.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.edge.enhance_edges\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_edges\",\n      \"name\": \"enhance_edges\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.edge\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_edges(method, direction, edge_backend_provider, automatic_threshold, ...)\",\n      \"summary\": \"Enhance edges using CellProfiler-compatible edge detection semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_objects\",\n      \"function_id\": \"openhcs:cellprofiler_erode_objects\",\n      \"name\": \"erode_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_objects(structuring_element, size, preserve_midpoints, relabel_objects, ...)\",\n      \"summary\": \"Erode CellProfiler object labels while preserving optional midpoints.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 106,\n  \"limit\": 30,\n  \"query\": \"cell body nuclei\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.worms.straighten_worms","function_id":"openhcs:cellprofiler_straighten_worms","name":"straighten_worms","module":"openhcs.processing.backends.cellprofiler.worms","library":"openhcs","signature":"straighten_worms(worm_width, num_control_points, flip_mode, alignment_image_index, ...)","summary":"Straighten labeled worms using sampled or provided control points.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel","function_id":"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel","name":"count_cells_simple_dual_channel","module":"openhcs.processing.backends.analysis.count_cells_simple","library":"openhcs","signature":"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.","backend_tags":["openhcs","analysis","count_cells_simple"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel","function_id":"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel","name":"count_cells_multi_channel","module":"openhcs.processing.backends.analysis.cell_counting_cpu","library":"openhcs","signature":"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)","summary":"Count cells in multi-channel image stack with colocalization analysis.","backend_tags":["openhcs","analysis","cell_counting_cpu"]},{"import_path":"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_single_channel","function_id":"openhcs:analysis_cell_counting_cpu_count_cells_single_channel","name":"count_cells_single_channel","module":"openhcs.processing.backends.analysis.cell_counting_cpu","library":"openhcs","signature":"count_cells_single_channel(detection_method, min_sigma, max_sigma, num_sigma, ...)","summary":"Count cells in single-channel image stack using various detection methods.","backend_tags":["openhcs","analysis","cell_counting_cpu"]},{"import_path":"openhcs.processing.backends.cellprofiler.alignment.align","function_id":"openhcs:cellprofiler_align","name":"align","module":"openhcs.processing.backends.cellprofiler.alignment","library":"openhcs","signature":"align(method, crop_mode, additional_alignment_modes, alignment_backend_provider, ...)","summary":"Align primary images and apply declared additional-image shifts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.measurement_math.calculate_math","function_id":"openhcs:cellprofiler_calculate_math","name":"calculate_math","module":"openhcs.processing.backends.cellprofiler.measurement_math","library":"openhcs","signature":"calculate_math(operand1_feature, operand2_feature, operation, operand1_multiplicand, ...)","summary":"Perform CellProfiler CalculateMath measurement-row execution.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.calculate_statistics.calculate_statistics","function_id":"openhcs:cellprofiler_calculate_statistics","name":"calculate_statistics","module":"openhcs.processing.backends.cellprofiler.calculate_statistics","library":"openhcs","signature":"calculate_statistics(grouping_feature='Metadata_Control', dose_features=('Metadata_Dose',), log_transform_doses=(False,), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.runtime_tabular_values.ColumnarRows]","summary":"Calculate experiment statistics from contract-selected measurements.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.classification.classify_objects_single_measurement","function_id":"openhcs:cellprofiler_classify_objects_single_measurement","name":"classify_objects_single_measurement","module":"openhcs.processing.backends.cellprofiler.classification","library":"openhcs","signature":"classify_objects_single_measurement(measurement_feature, classification_rules, bin_choice, bin_count, ...)","summary":"Classify objects based on one measurement or declared rule rows.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.classification.classify_objects_two_measurements","function_id":"openhcs:cellprofiler_classify_objects_two_measurements","name":"classify_objects_two_measurements","module":"openhcs.processing.backends.cellprofiler.classification","library":"openhcs","signature":"classify_objects_two_measurements(measurement1_feature, measurement2_feature, threshold1_method, threshold1_value, ...)","summary":"Classify objects from two measurements into four quadrants.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.closing","function_id":"openhcs:cellprofiler_closing","name":"closing","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale closing to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.color.color_to_gray","function_id":"openhcs:cellprofiler_color_to_gray","name":"color_to_gray","module":"openhcs.processing.backends.cellprofiler.color","library":"openhcs","signature":"color_to_gray(mode, image_type, channel_indices, contributions, ...)","summary":"Convert a channel-last color image to selected grayscale outputs.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.combineobjects","function_id":"openhcs:cellprofiler_combineobjects","name":"combineobjects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Combine objects from two label images using CellProfiler policies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.object_images.convert_objects_to_image","function_id":"openhcs:cellprofiler_convert_objects_to_image","name":"convert_objects_to_image","module":"openhcs.processing.backends.cellprofiler.object_images","library":"openhcs","signature":"convert_objects_to_image(image_mode=<ImageMode.COLOR: 'color'>, colormap_value='jet', *, enabled=True) -> numpy.ndarray","summary":"Render object labels into the requested CellProfiler image mode.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_apply","function_id":"openhcs:cellprofiler_correct_illumination_apply","name":"correct_illumination_apply","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_apply(*, method=<IlluminationCorrectionMethod.DIVIDE: 'divide'>, truncate_low=True, truncate_high=True, enabled=True) -> openhcs.core.runtime_array_values.RuntimeArrayPayload | numpy.ndarray","summary":"Apply one illumination artifact to one runtime image slice.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate","function_id":"openhcs:cellprofiler_correct_illumination_calculate","name":"correct_illumination_calculate","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)","summary":"Estimate a smooth illumination correction function from image data.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple","function_id":"openhcs:analysis_count_cells_simple_count_cells_simple","name":"count_cells_simple","module":"openhcs.processing.backends.analysis.count_cells_simple","library":"openhcs","signature":"count_cells_simple(segmentation_settings=SimpleCellSegmentationConfig(threshold_method=<ThresholdMethod.OTSU: 'otsu'>, threshold=0.5, threshold_percentile=99.0, foreground=<Foreground.BRIGHT: 'bright'>, min_size=20, max_size=100000, max_eccentricity=1.0, watershed_large_objects=False, watershed_min_size=None, watershed_max_size=None, watershed_min_distance=5, watershed_footprint_size=3), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]","summary":"Count thresholded objects in a 3D image stack with optional shape cleanup.","backend_tags":["openhcs","analysis","count_cells_simple"]},{"import_path":"openhcs.processing.backends.cellprofiler.crop.crop","function_id":"openhcs:cellprofiler_crop","name":"crop","module":"openhcs.processing.backends.cellprofiler.crop","library":"openhcs","signature":"crop(crop_shape, cropping_method, removal_method, left_right_rectangle_positions, ...)","summary":"Crop an image and return its CellProfiler crop-mask sidecar.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.define_grid_automatic","function_id":"openhcs:cellprofiler_define_grid_automatic","name":"define_grid_automatic","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"define_grid_automatic(grid_rows, grid_columns, origin, ordering, ...)","summary":"Define a CellProfiler grid from object-label centroid extrema.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.define_grid_manual","function_id":"openhcs:cellprofiler_define_grid_manual","name":"define_grid_manual","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"define_grid_manual(grid_rows, grid_columns, first_spot_x, first_spot_y, ...)","summary":"Define a CellProfiler grid manually from two spot references.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_data_on_image","function_id":"openhcs:cellprofiler_display_data_on_image","name":"display_data_on_image","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_data_on_image(measurement_feature, objects_or_image, display_mode, wants_background_image, ...)","summary":"Display measurement data on top of an image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_density_plot","function_id":"openhcs:cellprofiler_display_density_plot","name":"display_density_plot","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_density_plot(x_object_name, x_measurement_feature, y_object_name, y_measurement_feature, ...)","summary":"Compute 2D density histogram from two measurement arrays.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_histogram","function_id":"openhcs:cellprofiler_display_histogram","name":"display_histogram","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_histogram(object_name, measurement_feature, num_bins, x_scale, ...)","summary":"Compute histogram statistics from object measurements.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_platemap","function_id":"openhcs:cellprofiler_display_platemap","name":"display_platemap","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_platemap(objects_or_image, object_name, measurement_feature, plate_metadata_feature, ...)","summary":"Aggregate measurements by well for plate map visualization.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_scatter_plot","function_id":"openhcs:cellprofiler_display_scatter_plot","name":"display_scatter_plot","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_scatter_plot(x_source, x_object_name, x_measurement_feature, y_source, ...)","summary":"Extract scatter plot data from two measurement arrays.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.edge.enhance_edges","function_id":"openhcs:cellprofiler_enhance_edges","name":"enhance_edges","module":"openhcs.processing.backends.cellprofiler.edge","library":"openhcs","signature":"enhance_edges(method, direction, edge_backend_provider, automatic_threshold, ...)","summary":"Enhance edges using CellProfiler-compatible edge detection semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_objects","function_id":"openhcs:cellprofiler_erode_objects","name":"erode_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_objects(structuring_element, size, preserve_midpoints, relabel_objects, ...)","summary":"Erode CellProfiler object labels while preserving optional midpoints.","backend_tags":["openhcs","cellprofiler"]}],"total":106,"limit":30,"query":"cell body nuclei","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_23","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_example_corpus_map","section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","max_chars":30000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_23","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_example_corpus_map","section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","max_chars":30000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"document\": {\n    \"document_id\": \"openhcs_example_corpus_map\",\n    \"title\": \"OpenHCS example corpus map\",\n    \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n    \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n    \"tags\": [\n      \"CellProfiler examples\",\n      \"CellProfiler translation\",\n      \"CellProfiler mental model\",\n      \"cppipe\",\n      \"native examples\",\n      \"official30\",\n      \"ExampleHuman\",\n      \"ExampleFly\",\n      \"OpenHCS Python\",\n      \"benchmark recipes\",\n      \"MFD preset\",\n      \"current examples\",\n      \"nuclei segmentation\",\n      \"illumination correction\",\n      \"colocalization\",\n      \"translocation\",\n      \"quality control\",\n      \"neurite outgrowth\",\n      \"recipe\",\n      \"recipes\",\n      \"pipeline recipes\"\n    ],\n    \"section_count\": 15\n  },\n  \"sections\": [\n    {\n      \"section_id\": \"openhcs-example-corpus-map\",\n      \"title\": \"OpenHCS Example Corpus Map\",\n      \"level\": 1,\n      \"span\": {\n        \"start_line\": 1,\n        \"end_line\": 1233\n      }\n    },\n    {\n      \"section_id\": \"cellprofiler-pipeline-corpus\",\n      \"title\": \"CellProfiler Pipeline Corpus\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 9,\n        \"end_line\": 34\n      }\n    },\n    {\n      \"section_id\": \"cellprofiler-to-openhcs-translation\",\n      \"title\": \"CellProfiler To OpenHCS Translation\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 35,\n        \"end_line\": 60\n      }\n    },\n    {\n      \"section_id\": \"native-openhcs-examples\",\n      \"title\": \"Native OpenHCS Examples\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 61,\n        \"end_line\": 115\n      }\n    },\n    {\n      \"section_id\": \"operator-workflow\",\n      \"title\": \"Operator Workflow\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 116,\n        \"end_line\": 136\n      }\n    },\n    {\n      \"section_id\": \"mcp-search-terms\",\n      \"title\": \"MCP Search Terms\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 137,\n        \"end_line\": 150\n      }\n    },\n    {\n      \"section_id\": \"live-data-inspection\",\n      \"title\": \"Live Data Inspection\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 151,\n        \"end_line\": 166\n      }\n    },\n    {\n      \"section_id\": \"native-example-source-index\",\n      \"title\": \"Native Example Source Index\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 167,\n        \"end_line\": 179\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-mfd-specs-py\",\n      \"title\": \"openhcs/processing/presets/mfd_specs.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 180,\n        \"end_line\": 563\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-pipelines-10x-mfd-crop-analyze-py\",\n      \"title\": \"openhcs/processing/presets/pipelines/10x_mfd_crop_analyze.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 564,\n        \"end_line\": 577\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-pipelines-10x-mfd-crop-analyze-dapi-fitc-cy5-py\",\n      \"title\": \"openhcs/processing/presets/pipelines/10x_mfd_crop_analyze_dapi-fitc-cy5.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 578,\n        \"end_line\": 591\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-pipelines-10x-mfd-stitch-ashlar-cpu-py\",\n      \"title\": \"openhcs/processing/presets/pipelines/10x_mfd_stitch_ashlar_cpu.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 592,\n        \"end_line\": 605\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-pipelines-10x-mfd-stitch-gpu-py\",\n      \"title\": \"openhcs/processing/presets/pipelines/10x_mfd_stitch_gpu.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 606,\n        \"end_line\": 619\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n      \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 620,\n        \"end_line\": 1110\n      }\n    },\n    {\n      \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py\",\n      \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 1111,\n        \"end_line\": 1233\n      }\n    }\n  ],\n  \"content\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\\n---------------------------------------------------------------------------\\n\\nSource path: openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\\nLines included: 482\\n\\n.. code-block:: python\\n\\n   \\\"\\\"\\\"CellProfiler neurite outgrowth for a loose Opera Phenix image export.\\n\\n   This example is for selected Opera Phenix TIFFs that were copied without the\\n   plate's ``Index.xml``. A complete Opera Phenix plate should use\\n   ``Microscope.OPERAPHENIX`` instead of reconstructing its identities here.\\n\\n   Edit ``example_inputs`` for the local plate, exact filenames, axis identities,\\n   output directory, and viewer port. Set ``map2=None`` for a two-channel workflow\\n   where SMI312 delineates neuronal bodies and neurites; the compact MetaXpress\\n   preset additionally uses Hoechst as nuclear seeds. Provide MAP2 to use its\\n   neuronal-body signal instead. The top-level well filter bounds loading to one\\n   well. Step checkpoint and viewer filters are intentionally unset so they inherit\\n   that same scope; path-planning filter zero suppresses the ordinary final image\\n   copy while typed measurements and object labels remain materialized.\\n   \\\"\\\"\\\"\\n\\n   from __future__ import annotations\\n\\n   import os\\n   import shutil\\n   from dataclasses import dataclass\\n   from pathlib import Path\\n\\n   from polystore.streaming.identity import StreamProducerIdentity\\n\\n   from openhcs.constants.constants import AllComponents, Microscope\\n   from openhcs.constants.input_source import InputSource\\n   from openhcs.core.aligned_image_payload import AlignedImageSliceContext\\n   from openhcs.core.artifacts import ImageArtifactType, ObjectLabelsArtifactType\\n   from openhcs.core.config import (\\n       LazyNapariStreamingConfig,\\n       LazyPathPlanningConfig,\\n       LazyProcessingConfig,\\n       LazyStepMaterializationConfig,\\n       LazyWellFilterConfig,\\n       PipelineConfig,\\n   )\\n   from openhcs.core.function_patterns import get_core_callable\\n   from openhcs.core.invocation_artifacts import ArtifactDeclarationStepContext\\n   from openhcs.core.source_bindings import (\\n       ComponentSelector,\\n       LazySourceBindingsConfig,\\n       LazyStepSourceBindingsConfig,\\n       NamedSourceBinding,\\n       SourceFilterClause,\\n       SourceFilterMatchType,\\n       SourceFilterSubject,\\n       SourceSelector,\\n   )\\n   from openhcs.core.steps.function_output_manifest import (\\n       FunctionStepOutputProducerIdentityRequest,\\n   )\\n   from openhcs.core.steps.function_step import FunctionStep\\n   from openhcs.processing.backends.analysis.neurite_outgrowth import (\\n       CELLPROFILER_NEURITE_ENGINE_PROFILE,\\n   )\\n   from openhcs.processing.backends.cellprofiler.feature_enhancement import (\\n       enhance_or_suppress_features,\\n   )\\n   from openhcs.processing.backends.cellprofiler.intensity import measure_image_intensity\\n   from openhcs.processing.backends.cellprofiler.medial_axis import medialaxis\\n   from openhcs.processing.backends.cellprofiler.primary_objects import (\\n       identify_primary_objects,\\n   )\\n   from openhcs.processing.backends.cellprofiler.secondary import (\\n       IdentifySecondaryObjectsModule,\\n       identify_secondary_objects,\\n   )\\n   from openhcs.processing.backends.cellprofiler.skeleton import (\\n       measure_object_skeleton_with_branchpoint_image,\\n   )\\n   from openhcs.processing.backends.cellprofiler.spreadsheet_export import (\\n       export_to_spreadsheet,\\n   )\\n   from openhcs.processing.backends.cellprofiler.thresholding import (\\n       threshold,\\n   )\\n   from openhcs.processing.presets.demo_contribution import PipelineDemoContribution\\n\\n   NEURITE_BRANCHPOINT_IMAGE_NAME = \\\"NeuriteBranchpoints\\\"\\n\\n\\n   @dataclass(frozen=True, slots=True)\\n   class SemanticImageSource:\\n       \\\"\\\"\\\"One semantic channel reconstructed from an exact loose-export file.\\\"\\\"\\\"\\n\\n       alias: str\\n       filename: str\\n       channel: str\\n\\n\\n   @dataclass(frozen=True, slots=True)\\n   class LooseOperaPhenixNeuriteInputs:\\n       \\\"\\\"\\\"Portable input and output boundary for this example pipeline.\\\"\\\"\\\"\\n\\n       plate_path: Path\\n       output_root: Path\\n       well: str\\n       site: str\\n       z_index: str\\n       timepoint: str\\n       viewer_port: int\\n       hoechst: SemanticImageSource\\n       map2: SemanticImageSource | None\\n       smi312: SemanticImageSource\\n\\n       @property\\n       def cell_body_source(self) -> SemanticImageSource:\\n           \\\"\\\"\\\"Use MAP2 bodies when supplied, otherwise use the SMI312 cell signal.\\\"\\\"\\\"\\n\\n           return self.smi312 if self.map2 is None else self.map2\\n\\n       @property\\n       def channel_stack(self) -> tuple[SemanticImageSource, ...]:\\n           \\\"\\\"\\\"Authoritative semantic order of the assembled channel stack.\\\"\\\"\\\"\\n\\n           return tuple(\\n               source\\n               for source in (self.hoechst, self.map2, self.smi312)\\n               if source is not None\\n           )\\n\\n       def channel_index(self, source: SemanticImageSource) -> int:\\n           \\\"\\\"\\\"Resolve a semantic source against the owned assembled-stack order.\\\"\\\"\\\"\\n\\n           return self.channel_stack.index(source)\\n\\n\\n   def _exact_image_binding(\\n       source: SemanticImageSource,\\n       inputs: LooseOperaPhenixNeuriteInputs,\\n   ) -> NamedSourceBinding:\\n       return NamedSourceBinding(\\n           alias=source.alias,\\n           selector=SourceSelector(\\n               filters=(\\n                   SourceFilterClause(\\n                       subject=SourceFilterSubject.FILE,\\n                       match_type=SourceFilterMatchType.EQUALS,\\n                       value=source.filename,\\n                   ),\\n               ),\\n           ),\\n           component_identity=(\\n               ComponentSelector(AllComponents.WELL, inputs.well),\\n               ComponentSelector(AllComponents.SITE, inputs.site),\\n               ComponentSelector(AllComponents.CHANNEL, source.channel),\\n               ComponentSelector(AllComponents.Z_INDEX, inputs.z_index),\\n               ComponentSelector(AllComponents.TIMEPOINT, inputs.timepoint),\\n           ),\\n       )\\n\\n\\n   def _named_source(alias: str) -> LazyStepSourceBindingsConfig:\\n       return LazyStepSourceBindingsConfig(\\n           enabled=True,\\n           bindings=(NamedSourceBinding(alias=alias),),\\n       )\\n\\n\\n   def _qc_stream(\\n       inputs: LooseOperaPhenixNeuriteInputs,\\n       colormap: str,\\n   ) -> LazyNapariStreamingConfig:\\n       return LazyNapariStreamingConfig(\\n           enabled=True,\\n           persistent=True,\\n           port=inputs.viewer_port,\\n           colormap=colormap,\\n       )\\n\\n\\n   def _qc_checkpoint(\\n       output_root: Path,\\n       sub_dir: str,\\n   ) -> LazyStepMaterializationConfig:\\n       return LazyStepMaterializationConfig(\\n           enabled=True,\\n           global_output_folder=output_root,\\n           sub_dir=sub_dir,\\n       )\\n\\n\\n   def build_loose_operaphenix_neurite_config(\\n       inputs: LooseOperaPhenixNeuriteInputs,\\n   ) -> PipelineConfig:\\n       \\\"\\\"\\\"Build the shared loose-export source and materialization boundary.\\\"\\\"\\\"\\n\\n       output_root = inputs.output_root.expanduser().resolve()\\n       source_bindings = tuple(\\n           _exact_image_binding(source, inputs) for source in inputs.channel_stack\\n       )\\n       return PipelineConfig(\\n           microscope=Microscope.SOURCE_BINDINGS,\\n           well_filter_config=LazyWellFilterConfig(well_filter=inputs.well),\\n           path_planning_config=LazyPathPlanningConfig(\\n               well_filter=0,\\n               global_output_folder=output_root,\\n           ),\\n           materialization_results_path=output_root / \\\"results\\\",\\n           materialize_runtime_artifacts=True,\\n           source_bindings_config=LazySourceBindingsConfig(bindings=source_bindings),\\n       )\\n\\n\\n   def build_loose_operaphenix_neurite_pipeline(\\n       inputs: LooseOperaPhenixNeuriteInputs,\\n   ) -> tuple[PipelineConfig, list[FunctionStep]]:\\n       \\\"\\\"\\\"Build an SMI312-neurite workflow with MAP2 or SMI312 cell bodies.\\\"\\\"\\\"\\n\\n       output_root = inputs.output_root.expanduser().resolve()\\n       pipeline_config = build_loose_operaphenix_neurite_config(inputs)\\n\\n       engine = CELLPROFILER_NEURITE_ENGINE_PROFILE\\n       pipeline_steps = [\\n           FunctionStep(\\n               name=\\\"NeuronBodies\\\",\\n               func=(\\n                   identify_primary_objects,\\n                   engine.body_detection_kwargs(),\\n               ),\\n               processing_config=LazyProcessingConfig(\\n                   input_source=InputSource.PIPELINE_START,\\n               ),\\n               source_bindings=_named_source(inputs.cell_body_source.alias),\\n               napari_streaming_config=_qc_stream(inputs, \\\"viridis\\\"),\\n           ),\\n           FunctionStep(\\n               name=\\\"SMI312SourceSignal\\\",\\n               func=(\\n                   measure_image_intensity,\\n                   {\\n                       \\\"calculate_percentiles\\\": True,\\n                       \\\"percentiles\\\": (10, 50, 90),\\n                   },\\n               ),\\n               processing_config=LazyProcessingConfig(\\n                   input_source=InputSource.PIPELINE_START,\\n               ),\\n               source_bindings=_named_source(inputs.smi312.alias),\\n               step_materialization_config=_qc_checkpoint(\\n                   output_root,\\n                   \\\"qc_smi312_signal\\\",\\n               ),\\n               napari_streaming_config=_qc_stream(inputs, \\\"magma\\\"),\\n           ),\\n           FunctionStep(\\n               name=\\\"EnhancedNeurites\\\",\\n               func=(\\n                   enhance_or_suppress_features,\\n                   engine.enhancement_kwargs(),\\n               ),\\n           ),\\n           FunctionStep(\\n               name=\\\"NeuriteForeground\\\",\\n               func=(\\n                   threshold,\\n                   engine.threshold_kwargs(),\\n               ),\\n               step_materialization_config=_qc_checkpoint(\\n                   output_root,\\n                   \\\"qc_neurite_mask\\\",\\n               ),\\n               napari_streaming_config=_qc_stream(inputs, \\\"gray\\\"),\\n           ),\\n           FunctionStep(\\n               name=\\\"NeuriteSkeleton\\\",\\n               func=medialaxis,\\n               step_materialization_config=_qc_checkpoint(\\n                   output_root,\\n                   \\\"qc_neurite_skeleton\\\",\\n               ),\\n               napari_streaming_config=_qc_stream(inputs, \\\"gray\\\"),\\n           ),\\n           FunctionStep(\\n               name=\\\"PerNeuronNeuriteTopology\\\",\\n               func=(\\n                   measure_object_skeleton_with_branchpoint_image,\\n                   {\\n                       \\\"fill_small_holes\\\": True,\\n                       \\\"maximum_hole_size\\\": 10,\\n                       \\\"branchpoint_image_name\\\": NEURITE_BRANCHPOINT_IMAGE_NAME,\\n                   },\\n               ),\\n               napari_streaming_config=_qc_stream(inputs, \\\"gray\\\"),\\n           ),\\n           FunctionStep(\\n               name=\\\"UnifiedNeurons\\\",\\n               func=(\\n                   identify_secondary_objects,\\n                   engine.secondary_kwargs(),\\n               ),\\n               processing_config=LazyProcessingConfig(\\n                   input_source=InputSource.PIPELINE_START,\\n               ),\\n               source_bindings=_named_source(inputs.smi312.alias),\\n               napari_streaming_config=_qc_stream(inputs, \\\"magma\\\"),\\n           ),\\n           FunctionStep(\\n               name=\\\"NeuriteSpreadsheetExport\\\",\\n               func=(\\n                   export_to_spreadsheet,\\n                   {\\n                       \\\"add_image_metadata\\\": True,\\n                       \\\"add_image_file_names\\\": True,\\n                       \\\"output_directory\\\": \\\"neurite_tables\\\",\\n                       \\\"export_all_measurement_types\\\": True,\\n                       \\\"add_filename_prefix\\\": True,\\n                       \\\"filename_prefix\\\": f\\\"{inputs.well}_Neurite_\\\",\\n                   },\\n               ),\\n           ),\\n       ]\\n       return pipeline_config, pipeline_steps\\n\\n\\n   def loose_operaphenix_neurite_demo_contribution(\\n       *,\\n       session_root: Path,\\n       source_path: Path | None = None,\\n   ) -> PipelineDemoContribution:\\n       \\\"\\\"\\\"Contribute the modular CellProfiler neurite workflow to a master run.\\n\\n       ``source_path`` is the directory containing the three declared loose TIFFs.\\n       Set ``OPENHCS_LOOSE_OPERAPHENIX_NEURITE_SOURCE`` when invoking the generic\\n       master runner, whose contributor protocol supplies only ``session_root``.\\n       \\\"\\\"\\\"\\n\\n       demo_id = \\\"loose_operaphenix_cellprofiler_neurite_outgrowth\\\"\\n       title = \\\"Opera Phenix modular CellProfiler neurite outgrowth\\\"\\n       configured_source = source_path or os.environ.get(\\n           \\\"OPENHCS_LOOSE_OPERAPHENIX_NEURITE_SOURCE\\\"\\n       )\\n       if configured_source is None:\\n           raise FileNotFoundError(\\n               \\\"Loose Opera Phenix neurite source is not configured. Set \\\"\\n               \\\"OPENHCS_LOOSE_OPERAPHENIX_NEURITE_SOURCE to the directory \\\"\\n               \\\"containing the declared Hoechst, MAP2, and SMI312 TIFFs.\\\"\\n           )\\n       resolved_source = Path(configured_source).expanduser().resolve()\\n       if not resolved_source.is_dir():\\n           raise FileNotFoundError(\\n               f\\\"Loose Opera Phenix neurite source directory not found: {resolved_source}.\\\"\\n           )\\n\\n       resolved_session_root = session_root.expanduser().resolve()\\n       plate_path = resolved_session_root / \\\"plates\\\" / title\\n       output_root = resolved_session_root / \\\"outputs\\\" / demo_id\\n       inputs = LooseOperaPhenixNeuriteInputs(\\n           plate_path=plate_path,\\n           output_root=output_root,\\n           well=\\\"R04C09\\\",\\n           site=\\\"11\\\",\\n           z_index=\\\"1\\\",\\n           timepoint=\\\"1\\\",\\n           viewer_port=5888,\\n           hoechst=SemanticImageSource(\\n               alias=\\\"Hoechst\\\",\\n               filename=\\\"r04c09f11p01-ch1sk1fk1fl1.tiff\\\",\\n               channel=\\\"1\\\",\\n           ),\\n           map2=SemanticImageSource(\\n               alias=\\\"MAP2\\\",\\n               filename=\\\"r04c09f11p01-ch2sk1fk1fl1.tiff\\\",\\n               channel=\\\"2\\\",\\n           ),\\n           smi312=SemanticImageSource(\\n               alias=\\\"SMI312\\\",\\n               filename=\\\"r04c09f11p01-ch4sk1fk1fl1.tiff\\\",\\n               channel=\\\"4\\\",\\n           ),\\n       )\\n\\n       def prepare() -> None:\\n           missing = tuple(\\n               source.filename\\n               for source in inputs.channel_stack\\n               if not (resolved_source / source.filename).is_file()\\n           )\\n           if missing:\\n               raise FileNotFoundError(\\n                   f\\\"Loose Opera Phenix neurite source {resolved_source} is missing \\\"\\n                   f\\\"declared TIFFs: {missing}.\\\"\\n               )\\n           plate_path.mkdir(parents=True, exist_ok=True)\\n           for source in inputs.channel_stack:\\n               shutil.copy2(\\n                   resolved_source / source.filename,\\n                   plate_path / source.filename,\\n               )\\n\\n       pipeline_config, pipeline_steps = build_loose_operaphenix_neurite_pipeline(inputs)\\n       analysis_matches = tuple(\\n           step\\n           for step in pipeline_steps\\n           if get_core_callable(step.func) is identify_secondary_objects\\n       )\\n       topology_matches = tuple(\\n           step\\n           for step in pipeline_steps\\n           if get_core_callable(step.func)\\n           is measure_object_skeleton_with_branchpoint_image\\n       )\\n       if len(analysis_matches) != 1 or len(topology_matches) != 1:\\n           raise ValueError(\\n               \\\"Loose Opera Phenix demo requires exactly one secondary-object \\\"\\n               \\\"analysis and one branchpoint-image topology step.\\\"\\n           )\\n       analysis_step = analysis_matches[0]\\n       topology_step = topology_matches[0]\\n       analysis_step_index = pipeline_steps.index(analysis_step)\\n       secondary_output_name = (\\n           IdentifySecondaryObjectsModule.canonical_output_artifact_name(\\n               artifact_type=ObjectLabelsArtifactType,\\n               output_position=0,\\n               block_position=0,\\n               step_context=ArtifactDeclarationStepContext(\\n                   step_name=analysis_step.name,\\n                   step_index=analysis_step_index,\\n               ),\\n           )\\n       )\\n       return PipelineDemoContribution(\\n           demo_id=demo_id,\\n           title=title,\\n           plate_path=plate_path,\\n           pipeline_config=pipeline_config,\\n           pipeline_steps=tuple(pipeline_steps),\\n           presentation_identity=StreamProducerIdentity.pipeline_output(\\n               output_kind=(\\n                   FunctionStepOutputProducerIdentityRequest.ARTIFACT_OUTPUT_KIND\\n               ),\\n               output_key=secondary_output_name,\\n               projection_key=secondary_output_name,\\n               step_name=analysis_step.name,\\n               pipeline_position=None,\\n               artifact_kind=ObjectLabelsArtifactType.require_value(),\\n           ),\\n           supporting_presentation_identities=(\\n               StreamProducerIdentity.pipeline_output(\\n                   output_kind=AlignedImageSliceContext.MAIN_FLOW_OUTPUT_KIND,\\n                   output_key=NEURITE_BRANCHPOINT_IMAGE_NAME,\\n                   projection_key=AlignedImageSliceContext.MAIN_FLOW_OUTPUT_KIND,\\n                   step_name=topology_step.name,\\n                   pipeline_position=None,\\n                   artifact_kind=ImageArtifactType.require_value(),\\n               ),\\n           ),\\n           prepare=prepare,\\n       )\\n\\n\\n   # Edit this one boundary rather than searching through the pipeline declarations.\\n   example_inputs = LooseOperaPhenixNeuriteInputs(\\n       plate_path=Path(\\\"path/to/loose_operaphenix_export\\\"),\\n       output_root=Path(\\\"openhcs_neurite_output\\\"),\\n       well=\\\"R04C09\\\",\\n       site=\\\"11\\\",\\n       z_index=\\\"1\\\",\\n       timepoint=\\\"1\\\",\\n       viewer_port=5888,\\n       hoechst=SemanticImageSource(\\n           alias=\\\"Hoechst\\\",\\n           filename=\\\"r04c09f11p01-ch1sk1fk1fl1.tiff\\\",\\n           channel=\\\"1\\\",\\n       ),\\n       map2=SemanticImageSource(\\n           alias=\\\"MAP2\\\",\\n           filename=\\\"r04c09f11p01-ch2sk1fk1fl1.tiff\\\",\\n           channel=\\\"2\\\",\\n       ),\\n       smi312=SemanticImageSource(\\n           alias=\\\"SMI312\\\",\\n           filename=\\\"r04c09f11p01-ch4sk1fk1fl1.tiff\\\",\\n           channel=\\\"4\\\",\\n       ),\\n   )\\n\\n   plate_path = example_inputs.plate_path.expanduser().resolve()\\n   pipeline_config, pipeline_steps = build_loose_operaphenix_neurite_pipeline(\\n       example_inputs\\n   )\\n\",\n  \"selected_section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n  \"truncated\": false,\n  \"max_chars\": 30000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"sections":[{"section_id":"openhcs-example-corpus-map","title":"OpenHCS Example Corpus Map","level":1,"span":{"start_line":1,"end_line":1233}},{"section_id":"cellprofiler-pipeline-corpus","title":"CellProfiler Pipeline Corpus","level":2,"span":{"start_line":9,"end_line":34}},{"section_id":"cellprofiler-to-openhcs-translation","title":"CellProfiler To OpenHCS Translation","level":2,"span":{"start_line":35,"end_line":60}},{"section_id":"native-openhcs-examples","title":"Native OpenHCS Examples","level":2,"span":{"start_line":61,"end_line":115}},{"section_id":"operator-workflow","title":"Operator Workflow","level":2,"span":{"start_line":116,"end_line":136}},{"section_id":"mcp-search-terms","title":"MCP Search Terms","level":2,"span":{"start_line":137,"end_line":150}},{"section_id":"live-data-inspection","title":"Live Data Inspection","level":2,"span":{"start_line":151,"end_line":166}},{"section_id":"native-example-source-index","title":"Native Example Source Index","level":2,"span":{"start_line":167,"end_line":179}},{"section_id":"openhcs-processing-presets-mfd-specs-py","title":"openhcs/processing/presets/mfd_specs.py","level":2,"span":{"start_line":180,"end_line":563}},{"section_id":"openhcs-processing-presets-pipelines-10x-mfd-crop-analyze-py","title":"openhcs/processing/presets/pipelines/10x_mfd_crop_analyze.py","level":2,"span":{"start_line":564,"end_line":577}},{"section_id":"openhcs-processing-presets-pipelines-10x-mfd-crop-analyze-dapi-fitc-cy5-py","title":"openhcs/processing/presets/pipelines/10x_mfd_crop_analyze_dapi-fitc-cy5.py","level":2,"span":{"start_line":578,"end_line":591}},{"section_id":"openhcs-processing-presets-pipelines-10x-mfd-stitch-ashlar-cpu-py","title":"openhcs/processing/presets/pipelines/10x_mfd_stitch_ashlar_cpu.py","level":2,"span":{"start_line":592,"end_line":605}},{"section_id":"openhcs-processing-presets-pipelines-10x-mfd-stitch-gpu-py","title":"openhcs/processing/presets/pipelines/10x_mfd_stitch_gpu.py","level":2,"span":{"start_line":606,"end_line":619}},{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py","level":2,"span":{"start_line":1111,"end_line":1233}}],"content":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\n---------------------------------------------------------------------------\n\nSource path: openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\nLines included: 482\n\n.. code-block:: python\n\n   \"\"\"CellProfiler neurite outgrowth for a loose Opera Phenix image export.\n\n   This example is for selected Opera Phenix TIFFs that were copied without the\n   plate's ``Index.xml``. A complete Opera Phenix plate should use\n   ``Microscope.OPERAPHENIX`` instead of reconstructing its identities here.\n\n   Edit ``example_inputs`` for the local plate, exact filenames, axis identities,\n   output directory, and viewer port. Set ``map2=None`` for a two-channel workflow\n   where SMI312 delineates neuronal bodies and neurites; the compact MetaXpress\n   preset additionally uses Hoechst as nuclear seeds. Provide MAP2 to use its\n   neuronal-body signal instead. The top-level well filter bounds loading to one\n   well. Step checkpoint and viewer filters are intentionally unset so they inherit\n   that same scope; path-planning filter zero suppresses the ordinary final image\n   copy while typed measurements and object labels remain materialized.\n   \"\"\"\n\n   from __future__ import annotations\n\n   import os\n   import shutil\n   from dataclasses import dataclass\n   from pathlib import Path\n\n   from polystore.streaming.identity import StreamProducerIdentity\n\n   from openhcs.constants.constants import AllComponents, Microscope\n   from openhcs.constants.input_source import InputSource\n   from openhcs.core.aligned_image_payload import AlignedImageSliceContext\n   from openhcs.core.artifacts import ImageArtifactType, ObjectLabelsArtifactType\n   from openhcs.core.config import (\n       LazyNapariStreamingConfig,\n       LazyPathPlanningConfig,\n       LazyProcessingConfig,\n       LazyStepMaterializationConfig,\n       LazyWellFilterConfig,\n       PipelineConfig,\n   )\n   from openhcs.core.function_patterns import get_core_callable\n   from openhcs.core.invocation_artifacts import ArtifactDeclarationStepContext\n   from openhcs.core.source_bindings import (\n       ComponentSelector,\n       LazySourceBindingsConfig,\n       LazyStepSourceBindingsConfig,\n       NamedSourceBinding,\n       SourceFilterClause,\n       SourceFilterMatchType,\n       SourceFilterSubject,\n       SourceSelector,\n   )\n   from openhcs.core.steps.function_output_manifest import (\n       FunctionStepOutputProducerIdentityRequest,\n   )\n   from openhcs.core.steps.function_step import FunctionStep\n   from openhcs.processing.backends.analysis.neurite_outgrowth import (\n       CELLPROFILER_NEURITE_ENGINE_PROFILE,\n   )\n   from openhcs.processing.backends.cellprofiler.feature_enhancement import (\n       enhance_or_suppress_features,\n   )\n   from openhcs.processing.backends.cellprofiler.intensity import measure_image_intensity\n   from openhcs.processing.backends.cellprofiler.medial_axis import medialaxis\n   from openhcs.processing.backends.cellprofiler.primary_objects import (\n       identify_primary_objects,\n   )\n   from openhcs.processing.backends.cellprofiler.secondary import (\n       IdentifySecondaryObjectsModule,\n       identify_secondary_objects,\n   )\n   from openhcs.processing.backends.cellprofiler.skeleton import (\n       measure_object_skeleton_with_branchpoint_image,\n   )\n   from openhcs.processing.backends.cellprofiler.spreadsheet_export import (\n       export_to_spreadsheet,\n   )\n   from openhcs.processing.backends.cellprofiler.thresholding import (\n       threshold,\n   )\n   from openhcs.processing.presets.demo_contribution import PipelineDemoContribution\n\n   NEURITE_BRANCHPOINT_IMAGE_NAME = \"NeuriteBranchpoints\"\n\n\n   @dataclass(frozen=True, slots=True)\n   class SemanticImageSource:\n       \"\"\"One semantic channel reconstructed from an exact loose-export file.\"\"\"\n\n       alias: str\n       filename: str\n       channel: str\n\n\n   @dataclass(frozen=True, slots=True)\n   class LooseOperaPhenixNeuriteInputs:\n       \"\"\"Portable input and output boundary for this example pipeline.\"\"\"\n\n       plate_path: Path\n       output_root: Path\n       well: str\n       site: str\n       z_index: str\n       timepoint: str\n       viewer_port: int\n       hoechst: SemanticImageSource\n       map2: SemanticImageSource | None\n       smi312: SemanticImageSource\n\n       @property\n       def cell_body_source(self) -> SemanticImageSource:\n           \"\"\"Use MAP2 bodies when supplied, otherwise use the SMI312 cell signal.\"\"\"\n\n           return self.smi312 if self.map2 is None else self.map2\n\n       @property\n       def channel_stack(self) -> tuple[SemanticImageSource, ...]:\n           \"\"\"Authoritative semantic order of the assembled channel stack.\"\"\"\n\n           return tuple(\n               source\n               for source in (self.hoechst, self.map2, self.smi312)\n               if source is not None\n           )\n\n       def channel_index(self, source: SemanticImageSource) -> int:\n           \"\"\"Resolve a semantic source against the owned assembled-stack order.\"\"\"\n\n           return self.channel_stack.index(source)\n\n\n   def _exact_image_binding(\n       source: SemanticImageSource,\n       inputs: LooseOperaPhenixNeuriteInputs,\n   ) -> NamedSourceBinding:\n       return NamedSourceBinding(\n           alias=source.alias,\n           selector=SourceSelector(\n               filters=(\n                   SourceFilterClause(\n                       subject=SourceFilterSubject.FILE,\n                       match_type=SourceFilterMatchType.EQUALS,\n                       value=source.filename,\n                   ),\n               ),\n           ),\n           component_identity=(\n               ComponentSelector(AllComponents.WELL, inputs.well),\n               ComponentSelector(AllComponents.SITE, inputs.site),\n               ComponentSelector(AllComponents.CHANNEL, source.channel),\n               ComponentSelector(AllComponents.Z_INDEX, inputs.z_index),\n               ComponentSelector(AllComponents.TIMEPOINT, inputs.timepoint),\n           ),\n       )\n\n\n   def _named_source(alias: str) -> LazyStepSourceBindingsConfig:\n       return LazyStepSourceBindingsConfig(\n           enabled=True,\n           bindings=(NamedSourceBinding(alias=alias),),\n       )\n\n\n   def _qc_stream(\n       inputs: LooseOperaPhenixNeuriteInputs,\n       colormap: str,\n   ) -> LazyNapariStreamingConfig:\n       return LazyNapariStreamingConfig(\n           enabled=True,\n           persistent=True,\n           port=inputs.viewer_port,\n           colormap=colormap,\n       )\n\n\n   def _qc_checkpoint(\n       output_root: Path,\n       sub_dir: str,\n   ) -> LazyStepMaterializationConfig:\n       return LazyStepMaterializationConfig(\n           enabled=True,\n           global_output_folder=output_root,\n           sub_dir=sub_dir,\n       )\n\n\n   def build_loose_operaphenix_neurite_config(\n       inputs: LooseOperaPhenixNeuriteInputs,\n   ) -> PipelineConfig:\n       \"\"\"Build the shared loose-export source and materialization boundary.\"\"\"\n\n       output_root = inputs.output_root.expanduser().resolve()\n       source_bindings = tuple(\n           _exact_image_binding(source, inputs) for source in inputs.channel_stack\n       )\n       return PipelineConfig(\n           microscope=Microscope.SOURCE_BINDINGS,\n           well_filter_config=LazyWellFilterConfig(well_filter=inputs.well),\n           path_planning_config=LazyPathPlanningConfig(\n               well_filter=0,\n               global_output_folder=output_root,\n           ),\n           materialization_results_path=output_root / \"results\",\n           materialize_runtime_artifacts=True,\n           source_bindings_config=LazySourceBindingsConfig(bindings=source_bindings),\n       )\n\n\n   def build_loose_operaphenix_neurite_pipeline(\n       inputs: LooseOperaPhenixNeuriteInputs,\n   ) -> tuple[PipelineConfig, list[FunctionStep]]:\n       \"\"\"Build an SMI312-neurite workflow with MAP2 or SMI312 cell bodies.\"\"\"\n\n       output_root = inputs.output_root.expanduser().resolve()\n       pipeline_config = build_loose_operaphenix_neurite_config(inputs)\n\n       engine = CELLPROFILER_NEURITE_ENGINE_PROFILE\n       pipeline_steps = [\n           FunctionStep(\n               name=\"NeuronBodies\",\n               func=(\n                   identify_primary_objects,\n                   engine.body_detection_kwargs(),\n               ),\n               processing_config=LazyProcessingConfig(\n                   input_source=InputSource.PIPELINE_START,\n               ),\n               source_bindings=_named_source(inputs.cell_body_source.alias),\n               napari_streaming_config=_qc_stream(inputs, \"viridis\"),\n           ),\n           FunctionStep(\n               name=\"SMI312SourceSignal\",\n               func=(\n                   measure_image_intensity,\n                   {\n                       \"calculate_percentiles\": True,\n                       \"percentiles\": (10, 50, 90),\n                   },\n               ),\n               processing_config=LazyProcessingConfig(\n                   input_source=InputSource.PIPELINE_START,\n               ),\n               source_bindings=_named_source(inputs.smi312.alias),\n               step_materialization_config=_qc_checkpoint(\n                   output_root,\n                   \"qc_smi312_signal\",\n               ),\n               napari_streaming_config=_qc_stream(inputs, \"magma\"),\n           ),\n           FunctionStep(\n               name=\"EnhancedNeurites\",\n               func=(\n                   enhance_or_suppress_features,\n                   engine.enhancement_kwargs(),\n               ),\n           ),\n           FunctionStep(\n               name=\"NeuriteForeground\",\n               func=(\n                   threshold,\n                   engine.threshold_kwargs(),\n               ),\n               step_materialization_config=_qc_checkpoint(\n                   output_root,\n                   \"qc_neurite_mask\",\n               ),\n               napari_streaming_config=_qc_stream(inputs, \"gray\"),\n           ),\n           FunctionStep(\n               name=\"NeuriteSkeleton\",\n               func=medialaxis,\n               step_materialization_config=_qc_checkpoint(\n                   output_root,\n                   \"qc_neurite_skeleton\",\n               ),\n               napari_streaming_config=_qc_stream(inputs, \"gray\"),\n           ),\n           FunctionStep(\n               name=\"PerNeuronNeuriteTopology\",\n               func=(\n                   measure_object_skeleton_with_branchpoint_image,\n                   {\n                       \"fill_small_holes\": True,\n                       \"maximum_hole_size\": 10,\n                       \"branchpoint_image_name\": NEURITE_BRANCHPOINT_IMAGE_NAME,\n                   },\n               ),\n               napari_streaming_config=_qc_stream(inputs, \"gray\"),\n           ),\n           FunctionStep(\n               name=\"UnifiedNeurons\",\n               func=(\n                   identify_secondary_objects,\n                   engine.secondary_kwargs(),\n               ),\n               processing_config=LazyProcessingConfig(\n                   input_source=InputSource.PIPELINE_START,\n               ),\n               source_bindings=_named_source(inputs.smi312.alias),\n               napari_streaming_config=_qc_stream(inputs, \"magma\"),\n           ),\n           FunctionStep(\n               name=\"NeuriteSpreadsheetExport\",\n               func=(\n                   export_to_spreadsheet,\n                   {\n                       \"add_image_metadata\": True,\n                       \"add_image_file_names\": True,\n                       \"output_directory\": \"neurite_tables\",\n                       \"export_all_measurement_types\": True,\n                       \"add_filename_prefix\": True,\n                       \"filename_prefix\": f\"{inputs.well}_Neurite_\",\n                   },\n               ),\n           ),\n       ]\n       return pipeline_config, pipeline_steps\n\n\n   def loose_operaphenix_neurite_demo_contribution(\n       *,\n       session_root: Path,\n       source_path: Path | None = None,\n   ) -> PipelineDemoContribution:\n       \"\"\"Contribute the modular CellProfiler neurite workflow to a master run.\n\n       ``source_path`` is the directory containing the three declared loose TIFFs.\n       Set ``OPENHCS_LOOSE_OPERAPHENIX_NEURITE_SOURCE`` when invoking the generic\n       master runner, whose contributor protocol supplies only ``session_root``.\n       \"\"\"\n\n       demo_id = \"loose_operaphenix_cellprofiler_neurite_outgrowth\"\n       title = \"Opera Phenix modular CellProfiler neurite outgrowth\"\n       configured_source = source_path or os.environ.get(\n           \"OPENHCS_LOOSE_OPERAPHENIX_NEURITE_SOURCE\"\n       )\n       if configured_source is None:\n           raise FileNotFoundError(\n               \"Loose Opera Phenix neurite source is not configured. Set \"\n               \"OPENHCS_LOOSE_OPERAPHENIX_NEURITE_SOURCE to the directory \"\n               \"containing the declared Hoechst, MAP2, and SMI312 TIFFs.\"\n           )\n       resolved_source = Path(configured_source).expanduser().resolve()\n       if not resolved_source.is_dir():\n           raise FileNotFoundError(\n               f\"Loose Opera Phenix neurite source directory not found: {resolved_source}.\"\n           )\n\n       resolved_session_root = session_root.expanduser().resolve()\n       plate_path = resolved_session_root / \"plates\" / title\n       output_root = resolved_session_root / \"outputs\" / demo_id\n       inputs = LooseOperaPhenixNeuriteInputs(\n           plate_path=plate_path,\n           output_root=output_root,\n           well=\"R04C09\",\n           site=\"11\",\n           z_index=\"1\",\n           timepoint=\"1\",\n           viewer_port=5888,\n           hoechst=SemanticImageSource(\n               alias=\"Hoechst\",\n               filename=\"r04c09f11p01-ch1sk1fk1fl1.tiff\",\n               channel=\"1\",\n           ),\n           map2=SemanticImageSource(\n               alias=\"MAP2\",\n               filename=\"r04c09f11p01-ch2sk1fk1fl1.tiff\",\n               channel=\"2\",\n           ),\n           smi312=SemanticImageSource(\n               alias=\"SMI312\",\n               filename=\"r04c09f11p01-ch4sk1fk1fl1.tiff\",\n               channel=\"4\",\n           ),\n       )\n\n       def prepare() -> None:\n           missing = tuple(\n               source.filename\n               for source in inputs.channel_stack\n               if not (resolved_source / source.filename).is_file()\n           )\n           if missing:\n               raise FileNotFoundError(\n                   f\"Loose Opera Phenix neurite source {resolved_source} is missing \"\n                   f\"declared TIFFs: {missing}.\"\n               )\n           plate_path.mkdir(parents=True, exist_ok=True)\n           for source in inputs.channel_stack:\n               shutil.copy2(\n                   resolved_source / source.filename,\n                   plate_path / source.filename,\n               )\n\n       pipeline_config, pipeline_steps = build_loose_operaphenix_neurite_pipeline(inputs)\n       analysis_matches = tuple(\n           step\n           for step in pipeline_steps\n           if get_core_callable(step.func) is identify_secondary_objects\n       )\n       topology_matches = tuple(\n           step\n           for step in pipeline_steps\n           if get_core_callable(step.func)\n           is measure_object_skeleton_with_branchpoint_image\n       )\n       if len(analysis_matches) != 1 or len(topology_matches) != 1:\n           raise ValueError(\n               \"Loose Opera Phenix demo requires exactly one secondary-object \"\n               \"analysis and one branchpoint-image topology step.\"\n           )\n       analysis_step = analysis_matches[0]\n       topology_step = topology_matches[0]\n       analysis_step_index = pipeline_steps.index(analysis_step)\n       secondary_output_name = (\n           IdentifySecondaryObjectsModule.canonical_output_artifact_name(\n               artifact_type=ObjectLabelsArtifactType,\n               output_position=0,\n               block_position=0,\n               step_context=ArtifactDeclarationStepContext(\n                   step_name=analysis_step.name,\n                   step_index=analysis_step_index,\n               ),\n           )\n       )\n       return PipelineDemoContribution(\n           demo_id=demo_id,\n           title=title,\n           plate_path=plate_path,\n           pipeline_config=pipeline_config,\n           pipeline_steps=tuple(pipeline_steps),\n           presentation_identity=StreamProducerIdentity.pipeline_output(\n               output_kind=(\n                   FunctionStepOutputProducerIdentityRequest.ARTIFACT_OUTPUT_KIND\n               ),\n               output_key=secondary_output_name,\n               projection_key=secondary_output_name,\n               step_name=analysis_step.name,\n               pipeline_position=None,\n               artifact_kind=ObjectLabelsArtifactType.require_value(),\n           ),\n           supporting_presentation_identities=(\n               StreamProducerIdentity.pipeline_output(\n                   output_kind=AlignedImageSliceContext.MAIN_FLOW_OUTPUT_KIND,\n                   output_key=NEURITE_BRANCHPOINT_IMAGE_NAME,\n                   projection_key=AlignedImageSliceContext.MAIN_FLOW_OUTPUT_KIND,\n                   step_name=topology_step.name,\n                   pipeline_position=None,\n                   artifact_kind=ImageArtifactType.require_value(),\n               ),\n           ),\n           prepare=prepare,\n       )\n\n\n   # Edit this one boundary rather than searching through the pipeline declarations.\n   example_inputs = LooseOperaPhenixNeuriteInputs(\n       plate_path=Path(\"path/to/loose_operaphenix_export\"),\n       output_root=Path(\"openhcs_neurite_output\"),\n       well=\"R04C09\",\n       site=\"11\",\n       z_index=\"1\",\n       timepoint=\"1\",\n       viewer_port=5888,\n       hoechst=SemanticImageSource(\n           alias=\"Hoechst\",\n           filename=\"r04c09f11p01-ch1sk1fk1fl1.tiff\",\n           channel=\"1\",\n       ),\n       map2=SemanticImageSource(\n           alias=\"MAP2\",\n           filename=\"r04c09f11p01-ch2sk1fk1fl1.tiff\",\n           channel=\"2\",\n       ),\n       smi312=SemanticImageSource(\n           alias=\"SMI312\",\n           filename=\"r04c09f11p01-ch4sk1fk1fl1.tiff\",\n           channel=\"4\",\n       ),\n   )\n\n   plate_path = example_inputs.plate_path.expanduser().resolve()\n   pipeline_config, pipeline_steps = build_loose_operaphenix_neurite_pipeline(\n       example_inputs\n   )\n","selected_section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","truncated":false,"max_chars":30000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_24","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_viewer_management","section_id":"spatial-graphs-and-neuronal-morphology","max_chars":12000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_24","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_viewer_management","section_id":"spatial-graphs-and-neuronal-morphology","max_chars":12000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"document\": {\n    \"document_id\": \"openhcs_viewer_management\",\n    \"title\": \"OpenHCS viewer management\",\n    \"summary\": \"How to inspect images in Napari and Fiji, image browser streaming, hyperstacks, viewer instance management, and troubleshooting.\",\n    \"source_path\": \"docs/source/guides/viewer_management.rst\",\n    \"tags\": [\n      \"Napari\",\n      \"Fiji\",\n      \"viewer\",\n      \"image browser\",\n      \"hyperstack\",\n      \"inspection\"\n    ],\n    \"section_count\": 7\n  },\n  \"sections\": [\n    {\n      \"section_id\": \"viewer-streaming\",\n      \"title\": \"Viewer streaming\",\n      \"level\": 1,\n      \"span\": {\n        \"start_line\": 1,\n        \"end_line\": 266\n      }\n    },\n    {\n      \"section_id\": \"desktop-workflow\",\n      \"title\": \"Desktop workflow\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 16,\n        \"end_line\": 30\n      }\n    },\n    {\n      \"section_id\": \"roi-inspection-and-cropping\",\n      \"title\": \"ROI inspection and cropping\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 31,\n        \"end_line\": 96\n      }\n    },\n    {\n      \"section_id\": \"spatial-graphs-and-neuronal-morphology\",\n      \"title\": \"Spatial graphs and neuronal morphology\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 97,\n        \"end_line\": 148\n      }\n    },\n    {\n      \"section_id\": \"choosing-one-step-to-inspect\",\n      \"title\": \"Choosing one step to inspect\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 149,\n        \"end_line\": 172\n      }\n    },\n    {\n      \"section_id\": \"designing-the-final-view-for-the-user\",\n      \"title\": \"Designing the final view for the user\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 173,\n        \"end_line\": 222\n      }\n    },\n    {\n      \"section_id\": \"streaming-checkpointing-and-named-artifacts\",\n      \"title\": \"Streaming, checkpointing, and named artifacts\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 223,\n        \"end_line\": 266\n      }\n    }\n  ],\n  \"content\": \"Spatial graphs and neuronal morphology\\n--------------------------------------\\n\\nA skeleton mask records occupied pixels; it does not preserve nodes, directed\\nedges, parentage, or branch measurements. Callables whose scientific result is\\npath topology should therefore declare a ``SpatialGraphArtifactType`` and return\\none ``SpatialGraph`` containing the authoritative nodes, paths, and scalar edge\\nfeatures.\\n\\nThe same graph can have multiple format projections without duplicating the\\nanalysis. ``SWCOptions`` writes a directed acyclic morphology forest as standard\\nSWC. ``SpatialGraphROIOptions`` writes a 2-D ``.graph.roi.zip`` projection whose\\npolyline members retain graph/node identities and branch features. Viewer\\ncapability routing selects that ROI projection for Napari automatically, where\\nit appears as a native path Shapes layer. Select that layer to see branch\\ndistance, Euclidean distance, tortuosity, distance from the soma, branch type,\\nand neuron identity in the feature table. Selecting a row selects the exact\\nrendered branch. When the graph output declares an object-member subject,\\nselection expands to every branch owned by that object and to the one linked\\naggregate-measurement row. The branch rows remain separate and retain their\\nedge metrics; OpenHCS does not fabricate one disconnected polygon to represent\\nthe neuron. Framework linkage keys live in native layer metadata rather than\\ncluttering the biological feature table.\\n\\nSaved ``.swc`` files are viewer-readable too. The OpenHCS Napari plugin\\nregisters a standard SWC reader and opens the physical morphology as 3-D sample\\nPoints plus parent-child Shapes. Both layers retain the standard sample ID,\\nstructure type, radius, and parent ID columns. Fiji users can open the same SWC\\nthrough Fiji's SNT morphology support. Standard SWC has no field for arbitrary\\nOpenHCS edge measurements, so use the ``.graph.roi.zip`` projection when the\\nfull branch-feature table is the important review surface. Live pipeline\\nviewing projects the in-memory graph directly; it does not serialize and parse\\nSWC first.\\n\\nSWC materialization rejects cyclic or multiple-parent graphs. A generic spatial\\ngraph may still represent a cyclic assay, but it must use a format that can\\npreserve that topology rather than silently losing edges through SWC. The ROI\\nprojection is a visualization/interchange view; the ``SpatialGraph`` remains\\nthe semantic owner.\\n\\nExecution completion also has a typed viewer boundary. Napari drains queued\\nlayer routes incrementally on the Qt thread and reports completed/total update\\ncounts, the active route, completed bounded work units within that route, and\\nwhether one native work unit is currently executing. Control transport owns its\\nsocket independently of Qt, so settlement remains observable while Napari is\\ntriangulating a complex Shapes member. The caller renews its no-progress\\ndeadline when a route or work-unit count advances and does not misclassify a\\ndeclared active native mutation as an idle viewer. A route failure or a route\\nthat neither advances nor executes declared work is an execution failure; a\\nsuccessful transport acknowledgment alone is not evidence that the\\ncorresponding layer was rendered.\\n\",\n  \"selected_section_id\": \"spatial-graphs-and-neuronal-morphology\",\n  \"truncated\": false,\n  \"max_chars\": 12000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"document":{"document_id":"openhcs_viewer_management","title":"OpenHCS viewer management","summary":"How to inspect images in Napari and Fiji, image browser streaming, hyperstacks, viewer instance management, and troubleshooting.","source_path":"docs/source/guides/viewer_management.rst","tags":["Napari","Fiji","viewer","image browser","hyperstack","inspection"],"section_count":7},"sections":[{"section_id":"viewer-streaming","title":"Viewer streaming","level":1,"span":{"start_line":1,"end_line":266}},{"section_id":"desktop-workflow","title":"Desktop workflow","level":2,"span":{"start_line":16,"end_line":30}},{"section_id":"roi-inspection-and-cropping","title":"ROI inspection and cropping","level":2,"span":{"start_line":31,"end_line":96}},{"section_id":"spatial-graphs-and-neuronal-morphology","title":"Spatial graphs and neuronal morphology","level":2,"span":{"start_line":97,"end_line":148}},{"section_id":"choosing-one-step-to-inspect","title":"Choosing one step to inspect","level":2,"span":{"start_line":149,"end_line":172}},{"section_id":"designing-the-final-view-for-the-user","title":"Designing the final view for the user","level":2,"span":{"start_line":173,"end_line":222}},{"section_id":"streaming-checkpointing-and-named-artifacts","title":"Streaming, checkpointing, and named artifacts","level":2,"span":{"start_line":223,"end_line":266}}],"content":"Spatial graphs and neuronal morphology\n--------------------------------------\n\nA skeleton mask records occupied pixels; it does not preserve nodes, directed\nedges, parentage, or branch measurements. Callables whose scientific result is\npath topology should therefore declare a ``SpatialGraphArtifactType`` and return\none ``SpatialGraph`` containing the authoritative nodes, paths, and scalar edge\nfeatures.\n\nThe same graph can have multiple format projections without duplicating the\nanalysis. ``SWCOptions`` writes a directed acyclic morphology forest as standard\nSWC. ``SpatialGraphROIOptions`` writes a 2-D ``.graph.roi.zip`` projection whose\npolyline members retain graph/node identities and branch features. Viewer\ncapability routing selects that ROI projection for Napari automatically, where\nit appears as a native path Shapes layer. Select that layer to see branch\ndistance, Euclidean distance, tortuosity, distance from the soma, branch type,\nand neuron identity in the feature table. Selecting a row selects the exact\nrendered branch. When the graph output declares an object-member subject,\nselection expands to every branch owned by that object and to the one linked\naggregate-measurement row. The branch rows remain separate and retain their\nedge metrics; OpenHCS does not fabricate one disconnected polygon to represent\nthe neuron. Framework linkage keys live in native layer metadata rather than\ncluttering the biological feature table.\n\nSaved ``.swc`` files are viewer-readable too. The OpenHCS Napari plugin\nregisters a standard SWC reader and opens the physical morphology as 3-D sample\nPoints plus parent-child Shapes. Both layers retain the standard sample ID,\nstructure type, radius, and parent ID columns. Fiji users can open the same SWC\nthrough Fiji's SNT morphology support. Standard SWC has no field for arbitrary\nOpenHCS edge measurements, so use the ``.graph.roi.zip`` projection when the\nfull branch-feature table is the important review surface. Live pipeline\nviewing projects the in-memory graph directly; it does not serialize and parse\nSWC first.\n\nSWC materialization rejects cyclic or multiple-parent graphs. A generic spatial\ngraph may still represent a cyclic assay, but it must use a format that can\npreserve that topology rather than silently losing edges through SWC. The ROI\nprojection is a visualization/interchange view; the ``SpatialGraph`` remains\nthe semantic owner.\n\nExecution completion also has a typed viewer boundary. Napari drains queued\nlayer routes incrementally on the Qt thread and reports completed/total update\ncounts, the active route, completed bounded work units within that route, and\nwhether one native work unit is currently executing. Control transport owns its\nsocket independently of Qt, so settlement remains observable while Napari is\ntriangulating a complex Shapes member. The caller renews its no-progress\ndeadline when a route or work-unit count advances and does not misclassify a\ndeclared active native mutation as an idle viewer. A route failure or a route\nthat neither advances nor executes declared work is an execution failure; a\nsuccessful transport acknowledgment alone is not evidence that the\ncorresponding layer was rendered.\n","selected_section_id":"spatial-graphs-and-neuronal-morphology","truncated":false,"max_chars":12000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_25","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_image_sources","section_id":"binding-positions-are-not-microscope-channel-values","max_chars":16000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_25","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_image_sources","section_id":"binding-positions-are-not-microscope-channel-values","max_chars":16000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"document\": {\n    \"document_id\": \"openhcs_image_sources\",\n    \"title\": \"Loading and naming image sources\",\n    \"summary\": \"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.\",\n    \"source_path\": \"docs/source/guide_for_biologists/image_sources.rst\",\n    \"tags\": [\n      \"loading CZI\",\n      \"CZI\",\n      \"OME-TIFF\",\n      \"OME-Zarr\",\n      \"NGFF\",\n      \"TIFF\",\n      \"PNG\",\n      \"mixed image stores\",\n      \"named source bindings\",\n      \"named channels\",\n      \"component metadata\",\n      \"well site channel Z timepoint\",\n      \"source provenance\"\n    ],\n    \"section_count\": 7\n  },\n  \"sections\": [\n    {\n      \"section_id\": \"loading-and-naming-image-sources\",\n      \"title\": \"Loading and naming image sources\",\n      \"level\": 1,\n      \"span\": {\n        \"start_line\": 1,\n        \"end_line\": 349\n      }\n    },\n    {\n      \"section_id\": \"native-layout-versus-complete-metadata\",\n      \"title\": \"Native layout versus complete metadata\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 35,\n        \"end_line\": 70\n      }\n    },\n    {\n      \"section_id\": \"coordinates-and-source-identity\",\n      \"title\": \"Coordinates and source identity\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 71,\n        \"end_line\": 87\n      }\n    },\n    {\n      \"section_id\": \"binding-positions-are-not-microscope-channel-values\",\n      \"title\": \"Binding positions are not microscope channel values\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 88,\n        \"end_line\": 179\n      }\n    },\n    {\n      \"section_id\": \"executable-code-mode-declarations\",\n      \"title\": \"Executable code-mode declarations\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 180,\n        \"end_line\": 293\n      }\n    },\n    {\n      \"section_id\": \"selecting-channels-and-samples\",\n      \"title\": \"Selecting channels and samples\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 294,\n        \"end_line\": 333\n      }\n    },\n    {\n      \"section_id\": \"diagnostics-and-rich-containers\",\n      \"title\": \"Diagnostics and rich containers\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 334,\n        \"end_line\": 349\n      }\n    }\n  ],\n  \"content\": \"Binding positions are not microscope channel values\\n---------------------------------------------------\\n\\nKeep three layers separate:\\n\\npipeline source universe\\n  ``PipelineConfig.source_bindings_config`` declares the full named physical\\n  source universe and the inputs consumed by the nominal handler projection. It\\n  may correctly contain Hoechst channel 1, MAP2 channel 2, and SMI312 channel 4\\n  even when one step needs only two of them.\\n  Seeing all three in the source workspace inventory is valid.\\n\\nper-step binding plan\\n  Resolved ``FunctionStep.source_bindings`` selects and orders the subset for one\\n  invocation after config inheritance. Compilation must preserve that subset and\\n  order in ``CompiledSourceBindingPlan.bindings``.\\n\\ncallable stack positions\\n  ``processing_config.variable_components`` owns the meaning of the assembled\\n  array axis. A callable ``channel_index`` is a zero-based position on that\\n  invocation's assembled axis, not a physical microscope ``CHANNEL`` value.\\n\\nWhen viewer routes carry physical component identities from the first layer,\\nthey retain the declared values; they do not renumber them to the third layer's\\nzero-based positions.\\n\\nFor example, the pipeline universe may be ``(Hoechst[channel=1],\\nMAP2[channel=2], SMI312[channel=4])``. A MetaXpress neurite step has two useful\\ndeclaration choices:\\n\\nsimplest inherited full stack\\n  Set ``input_source=PIPELINE_START`` and\\n  ``variable_components=[CHANNEL]``, but omit ``FunctionStep.source_bindings``.\\n  The step inherits the complete pipeline order, so use\\n  ``nuclear_stain.channel_index=0``, ``cell_body.channel_index=1``, and\\n  ``neurite_channel_index=2``. Source provenance retains physical channels 1,\\n  2, and 4; viewer routes expose those values when the output carries them.\\n\\nlegacy shared-signal subset\\n  Explicitly enable step source bindings and order them as ``(SMI312,\\n  Hoechst)``. The callable then uses ``neurite_channel_index=0`` and\\n  ``nuclear_stain.channel_index=1`` while leaving\\n  ``cell_body.channel_index`` omitted, so SMI312 supplies both the body and\\n  neurite signal. Source provenance remains physical channels 4 and 1. This is\\n  not equivalent to MAP2-seeded analysis: retain MAP2 and use the inherited\\n  three-channel form whenever MAP2 owns the neuronal bodies.\\n\\nIn either option, ``variable_components=[CHANNEL]`` assembles the channel stack.\\nDo not use ``group_by=CHANNEL`` for assembly. ``group_by`` partitions an already\\nassembled value and selects branches only for a dictionary function pattern.\\nFor this non-dictionary MetaXpress callable, an overlapping\\n``group_by=CHANNEL`` is redundant and the compiler normalizes it to\\n``GroupBy.NONE``.\\n\\nThe explicit-subset regression is intentionally generic rather than a\\nMetaXpress channel map: an implicit-main-flow callable must retain its ordered\\nprimary-plane bindings even when it also declares special artifact inputs. That\\nsame rule protects any explicit source subset or reorder.\\n\\nIf a step that selects two bindings appears as three physical channels in the\\nviewer, do not compensate by guessing a third callable index. Diagnose the three\\nlayers in order:\\n\\n1. Inspect the pipeline source universe and its workspace inventory. The MAP2\\n   channel 2 entry is valid here.\\n2. Read the resolved ``FunctionStep.source_bindings`` after inheritance and\\n   confirm the intended subset and exact order.\\n3. Inspect ``CompiledSourceBindingPlan.bindings`` for that step. An unexpectedly\\n   empty or broader plan means the per-step selection was not preserved; the\\n   callable may then receive all three universe planes.\\n4. Check the runtime-matched files for that step and their exact component\\n   metadata.\\n5. Query the current execution's raw viewer payloads and compare each\\n   ``layer_route_key`` and ``payload_route_key`` with its physical component\\n   values. A persistent viewer can also contain routes from an earlier\\n   submission.\\n\\nMAP2 channel 2 in the full source workspace is therefore not itself a leak. It\\nis a leak on a current route for the explicit selected-stack option because that\\nstep's resolved and compiled plan should select only SMI312 and Hoechst. MAP2 on\\na route from the inherited-full-stack option, an older submission, or another\\nstep that selects MAP2 is valid evidence for that route. None of these cases\\nchanges the zero-based positions of the selected callable stack.\\n\\nStep source subsets and reordering select or re-enter original declared sources,\\nespecially at ``PIPELINE_START`` or on a branch that deliberately returns to the\\nsource universe. They do not reinterpret a previous step's output. Stitching,\\nZ projection, channel projection, or filtering may change that output's slice\\ncount and axes; downstream code must use the current artifact provenance plus\\nits own ``variable_components`` declaration. ``group_by`` then partitions that\\nalready assembled downstream value.\\n\",\n  \"selected_section_id\": \"binding-positions-are-not-microscope-channel-values\",\n  \"truncated\": false,\n  \"max_chars\": 16000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"document":{"document_id":"openhcs_image_sources","title":"Loading and naming image sources","summary":"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.","source_path":"docs/source/guide_for_biologists/image_sources.rst","tags":["loading CZI","CZI","OME-TIFF","OME-Zarr","NGFF","TIFF","PNG","mixed image stores","named source bindings","named channels","component metadata","well site channel Z timepoint","source provenance"],"section_count":7},"sections":[{"section_id":"loading-and-naming-image-sources","title":"Loading and naming image sources","level":1,"span":{"start_line":1,"end_line":349}},{"section_id":"native-layout-versus-complete-metadata","title":"Native layout versus complete metadata","level":2,"span":{"start_line":35,"end_line":70}},{"section_id":"coordinates-and-source-identity","title":"Coordinates and source identity","level":2,"span":{"start_line":71,"end_line":87}},{"section_id":"binding-positions-are-not-microscope-channel-values","title":"Binding positions are not microscope channel values","level":2,"span":{"start_line":88,"end_line":179}},{"section_id":"executable-code-mode-declarations","title":"Executable code-mode declarations","level":2,"span":{"start_line":180,"end_line":293}},{"section_id":"selecting-channels-and-samples","title":"Selecting channels and samples","level":2,"span":{"start_line":294,"end_line":333}},{"section_id":"diagnostics-and-rich-containers","title":"Diagnostics and rich containers","level":2,"span":{"start_line":334,"end_line":349}}],"content":"Binding positions are not microscope channel values\n---------------------------------------------------\n\nKeep three layers separate:\n\npipeline source universe\n  ``PipelineConfig.source_bindings_config`` declares the full named physical\n  source universe and the inputs consumed by the nominal handler projection. It\n  may correctly contain Hoechst channel 1, MAP2 channel 2, and SMI312 channel 4\n  even when one step needs only two of them.\n  Seeing all three in the source workspace inventory is valid.\n\nper-step binding plan\n  Resolved ``FunctionStep.source_bindings`` selects and orders the subset for one\n  invocation after config inheritance. Compilation must preserve that subset and\n  order in ``CompiledSourceBindingPlan.bindings``.\n\ncallable stack positions\n  ``processing_config.variable_components`` owns the meaning of the assembled\n  array axis. A callable ``channel_index`` is a zero-based position on that\n  invocation's assembled axis, not a physical microscope ``CHANNEL`` value.\n\nWhen viewer routes carry physical component identities from the first layer,\nthey retain the declared values; they do not renumber them to the third layer's\nzero-based positions.\n\nFor example, the pipeline universe may be ``(Hoechst[channel=1],\nMAP2[channel=2], SMI312[channel=4])``. A MetaXpress neurite step has two useful\ndeclaration choices:\n\nsimplest inherited full stack\n  Set ``input_source=PIPELINE_START`` and\n  ``variable_components=[CHANNEL]``, but omit ``FunctionStep.source_bindings``.\n  The step inherits the complete pipeline order, so use\n  ``nuclear_stain.channel_index=0``, ``cell_body.channel_index=1``, and\n  ``neurite_channel_index=2``. Source provenance retains physical channels 1,\n  2, and 4; viewer routes expose those values when the output carries them.\n\nlegacy shared-signal subset\n  Explicitly enable step source bindings and order them as ``(SMI312,\n  Hoechst)``. The callable then uses ``neurite_channel_index=0`` and\n  ``nuclear_stain.channel_index=1`` while leaving\n  ``cell_body.channel_index`` omitted, so SMI312 supplies both the body and\n  neurite signal. Source provenance remains physical channels 4 and 1. This is\n  not equivalent to MAP2-seeded analysis: retain MAP2 and use the inherited\n  three-channel form whenever MAP2 owns the neuronal bodies.\n\nIn either option, ``variable_components=[CHANNEL]`` assembles the channel stack.\nDo not use ``group_by=CHANNEL`` for assembly. ``group_by`` partitions an already\nassembled value and selects branches only for a dictionary function pattern.\nFor this non-dictionary MetaXpress callable, an overlapping\n``group_by=CHANNEL`` is redundant and the compiler normalizes it to\n``GroupBy.NONE``.\n\nThe explicit-subset regression is intentionally generic rather than a\nMetaXpress channel map: an implicit-main-flow callable must retain its ordered\nprimary-plane bindings even when it also declares special artifact inputs. That\nsame rule protects any explicit source subset or reorder.\n\nIf a step that selects two bindings appears as three physical channels in the\nviewer, do not compensate by guessing a third callable index. Diagnose the three\nlayers in order:\n\n1. Inspect the pipeline source universe and its workspace inventory. The MAP2\n   channel 2 entry is valid here.\n2. Read the resolved ``FunctionStep.source_bindings`` after inheritance and\n   confirm the intended subset and exact order.\n3. Inspect ``CompiledSourceBindingPlan.bindings`` for that step. An unexpectedly\n   empty or broader plan means the per-step selection was not preserved; the\n   callable may then receive all three universe planes.\n4. Check the runtime-matched files for that step and their exact component\n   metadata.\n5. Query the current execution's raw viewer payloads and compare each\n   ``layer_route_key`` and ``payload_route_key`` with its physical component\n   values. A persistent viewer can also contain routes from an earlier\n   submission.\n\nMAP2 channel 2 in the full source workspace is therefore not itself a leak. It\nis a leak on a current route for the explicit selected-stack option because that\nstep's resolved and compiled plan should select only SMI312 and Hoechst. MAP2 on\na route from the inherited-full-stack option, an older submission, or another\nstep that selects MAP2 is valid evidence for that route. None of these cases\nchanges the zero-based positions of the selected callable stack.\n\nStep source subsets and reordering select or re-enter original declared sources,\nespecially at ``PIPELINE_START`` or on a branch that deliberately returns to the\nsource universe. They do not reinterpret a previous step's output. Stitching,\nZ projection, channel projection, or filtering may change that output's slice\ncount and axes; downstream code must use the current artifact provenance plus\nits own ``variable_components`` declaration. ``group_by`` then partitions that\nalready assembled downstream value.\n","selected_section_id":"binding-positions-are-not-microscope-channel-values","truncated":false,"max_chars":16000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_26","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"neuroncyto_ii_crossover_neurite_outgrowth"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_26","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"neuroncyto_ii_crossover_neurite_outgrowth"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"neuroncyto_ii_crossover_neurite_outgrowth\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"master-multi-plate-lab-meeting-showcase\",\n        \"title\": \"Master multi-plate lab-meeting showcase\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 98,\n          \"end_line\": 167\n        }\n      },\n      \"line_number\": 140,\n      \"snippet\": \"--contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution\",\n      \"score\": 1001,\n      \"matched_terms\": [\n        \"neuroncyto_ii_crossover_neurite_outgrowth\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"neuroncyto_ii_crossover_neurite_outgrowth","hits":[{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"master-multi-plate-lab-meeting-showcase","title":"Master multi-plate lab-meeting showcase","level":2,"span":{"start_line":98,"end_line":167}},"line_number":140,"snippet":"--contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution","score":1001,"matched_terms":["neuroncyto_ii_crossover_neurite_outgrowth"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_27","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neuron morphology spatial graph neurite","limit":50,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_27","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neuron morphology spatial graph neurite","limit":50,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.mask_objects\",\n      \"function_id\": \"openhcs:cellprofiler_mask_objects\",\n      \"name\": \"mask_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)\",\n      \"summary\": \"Mask object labels while preserving OpenHCS object-label domain semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.spatial_bin_2d\",\n      \"function_id\": \"openhcs:processors_numpy_processor_spatial_bin_2d\",\n      \"name\": \"spatial_bin_2d\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"spatial_bin_2d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply 2D spatial binning to each slice in the stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.spatial_bin_3d\",\n      \"function_id\": \"openhcs:processors_numpy_processor_spatial_bin_3d\",\n      \"name\": \"spatial_bin_3d\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"spatial_bin_3d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply 3D spatial binning to the entire stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.closing\",\n      \"function_id\": \"openhcs:cellprofiler_closing\",\n      \"name\": \"closing\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale closing to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.combineobjects\",\n      \"function_id\": \"openhcs:cellprofiler_combineobjects\",\n      \"name\": \"combineobjects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Combine objects from two label images using CellProfiler policies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_image\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_image\",\n      \"name\": \"dilate_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale dilation to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_objects\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_objects\",\n      \"name\": \"dilate_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_objects(structuring_element_shape=<StructuringElement.DISK: 'disk'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Dilate labels with CellProfiler's higher-label-overwrites policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_objects_3d\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_objects_3d\",\n      \"name\": \"dilate_objects_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_objects_3d(structuring_element_shape=<StructuringElement.BALL: 'ball'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Dilate 3D labels with CellProfiler's higher-label-overwrites policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_image\",\n      \"function_id\": \"openhcs:cellprofiler_erode_image\",\n      \"name\": \"erode_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale erosion to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_objects\",\n      \"function_id\": \"openhcs:cellprofiler_erode_objects\",\n      \"name\": \"erode_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_objects(structuring_element, size, preserve_midpoints, relabel_objects, ...)\",\n      \"summary\": \"Erode CellProfiler object labels while preserving optional midpoints.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects\",\n      \"function_id\": \"openhcs:cellprofiler_expand_or_shrink_objects\",\n      \"name\": \"expand_or_shrink_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Expand or shrink labeled objects using CellProfiler-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.fill_objects\",\n      \"function_id\": \"openhcs:cellprofiler_fill_objects\",\n      \"name\": \"fill_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"fill_objects(mode=<FillMode.HOLES: 'holes'>, diameter=64.0, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> openhcs.core.runtime_object_labels.ObjectLabelValue\",\n      \"summary\": \"Fill object holes or replace objects with convex hull labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morph\",\n      \"function_id\": \"openhcs:cellprofiler_morph\",\n      \"name\": \"morph\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)\",\n      \"summary\": \"Decorated CellProfiler Morph entrypoint backed by registered strategies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d\",\n      \"function_id\": \"openhcs:cellprofiler_morphological_skeleton_3d\",\n      \"name\": \"morphological_skeleton_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute the 3-D morphological skeleton of a binary volume.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton\",\n      \"function_id\": \"openhcs:cellprofiler_morphologicalskeleton\",\n      \"name\": \"morphologicalskeleton\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphologicalskeleton(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute CellProfiler MorphologicalSkeleton on one image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.opening\",\n      \"function_id\": \"openhcs:cellprofiler_opening\",\n      \"name\": \"opening\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale opening to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.remove_holes\",\n      \"function_id\": \"openhcs:cellprofiler_remove_holes\",\n      \"name\": \"remove_holes\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"remove_holes(diameter=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Fill binary holes smaller than the CellProfiler diameter threshold.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.remove_holes_3d\",\n      \"function_id\": \"openhcs:cellprofiler_remove_holes_3d\",\n      \"name\": \"remove_holes_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"remove_holes_3d(diameter=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Fill volumetric holes smaller than the CellProfiler diameter threshold.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.resize_objects\",\n      \"function_id\": \"openhcs:cellprofiler_resize_objects\",\n      \"name\": \"resize_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"resize_objects(method, factor_x, factor_y, factor_z, ...)\",\n      \"summary\": \"Resize object labels by CellProfiler nearest-neighbor label semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.resize_objects_3d\",\n      \"function_id\": \"openhcs:cellprofiler_resize_objects_3d\",\n      \"name\": \"resize_objects_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"resize_objects_3d(method, factor_x, factor_y, factor_z, ...)\",\n      \"summary\": \"Resize 3D object labels by CellProfiler nearest-neighbor semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers\",\n      \"function_id\": \"openhcs:cellprofiler_shrink_to_object_centers\",\n      \"name\": \"shrink_to_object_centers\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"shrink_to_object_centers(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Transform labeled objects into single-pixel centroid labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers_3d\",\n      \"function_id\": \"openhcs:cellprofiler_shrink_to_object_centers_3d\",\n      \"name\": \"shrink_to_object_centers_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"shrink_to_object_centers_3d(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Transform 3D labeled objects into single-voxel centroid labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects\",\n      \"name\": \"split_or_merge_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Split objects or merge them by distance without a guide image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_per_parent\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects_per_parent\",\n      \"name\": \"split_or_merge_objects_per_parent\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects_per_parent(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Merge child objects through the declared parent-object input.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_with_guide_image\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects_with_guide_image\",\n      \"name\": \"split_or_merge_objects_with_guide_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects_with_guide_image(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Merge objects by distance using the declared guide image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.define_grid_automatic\",\n      \"function_id\": \"openhcs:cellprofiler_define_grid_automatic\",\n      \"name\": \"define_grid_automatic\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"define_grid_automatic(grid_rows, grid_columns, origin, ordering, ...)\",\n      \"summary\": \"Define a CellProfiler grid from object-label centroid extrema.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.define_grid_manual\",\n      \"function_id\": \"openhcs:cellprofiler_define_grid_manual\",\n      \"name\": \"define_grid_manual\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"define_grid_manual(grid_rows, grid_columns, first_spot_x, first_spot_y, ...)\",\n      \"summary\": \"Define a CellProfiler grid manually from two spot references.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.worms.identify_dead_worms\",\n      \"function_id\": \"openhcs:cellprofiler_identify_dead_worms\",\n      \"name\": \"identify_dead_worms\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.worms\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_dead_worms(worm_width, worm_length, angle_count, auto_distance, ...)\",\n      \"summary\": \"Identify straight dead worms by diamond-template matches across angles.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.grid.identify_objects_in_grid\",\n      \"function_id\": \"openhcs:cellprofiler_identify_objects_in_grid\",\n      \"name\": \"identify_objects_in_grid\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.grid\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_objects_in_grid(grid_rows, grid_columns, x_spacing, y_spacing, ...)\",\n      \"summary\": \"Identify objects within each section of a grid pattern.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects\",\n      \"name\": \"identify_secondary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Identify secondary objects without a replacement-primary output.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary\",\n      \"name\": \"identify_secondary_objects_with_replacement_primary\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Execute the contract variant that emits replacement-primary artifacts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_geometry.mask_image\",\n      \"function_id\": \"openhcs:cellprofiler_mask_image\",\n      \"name\": \"mask_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_geometry\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Mask an image using CellProfiler image/object mask semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.match_template\",\n      \"function_id\": \"openhcs:cellprofiler_match_template\",\n      \"name\": \"match_template\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"match_template(template=None, pad_input=True, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Match an image template using normalized cross-correlation.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_quality\",\n      \"name\": \"measure_image_quality\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_quality\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible image-quality metrics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.neighbors.measure_object_neighbors\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_neighbors\",\n      \"name\": \"measure_object_neighbors\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.neighbors\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_neighbors(distance_method, neighbor_distance, consider_discarded_objects, retain_neighbor_count_image, ...)\",\n      \"summary\": \"Measure neighbor relationships between objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.tophat\",\n      \"function_id\": \"openhcs:processors_numpy_processor_tophat\",\n      \"name\": \"tophat\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"tophat(selem_radius, downsample_factor, downsample_anti_aliasing, upsample_order, ...)\",\n      \"summary\": \"Apply white top-hat background subtraction to each image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy\",\n      \"function_id\": \"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy\",\n      \"name\": \"basic_flatfield_correction_numpy\",\n      \"module\": \"openhcs.processing.backends.enhance.basic_processor_numpy\",\n      \"library\": \"openhcs\",\n      \"signature\": \"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)\",\n      \"summary\": \"Correct a shared illumination field with low-rank and sparse decomposition.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"enhance\",\n        \"basic_processor_numpy\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_calculate\",\n      \"name\": \"correct_illumination_calculate\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)\",\n      \"summary\": \"Estimate a smooth illumination correction function from image data.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.skeletonize_and_save.skeletonize_and_save\",\n      \"function_id\": \"openhcs:analysis_skeletonize_and_save_skeletonize_and_save\",\n      \"name\": \"skeletonize_and_save\",\n      \"module\": \"openhcs.processing.backends.analysis.skeletonize_and_save\",\n      \"library\": \"openhcs\",\n      \"signature\": \"skeletonize_and_save(threshold=None, min_component_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]\",\n      \"summary\": \"Skeletonize each image plane and emit CSV measurements and labeled ROIs.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"skeletonize_and_save\"\n      ]\n    }\n  ],\n  \"total\": 44,\n  \"limit\": 50,\n  \"query\": \"neuron morphology spatial graph neurite\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.mask_objects","function_id":"openhcs:cellprofiler_mask_objects","name":"mask_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)","summary":"Mask object labels while preserving OpenHCS object-label domain semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.spatial_bin_2d","function_id":"openhcs:processors_numpy_processor_spatial_bin_2d","name":"spatial_bin_2d","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"spatial_bin_2d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray","summary":"Apply 2D spatial binning to each slice in the stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.spatial_bin_3d","function_id":"openhcs:processors_numpy_processor_spatial_bin_3d","name":"spatial_bin_3d","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"spatial_bin_3d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray","summary":"Apply 3D spatial binning to the entire stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.closing","function_id":"openhcs:cellprofiler_closing","name":"closing","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale closing to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.combineobjects","function_id":"openhcs:cellprofiler_combineobjects","name":"combineobjects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Combine objects from two label images using CellProfiler policies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_image","function_id":"openhcs:cellprofiler_dilate_image","name":"dilate_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale dilation to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_objects","function_id":"openhcs:cellprofiler_dilate_objects","name":"dilate_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_objects(structuring_element_shape=<StructuringElement.DISK: 'disk'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Dilate labels with CellProfiler's higher-label-overwrites policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_objects_3d","function_id":"openhcs:cellprofiler_dilate_objects_3d","name":"dilate_objects_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_objects_3d(structuring_element_shape=<StructuringElement.BALL: 'ball'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Dilate 3D labels with CellProfiler's higher-label-overwrites policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_image","function_id":"openhcs:cellprofiler_erode_image","name":"erode_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale erosion to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_objects","function_id":"openhcs:cellprofiler_erode_objects","name":"erode_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_objects(structuring_element, size, preserve_midpoints, relabel_objects, ...)","summary":"Erode CellProfiler object labels while preserving optional midpoints.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects","function_id":"openhcs:cellprofiler_expand_or_shrink_objects","name":"expand_or_shrink_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Expand or shrink labeled objects using CellProfiler-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.fill_objects","function_id":"openhcs:cellprofiler_fill_objects","name":"fill_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"fill_objects(mode=<FillMode.HOLES: 'holes'>, diameter=64.0, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> openhcs.core.runtime_object_labels.ObjectLabelValue","summary":"Fill object holes or replace objects with convex hull labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morph","function_id":"openhcs:cellprofiler_morph","name":"morph","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)","summary":"Decorated CellProfiler Morph entrypoint backed by registered strategies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d","function_id":"openhcs:cellprofiler_morphological_skeleton_3d","name":"morphological_skeleton_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray","summary":"Compute the 3-D morphological skeleton of a binary volume.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton","function_id":"openhcs:cellprofiler_morphologicalskeleton","name":"morphologicalskeleton","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphologicalskeleton(*, enabled=True) -> numpy.ndarray","summary":"Compute CellProfiler MorphologicalSkeleton on one image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.opening","function_id":"openhcs:cellprofiler_opening","name":"opening","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale opening to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.remove_holes","function_id":"openhcs:cellprofiler_remove_holes","name":"remove_holes","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"remove_holes(diameter=1.0, *, enabled=True) -> numpy.ndarray","summary":"Fill binary holes smaller than the CellProfiler diameter threshold.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.remove_holes_3d","function_id":"openhcs:cellprofiler_remove_holes_3d","name":"remove_holes_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"remove_holes_3d(diameter=1.0, *, enabled=True) -> numpy.ndarray","summary":"Fill volumetric holes smaller than the CellProfiler diameter threshold.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.resize_objects","function_id":"openhcs:cellprofiler_resize_objects","name":"resize_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"resize_objects(method, factor_x, factor_y, factor_z, ...)","summary":"Resize object labels by CellProfiler nearest-neighbor label semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.resize_objects_3d","function_id":"openhcs:cellprofiler_resize_objects_3d","name":"resize_objects_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"resize_objects_3d(method, factor_x, factor_y, factor_z, ...)","summary":"Resize 3D object labels by CellProfiler nearest-neighbor semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers","function_id":"openhcs:cellprofiler_shrink_to_object_centers","name":"shrink_to_object_centers","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"shrink_to_object_centers(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Transform labeled objects into single-pixel centroid labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers_3d","function_id":"openhcs:cellprofiler_shrink_to_object_centers_3d","name":"shrink_to_object_centers_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"shrink_to_object_centers_3d(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Transform 3D labeled objects into single-voxel centroid labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects","function_id":"openhcs:cellprofiler_split_or_merge_objects","name":"split_or_merge_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Split objects or merge them by distance without a guide image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_per_parent","function_id":"openhcs:cellprofiler_split_or_merge_objects_per_parent","name":"split_or_merge_objects_per_parent","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects_per_parent(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Merge child objects through the declared parent-object input.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_with_guide_image","function_id":"openhcs:cellprofiler_split_or_merge_objects_with_guide_image","name":"split_or_merge_objects_with_guide_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects_with_guide_image(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Merge objects by distance using the declared guide image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.define_grid_automatic","function_id":"openhcs:cellprofiler_define_grid_automatic","name":"define_grid_automatic","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"define_grid_automatic(grid_rows, grid_columns, origin, ordering, ...)","summary":"Define a CellProfiler grid from object-label centroid extrema.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.define_grid_manual","function_id":"openhcs:cellprofiler_define_grid_manual","name":"define_grid_manual","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"define_grid_manual(grid_rows, grid_columns, first_spot_x, first_spot_y, ...)","summary":"Define a CellProfiler grid manually from two spot references.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.worms.identify_dead_worms","function_id":"openhcs:cellprofiler_identify_dead_worms","name":"identify_dead_worms","module":"openhcs.processing.backends.cellprofiler.worms","library":"openhcs","signature":"identify_dead_worms(worm_width, worm_length, angle_count, auto_distance, ...)","summary":"Identify straight dead worms by diamond-template matches across angles.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.grid.identify_objects_in_grid","function_id":"openhcs:cellprofiler_identify_objects_in_grid","name":"identify_objects_in_grid","module":"openhcs.processing.backends.cellprofiler.grid","library":"openhcs","signature":"identify_objects_in_grid(grid_rows, grid_columns, x_spacing, y_spacing, ...)","summary":"Identify objects within each section of a grid pattern.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects","function_id":"openhcs:cellprofiler_identify_secondary_objects","name":"identify_secondary_objects","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Identify secondary objects without a replacement-primary output.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary","function_id":"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary","name":"identify_secondary_objects_with_replacement_primary","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Execute the contract variant that emits replacement-primary artifacts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_geometry.mask_image","function_id":"openhcs:cellprofiler_mask_image","name":"mask_image","module":"openhcs.processing.backends.cellprofiler.image_geometry","library":"openhcs","signature":"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray","summary":"Mask an image using CellProfiler image/object mask semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.match_template","function_id":"openhcs:cellprofiler_match_template","name":"match_template","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"match_template(template=None, pad_input=True, *, enabled=True) -> numpy.ndarray","summary":"Match an image template using normalized cross-correlation.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality","function_id":"openhcs:cellprofiler_measure_image_quality","name":"measure_image_quality","module":"openhcs.processing.backends.cellprofiler.image_quality","library":"openhcs","signature":"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)","summary":"Measure CellProfiler-compatible image-quality metrics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.neighbors.measure_object_neighbors","function_id":"openhcs:cellprofiler_measure_object_neighbors","name":"measure_object_neighbors","module":"openhcs.processing.backends.cellprofiler.neighbors","library":"openhcs","signature":"measure_object_neighbors(distance_method, neighbor_distance, consider_discarded_objects, retain_neighbor_count_image, ...)","summary":"Measure neighbor relationships between objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.tophat","function_id":"openhcs:processors_numpy_processor_tophat","name":"tophat","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"tophat(selem_radius, downsample_factor, downsample_anti_aliasing, upsample_order, ...)","summary":"Apply white top-hat background subtraction to each image plane.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy","function_id":"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy","name":"basic_flatfield_correction_numpy","module":"openhcs.processing.backends.enhance.basic_processor_numpy","library":"openhcs","signature":"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)","summary":"Correct a shared illumination field with low-rank and sparse decomposition.","backend_tags":["openhcs","enhance","basic_processor_numpy"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate","function_id":"openhcs:cellprofiler_correct_illumination_calculate","name":"correct_illumination_calculate","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)","summary":"Estimate a smooth illumination correction function from image data.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.skeletonize_and_save.skeletonize_and_save","function_id":"openhcs:analysis_skeletonize_and_save_skeletonize_and_save","name":"skeletonize_and_save","module":"openhcs.processing.backends.analysis.skeletonize_and_save","library":"openhcs","signature":"skeletonize_and_save(threshold=None, min_component_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]","summary":"Skeletonize each image plane and emit CSV measurements and labeled ROIs.","backend_tags":["openhcs","analysis","skeletonize_and_save"]}],"total":44,"limit":50,"query":"neuron morphology spatial graph neurite","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_28","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_28","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'add_step' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'auto_load_pipeline' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'code_pipeline' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Debug\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_target_required\",\n        \"message\": \"Debug controls require a selected plate.\",\n        \"hint\": \"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'del_plate' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'edit_config' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"plate_selection_required\",\n        \"message\": \"PlateManager action 'init_plate' requires a selected plate.\",\n        \"hint\": \"Use openhcs_ui_get_state_surface(surface_id='plate_manager.state') to inspect available rows and selected_scope_ids. If no rows are listed, add a plate first. For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"plate_selection_required\",\n        \"message\": \"PlateManager action 'compile_plate' requires a selected plate.\",\n        \"hint\": \"Use openhcs_ui_get_state_surface(surface_id='plate_manager.state') to inspect available rows and selected_scope_ids. If no rows are listed, add a plate first. For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"plate_selection_required\",\n        \"message\": \"PlateManager action 'run_plate' requires a selected plate.\",\n        \"hint\": \"Use openhcs_ui_get_state_surface(surface_id='plate_manager.state') to inspect available rows and selected_scope_ids. If no rows are listed, add a plate first. For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'view_metadata' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'add_step' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":false,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'auto_load_pipeline' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":false,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'code_pipeline' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"d57c051e2dbb3009086642e504ee5bee4e7b2a942efd8497441c08d9ee26c241","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Debug","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_target_required","message":"Debug controls require a selected plate.","hint":"Use plate_manager.state to select a plate, initialize it, compile it, then read pipeline_debug_toolbar.session.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"80eadb4bbe80e2b2ca9a3c0e4a18161ed819f2d300c4619bbbf0d03d73832fbb","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'del_plate' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'edit_config' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":false,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":{"code":"plate_selection_required","message":"PlateManager action 'init_plate' requires a selected plate.","hint":"Use openhcs_ui_get_state_surface(surface_id='plate_manager.state') to inspect available rows and selected_scope_ids. If no rows are listed, add a plate first. For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":false,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":{"code":"plate_selection_required","message":"PlateManager action 'compile_plate' requires a selected plate.","hint":"Use openhcs_ui_get_state_surface(surface_id='plate_manager.state') to inspect available rows and selected_scope_ids. If no rows are listed, add a plate first. For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":{"code":"plate_selection_required","message":"PlateManager action 'run_plate' requires a selected plate.","hint":"Use openhcs_ui_get_state_surface(surface_id='plate_manager.state') to inspect available rows and selected_scope_ids. If no rows are listed, add a plate first. For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":false,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'view_metadata' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"b6ea882516451303114760908d5f588c80c74083754b691bcc093a949ced9246","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_29","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"preset","limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_29","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"preset","limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"surface_profile\": \"desktop\",\n  \"query\": {\n    \"text\": \"preset\",\n    \"kind\": null,\n    \"workflow_group\": null,\n    \"workflow_stage\": null,\n    \"target_context\": null,\n    \"visibility\": null,\n    \"role\": null,\n    \"has_side_effects\": null,\n    \"side_effect_contains\": null,\n    \"offset\": 0,\n    \"limit\": 50\n  },\n  \"matched_count\": 0,\n  \"returned_count\": 0,\n  \"next_offset\": null,\n  \"capabilities\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","surface_profile":"desktop","query":{"text":"preset","kind":null,"workflow_group":null,"workflow_stage":null,"target_context":null,"visibility":null,"role":null,"has_side_effects":null,"side_effect_contains":null,"offset":0,"limit":50},"matched_count":0,"returned_count":0,"next_offset":null,"capabilities":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_30","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"plate manager","limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_30","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"plate manager","limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"surface_profile\": \"desktop\",\n  \"query\": {\n    \"text\": \"plate manager\",\n    \"kind\": null,\n    \"workflow_group\": null,\n    \"workflow_stage\": null,\n    \"target_context\": null,\n    \"visibility\": null,\n    \"role\": null,\n    \"has_side_effects\": null,\n    \"side_effect_contains\": null,\n    \"offset\": 0,\n    \"limit\": 50\n  },\n  \"matched_count\": 7,\n  \"returned_count\": 7,\n  \"next_offset\": null,\n  \"capabilities\": [\n    {\n      \"name\": \"openhcs_inspect_plate_path\",\n      \"kind\": \"tool\",\n      \"title\": \"Inspect plate path\",\n      \"description\": \"Diagnostic-only, read-only inspection of a local plate folder: microscope handler detection, microscope metadata, image-file samples, filename parse coverage, registry-derived format-specific candidate evidence, workspace-preparation advice, and structured workflow routing. It does not configure a running UI or make a handler override the setup route; use the PlateManager code document plus selected-plate init when the result must remain visible in the desktop.\",\n      \"workflow_group\": \"plate_data\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"plate_path\",\n      \"visibility\": \"beginner\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [],\n      \"data_exposure\": [\n        \"local_plate_path\",\n        \"microscope_metadata\",\n        \"image_file_names\",\n        \"result_artifact_names\",\n        \"filename_parse_summaries\"\n      ],\n      \"security_requirements\": [\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"PlatePathInspectionRequest\",\n      \"output_type\": \"PlatePathInspectionResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_inspect_selected_plate_images\",\n      \"kind\": \"tool\",\n      \"title\": \"Inspect selected plate images\",\n      \"description\": \"Reads the current PlateManager selection from the running UI bridge, requires exactly one selected plate, resolves the selected, source, or output plate target, then returns the same read-only image inventory and microscope metadata produced by openhcs_inspect_plate_path.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"mode_variant\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [\n        \"ui_selected_plate_path\",\n        \"microscope_metadata\",\n        \"image_file_names\",\n        \"result_artifact_names\",\n        \"filename_parse_summaries\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\",\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"SelectedPlateImageInspectionRequest\",\n      \"output_type\": \"SelectedPlateImageInspectionResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_query_selected_plate_files\",\n      \"kind\": \"tool\",\n      \"title\": \"Query selected plate files\",\n      \"description\": \"Reads the current PlateManager selection from the running UI bridge, requires exactly one selected plate, then returns the same image/result file records produced by openhcs_query_plate_files.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"mode_variant\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [\n        \"ui_selected_plate_path\",\n        \"plate_virtual_image_path\",\n        \"plate_source_image_path\",\n        \"result_artifact_names\",\n        \"file_metadata\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\",\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"SelectedPlateFileQueryRequest\",\n      \"output_type\": \"SelectedPlateFileQueryResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_sample_selected_plate_image\",\n      \"kind\": \"tool\",\n      \"title\": \"Sample selected plate image\",\n      \"description\": \"Sample a selected-plate image after reading the current PlateManager selection from the running UI bridge, then reads a bounded native-resolution region from a selected/source/output plate image by virtual/source path. Omit resolution_index for safe automatic selection or pass 0 for exact full-resolution pixels. If no image_path is supplied, it deterministically samples the first image reported by openhcs_inspect_plate_path.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"mode_variant\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [\n        \"ui_selected_plate_path\",\n        \"plate_virtual_image_path\",\n        \"plate_source_image_path\",\n        \"bounded_image_pixels\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\",\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"SelectedPlateImageSampleRequest\",\n      \"output_type\": \"SelectedPlateImageSampleResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_stream_selected_plate_files_to_viewer\",\n      \"kind\": \"tool\",\n      \"title\": \"Stream selected plate files to viewer\",\n      \"description\": \"Reads the current PlateManager selection from the running UI bridge, resolves selected/source/output image or ROI records through the same inventory API as openhcs_ui_query_selected_plate_files, then streams them to a managed viewer.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"mode_variant\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [\n        \"viz\"\n      ],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\",\n        \"napari_or_fiji_viewer_runtime\"\n      ],\n      \"data_exposure\": [\n        \"ui_selected_plate_path\",\n        \"plate_virtual_image_path\",\n        \"plate_source_image_path\",\n        \"result_artifact_names\",\n        \"viewer_connection\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\",\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"SelectedPlateFileStreamRequest\",\n      \"output_type\": \"SelectedPlateFileStreamResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_get_state_surface\",\n      \"kind\": \"tool\",\n      \"title\": \"Get UI state surface\",\n      \"description\": \"Reads or polls one typed UI domain state surface such as plate-manager status rows or bounded live measurement tables.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"status\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [\n        \"local_paths\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiStateSurfaceRequest\",\n      \"output_type\": \"UiStateSurfaceDocument\"\n    },\n    {\n      \"name\": \"openhcs_ui_selected_plate_workflow\",\n      \"kind\": \"tool\",\n      \"title\": \"Selected plate workflow\",\n      \"description\": \"Dispatches init, compile, or run for the current PlateManager selection through the UI bridge, preserving user-visible plate rows, ObjectState snapshots, selected state, and output-plate auto-add.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"execution\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"may_mutate_running_ui_state\",\n        \"may_start_ui_workflow\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiSelectedPlateWorkflowRequest\",\n      \"output_type\": \"UiSelectedPlateWorkflowResult\"\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","surface_profile":"desktop","query":{"text":"plate manager","kind":null,"workflow_group":null,"workflow_stage":null,"target_context":null,"visibility":null,"role":null,"has_side_effects":null,"side_effect_contains":null,"offset":0,"limit":50},"matched_count":7,"returned_count":7,"next_offset":null,"capabilities":[{"name":"openhcs_inspect_plate_path","kind":"tool","title":"Inspect plate path","description":"Diagnostic-only, read-only inspection of a local plate folder: microscope handler detection, microscope metadata, image-file samples, filename parse coverage, registry-derived format-specific candidate evidence, workspace-preparation advice, and structured workflow routing. It does not configure a running UI or make a handler override the setup route; use the PlateManager code document plus selected-plate init when the result must remain visible in the desktop.","workflow_group":"plate_data","workflow_stage":"data_preparation","target_context":"plate_path","visibility":"beginner","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":[],"data_exposure":["local_plate_path","microscope_metadata","image_file_names","result_artifact_names","filename_parse_summaries"],"security_requirements":["AgentPathPolicy readable root"],"input_type":"PlatePathInspectionRequest","output_type":"PlatePathInspectionResult"},{"name":"openhcs_ui_inspect_selected_plate_images","kind":"tool","title":"Inspect selected plate images","description":"Reads the current PlateManager selection from the running UI bridge, requires exactly one selected plate, resolves the selected, source, or output plate target, then returns the same read-only image inventory and microscope metadata produced by openhcs_inspect_plate_path.","workflow_group":"ui_selected_plate","workflow_stage":"data_preparation","target_context":"ui_selected_plate","visibility":"standard","role":"mode_variant","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":["ui_selected_plate_path","microscope_metadata","image_file_names","result_artifact_names","filename_parse_summaries"],"security_requirements":["ui_bridge_auth_token","AgentPathPolicy readable root"],"input_type":"SelectedPlateImageInspectionRequest","output_type":"SelectedPlateImageInspectionResult"},{"name":"openhcs_ui_query_selected_plate_files","kind":"tool","title":"Query selected plate files","description":"Reads the current PlateManager selection from the running UI bridge, requires exactly one selected plate, then returns the same image/result file records produced by openhcs_query_plate_files.","workflow_group":"ui_selected_plate","workflow_stage":"data_preparation","target_context":"ui_selected_plate","visibility":"standard","role":"mode_variant","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":["ui_selected_plate_path","plate_virtual_image_path","plate_source_image_path","result_artifact_names","file_metadata"],"security_requirements":["ui_bridge_auth_token","AgentPathPolicy readable root"],"input_type":"SelectedPlateFileQueryRequest","output_type":"SelectedPlateFileQueryResult"},{"name":"openhcs_ui_sample_selected_plate_image","kind":"tool","title":"Sample selected plate image","description":"Sample a selected-plate image after reading the current PlateManager selection from the running UI bridge, then reads a bounded native-resolution region from a selected/source/output plate image by virtual/source path. Omit resolution_index for safe automatic selection or pass 0 for exact full-resolution pixels. If no image_path is supplied, it deterministically samples the first image reported by openhcs_inspect_plate_path.","workflow_group":"ui_selected_plate","workflow_stage":"data_preparation","target_context":"ui_selected_plate","visibility":"standard","role":"mode_variant","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":["ui_selected_plate_path","plate_virtual_image_path","plate_source_image_path","bounded_image_pixels"],"security_requirements":["ui_bridge_auth_token","AgentPathPolicy readable root"],"input_type":"SelectedPlateImageSampleRequest","output_type":"SelectedPlateImageSampleResult"},{"name":"openhcs_ui_stream_selected_plate_files_to_viewer","kind":"tool","title":"Stream selected plate files to viewer","description":"Reads the current PlateManager selection from the running UI bridge, resolves selected/source/output image or ROI records through the same inventory API as openhcs_ui_query_selected_plate_files, then streams them to a managed viewer.","workflow_group":"ui_selected_plate","workflow_stage":"data_preparation","target_context":"ui_selected_plate","visibility":"standard","role":"mode_variant","read_only":true,"side_effects":[],"requires_network":false,"required_extras":["viz"],"runtime_requirements":["running_openhcs_ui_bridge","napari_or_fiji_viewer_runtime"],"data_exposure":["ui_selected_plate_path","plate_virtual_image_path","plate_source_image_path","result_artifact_names","viewer_connection"],"security_requirements":["ui_bridge_auth_token","AgentPathPolicy readable root"],"input_type":"SelectedPlateFileStreamRequest","output_type":"SelectedPlateFileStreamResult"},{"name":"openhcs_ui_get_state_surface","kind":"tool","title":"Get UI state surface","description":"Reads or polls one typed UI domain state surface such as plate-manager status rows or bounded live measurement tables.","workflow_group":"ui_selected_plate","workflow_stage":"status","target_context":"ui_selected_plate","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":["local_paths"],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiStateSurfaceRequest","output_type":"UiStateSurfaceDocument"},{"name":"openhcs_ui_selected_plate_workflow","kind":"tool","title":"Selected plate workflow","description":"Dispatches init, compile, or run for the current PlateManager selection through the UI bridge, preserving user-visible plate rows, ObjectState snapshots, selected state, and output-plate auto-add.","workflow_group":"ui_selected_plate","workflow_stage":"execution","target_context":"ui_selected_plate","visibility":"standard","role":"primary","read_only":false,"side_effects":["may_mutate_running_ui_state","may_start_ui_workflow"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":[],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiSelectedPlateWorkflowRequest","output_type":"UiSelectedPlateWorkflowResult"}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_31","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"viewer","limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_31","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"viewer","limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"surface_profile\": \"desktop\",\n  \"query\": {\n    \"text\": \"viewer\",\n    \"kind\": null,\n    \"workflow_group\": null,\n    \"workflow_stage\": null,\n    \"target_context\": null,\n    \"visibility\": null,\n    \"role\": null,\n    \"has_side_effects\": null,\n    \"side_effect_contains\": null,\n    \"offset\": 0,\n    \"limit\": 50\n  },\n  \"matched_count\": 13,\n  \"returned_count\": 13,\n  \"next_offset\": null,\n  \"capabilities\": [\n    {\n      \"name\": \"openhcs_stream_plate_files_to_viewer\",\n      \"kind\": \"tool\",\n      \"title\": \"Stream plate files to viewer\",\n      \"description\": \"Resolves image or ROI result records by virtual path, source path, result path, basename, or bounded inventory query, then streams them to a managed viewer through the same core service used by the Image Browser.\",\n      \"workflow_group\": \"plate_data\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"plate_path\",\n      \"visibility\": \"beginner\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [\n        \"viz\"\n      ],\n      \"runtime_requirements\": [\n        \"napari_or_fiji_viewer_runtime\"\n      ],\n      \"data_exposure\": [\n        \"local_plate_path\",\n        \"plate_virtual_image_path\",\n        \"plate_source_image_path\",\n        \"result_artifact_names\",\n        \"viewer_connection\"\n      ],\n      \"security_requirements\": [\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"PlateFileStreamRequest\",\n      \"output_type\": \"PlateFileStreamResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_stream_selected_plate_files_to_viewer\",\n      \"kind\": \"tool\",\n      \"title\": \"Stream selected plate files to viewer\",\n      \"description\": \"Reads the current PlateManager selection from the running UI bridge, resolves selected/source/output image or ROI records through the same inventory API as openhcs_ui_query_selected_plate_files, then streams them to a managed viewer.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"mode_variant\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [\n        \"viz\"\n      ],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\",\n        \"napari_or_fiji_viewer_runtime\"\n      ],\n      \"data_exposure\": [\n        \"ui_selected_plate_path\",\n        \"plate_virtual_image_path\",\n        \"plate_source_image_path\",\n        \"result_artifact_names\",\n        \"viewer_connection\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\",\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"SelectedPlateFileStreamRequest\",\n      \"output_type\": \"SelectedPlateFileStreamResult\"\n    },\n    {\n      \"name\": \"openhcs_inspect_pipeline_source_artifact_plan\",\n      \"kind\": \"tool\",\n      \"title\": \"Inspect source artifact plan\",\n      \"description\": \"Compiles a complete pycodified PipelineDocument with an explicit progress queue and returns bounded axis, step, group-key, virtual source-workspace, path, main-flow checkpoint, viewer-streaming, and artifact-output plans.\",\n      \"workflow_group\": \"pipeline_authoring\",\n      \"workflow_stage\": \"validation\",\n      \"target_context\": \"pipeline_draft\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [],\n      \"data_exposure\": [],\n      \"security_requirements\": [],\n      \"input_type\": \"PipelineSourceArtifactPlanInspectionRequest\",\n      \"output_type\": \"ArtifactPlanInspection\"\n    },\n    {\n      \"name\": \"openhcs_viewer_snapshot_window\",\n      \"kind\": \"tool\",\n      \"title\": \"Snapshot viewer window\",\n      \"description\": \"Captures a running OpenHCS viewer window, such as Napari, through its ZMQ control socket.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"writes_agent_output_file\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_screenshot\",\n        \"local_output_path\"\n      ],\n      \"security_requirements\": [\n        \"agent_path_policy\"\n      ],\n      \"input_type\": \"ViewerWindowSnapshotRequest\",\n      \"output_type\": \"ViewerWindowSnapshotResult\"\n    },\n    {\n      \"name\": \"openhcs_get_viewer_window_state\",\n      \"kind\": \"tool\",\n      \"title\": \"Get viewer window state\",\n      \"description\": \"Returns bounded structured layer, component, axis, payload-summary, and shape-bound state from a running OpenHCS viewer through its ZMQ control socket.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_layer_state\",\n        \"viewer_axis_state\",\n        \"viewer_payload_summaries\",\n        \"viewer_shape_bounds\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowStateRequest\",\n      \"output_type\": \"ViewerWindowStateResult\"\n    },\n    {\n      \"name\": \"openhcs_get_viewer_window_payloads\",\n      \"kind\": \"tool\",\n      \"title\": \"Get viewer window payloads\",\n      \"description\": \"Returns bounded per-layer, per-axis image and shape payload records, including exact optional arrays and shapes, from a running viewer control endpoint. Array values are omitted by default: explicitly set include_array_values=true with a sufficient max_array_elements, or use the image-sampling capability for bounded tiles.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_payload_records\",\n        \"viewer_axis_coordinates\",\n        \"viewer_shape_payloads\",\n        \"viewer_array_values\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowPayloadRequest\",\n      \"output_type\": \"ViewerWindowPayloadResult\"\n    },\n    {\n      \"name\": \"openhcs_sample_viewer_window_image\",\n      \"kind\": \"tool\",\n      \"title\": \"Sample viewer image payload\",\n      \"description\": \"Returns native-resolution bounded image records and bounded pixel samples for routed image payloads from a running viewer control endpoint. Pixel values are omitted by default: set include_array_values=true and keep height*width within max_array_elements; tile a field when exact pixels are needed beyond that bound.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_payload_records\",\n        \"viewer_axis_coordinates\",\n        \"viewer_array_values\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowImageSampleRequest\",\n      \"output_type\": \"ViewerWindowImageSampleResult\"\n    },\n    {\n      \"name\": \"openhcs_summarize_viewer_window_rois\",\n      \"kind\": \"tool\",\n      \"title\": \"Summarize viewer ROI payload\",\n      \"description\": \"Returns compact ROI counts, bounds, area statistics, and examples for shape payloads from a running viewer control endpoint, optionally filtered to one route.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_shape_payloads\",\n        \"viewer_shape_bounds\",\n        \"viewer_roi_statistics\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowRoiSummaryRequest\",\n      \"output_type\": \"ViewerWindowRoiSummaryResult\"\n    },\n    {\n      \"name\": \"openhcs_navigate_viewer_window\",\n      \"kind\": \"tool\",\n      \"title\": \"Navigate viewer window\",\n      \"description\": \"Sets a viewer layer visible or selected, moves zero-based route-local axis indices, and can select one zero-based data_index on a native feature-bearing result layer. The result reports feature_row_count and selected_data_indices so agents can verify the visible overlay and Napari feature-table selection are linked.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"mutates_viewer_window_state\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_layer_state\",\n        \"viewer_axis_state\",\n        \"viewer_feature_row_count\",\n        \"viewer_selected_data_indices\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowNavigationRequest\",\n      \"output_type\": \"ViewerWindowNavigationResult\"\n    },\n    {\n      \"name\": \"openhcs_isolate_viewer_window_layers\",\n      \"kind\": \"tool\",\n      \"title\": \"Isolate viewer layers\",\n      \"description\": \"Shows only selected viewer layers, hides all non-selected viewer layers, selects one layer, and applies route-local axis indices.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"mutates_viewer_window_state\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_layer_state\",\n        \"viewer_axis_state\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowLayerIsolationRequest\",\n      \"output_type\": \"ViewerWindowLayerIsolationResult\"\n    },\n    {\n      \"name\": \"openhcs_probe_viewer_window\",\n      \"kind\": \"tool\",\n      \"title\": \"Probe viewer window\",\n      \"description\": \"Quickly reports whether a running OpenHCS viewer control endpoint is reachable.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"diagnostic\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"diagnostic\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_identity\",\n        \"viewer_layer_counts\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowStateRequest\",\n      \"output_type\": \"ViewerWindowProbeResult\"\n    },\n    {\n      \"name\": \"openhcs_validate_viewer_window_state\",\n      \"kind\": \"tool\",\n      \"title\": \"Validate viewer window state\",\n      \"description\": \"Validates mounted layers, expected axis labels, payload nonzero metadata, routed coordinate coverage, duplicate/missing payload coordinates, and payload spatial compatibility for a running OpenHCS viewer.\",\n      \"workflow_group\": \"viewer_review\",\n      \"workflow_stage\": \"inspection\",\n      \"target_context\": \"viewer_window\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_viewer_server\"\n      ],\n      \"data_exposure\": [\n        \"viewer_layer_state\",\n        \"viewer_axis_state\",\n        \"viewer_payload_summaries\",\n        \"viewer_coordinate_coverage\",\n        \"viewer_payload_spatial_compatibility\"\n      ],\n      \"security_requirements\": [],\n      \"input_type\": \"ViewerWindowValidationRequest\",\n      \"output_type\": \"ViewerWindowValidationSummaryResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_wait_for_operation_receipt\",\n      \"kind\": \"tool\",\n      \"title\": \"Wait for UI bridge mutation receipt\",\n      \"description\": \"Waits once for a running-UI bridge mutation receipt to reach completed, failed, or another exact terminal bridge status, preserving outcome, timestamps, errors, and warnings. This confirms bridge dispatch processing only; it does not wait for a compile, run, viewer, or other domain workflow to finish. Read that workflow's authoritative state surface separately.\",\n      \"workflow_group\": \"ui_control\",\n      \"workflow_stage\": \"status\",\n      \"target_context\": \"ui_bridge\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiBridgeOperationWaitRequest\",\n      \"output_type\": \"UiBridgeOperationRef\"\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","surface_profile":"desktop","query":{"text":"viewer","kind":null,"workflow_group":null,"workflow_stage":null,"target_context":null,"visibility":null,"role":null,"has_side_effects":null,"side_effect_contains":null,"offset":0,"limit":50},"matched_count":13,"returned_count":13,"next_offset":null,"capabilities":[{"name":"openhcs_stream_plate_files_to_viewer","kind":"tool","title":"Stream plate files to viewer","description":"Resolves image or ROI result records by virtual path, source path, result path, basename, or bounded inventory query, then streams them to a managed viewer through the same core service used by the Image Browser.","workflow_group":"plate_data","workflow_stage":"data_preparation","target_context":"plate_path","visibility":"beginner","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":["viz"],"runtime_requirements":["napari_or_fiji_viewer_runtime"],"data_exposure":["local_plate_path","plate_virtual_image_path","plate_source_image_path","result_artifact_names","viewer_connection"],"security_requirements":["AgentPathPolicy readable root"],"input_type":"PlateFileStreamRequest","output_type":"PlateFileStreamResult"},{"name":"openhcs_ui_stream_selected_plate_files_to_viewer","kind":"tool","title":"Stream selected plate files to viewer","description":"Reads the current PlateManager selection from the running UI bridge, resolves selected/source/output image or ROI records through the same inventory API as openhcs_ui_query_selected_plate_files, then streams them to a managed viewer.","workflow_group":"ui_selected_plate","workflow_stage":"data_preparation","target_context":"ui_selected_plate","visibility":"standard","role":"mode_variant","read_only":true,"side_effects":[],"requires_network":false,"required_extras":["viz"],"runtime_requirements":["running_openhcs_ui_bridge","napari_or_fiji_viewer_runtime"],"data_exposure":["ui_selected_plate_path","plate_virtual_image_path","plate_source_image_path","result_artifact_names","viewer_connection"],"security_requirements":["ui_bridge_auth_token","AgentPathPolicy readable root"],"input_type":"SelectedPlateFileStreamRequest","output_type":"SelectedPlateFileStreamResult"},{"name":"openhcs_inspect_pipeline_source_artifact_plan","kind":"tool","title":"Inspect source artifact plan","description":"Compiles a complete pycodified PipelineDocument with an explicit progress queue and returns bounded axis, step, group-key, virtual source-workspace, path, main-flow checkpoint, viewer-streaming, and artifact-output plans.","workflow_group":"pipeline_authoring","workflow_stage":"validation","target_context":"pipeline_draft","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":[],"data_exposure":[],"security_requirements":[],"input_type":"PipelineSourceArtifactPlanInspectionRequest","output_type":"ArtifactPlanInspection"},{"name":"openhcs_viewer_snapshot_window","kind":"tool","title":"Snapshot viewer window","description":"Captures a running OpenHCS viewer window, such as Napari, through its ZMQ control socket.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":false,"side_effects":["writes_agent_output_file"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_screenshot","local_output_path"],"security_requirements":["agent_path_policy"],"input_type":"ViewerWindowSnapshotRequest","output_type":"ViewerWindowSnapshotResult"},{"name":"openhcs_get_viewer_window_state","kind":"tool","title":"Get viewer window state","description":"Returns bounded structured layer, component, axis, payload-summary, and shape-bound state from a running OpenHCS viewer through its ZMQ control socket.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_layer_state","viewer_axis_state","viewer_payload_summaries","viewer_shape_bounds"],"security_requirements":[],"input_type":"ViewerWindowStateRequest","output_type":"ViewerWindowStateResult"},{"name":"openhcs_get_viewer_window_payloads","kind":"tool","title":"Get viewer window payloads","description":"Returns bounded per-layer, per-axis image and shape payload records, including exact optional arrays and shapes, from a running viewer control endpoint. Array values are omitted by default: explicitly set include_array_values=true with a sufficient max_array_elements, or use the image-sampling capability for bounded tiles.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_payload_records","viewer_axis_coordinates","viewer_shape_payloads","viewer_array_values"],"security_requirements":[],"input_type":"ViewerWindowPayloadRequest","output_type":"ViewerWindowPayloadResult"},{"name":"openhcs_sample_viewer_window_image","kind":"tool","title":"Sample viewer image payload","description":"Returns native-resolution bounded image records and bounded pixel samples for routed image payloads from a running viewer control endpoint. Pixel values are omitted by default: set include_array_values=true and keep height*width within max_array_elements; tile a field when exact pixels are needed beyond that bound.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_payload_records","viewer_axis_coordinates","viewer_array_values"],"security_requirements":[],"input_type":"ViewerWindowImageSampleRequest","output_type":"ViewerWindowImageSampleResult"},{"name":"openhcs_summarize_viewer_window_rois","kind":"tool","title":"Summarize viewer ROI payload","description":"Returns compact ROI counts, bounds, area statistics, and examples for shape payloads from a running viewer control endpoint, optionally filtered to one route.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_shape_payloads","viewer_shape_bounds","viewer_roi_statistics"],"security_requirements":[],"input_type":"ViewerWindowRoiSummaryRequest","output_type":"ViewerWindowRoiSummaryResult"},{"name":"openhcs_navigate_viewer_window","kind":"tool","title":"Navigate viewer window","description":"Sets a viewer layer visible or selected, moves zero-based route-local axis indices, and can select one zero-based data_index on a native feature-bearing result layer. The result reports feature_row_count and selected_data_indices so agents can verify the visible overlay and Napari feature-table selection are linked.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":false,"side_effects":["mutates_viewer_window_state"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_layer_state","viewer_axis_state","viewer_feature_row_count","viewer_selected_data_indices"],"security_requirements":[],"input_type":"ViewerWindowNavigationRequest","output_type":"ViewerWindowNavigationResult"},{"name":"openhcs_isolate_viewer_window_layers","kind":"tool","title":"Isolate viewer layers","description":"Shows only selected viewer layers, hides all non-selected viewer layers, selects one layer, and applies route-local axis indices.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":false,"side_effects":["mutates_viewer_window_state"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_layer_state","viewer_axis_state"],"security_requirements":[],"input_type":"ViewerWindowLayerIsolationRequest","output_type":"ViewerWindowLayerIsolationResult"},{"name":"openhcs_probe_viewer_window","kind":"tool","title":"Probe viewer window","description":"Quickly reports whether a running OpenHCS viewer control endpoint is reachable.","workflow_group":"viewer_review","workflow_stage":"diagnostic","target_context":"viewer_window","visibility":"standard","role":"diagnostic","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_identity","viewer_layer_counts"],"security_requirements":[],"input_type":"ViewerWindowStateRequest","output_type":"ViewerWindowProbeResult"},{"name":"openhcs_validate_viewer_window_state","kind":"tool","title":"Validate viewer window state","description":"Validates mounted layers, expected axis labels, payload nonzero metadata, routed coordinate coverage, duplicate/missing payload coordinates, and payload spatial compatibility for a running OpenHCS viewer.","workflow_group":"viewer_review","workflow_stage":"inspection","target_context":"viewer_window","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_viewer_server"],"data_exposure":["viewer_layer_state","viewer_axis_state","viewer_payload_summaries","viewer_coordinate_coverage","viewer_payload_spatial_compatibility"],"security_requirements":[],"input_type":"ViewerWindowValidationRequest","output_type":"ViewerWindowValidationSummaryResult"},{"name":"openhcs_ui_wait_for_operation_receipt","kind":"tool","title":"Wait for UI bridge mutation receipt","description":"Waits once for a running-UI bridge mutation receipt to reach completed, failed, or another exact terminal bridge status, preserving outcome, timestamps, errors, and warnings. This confirms bridge dispatch processing only; it does not wait for a compile, run, viewer, or other domain workflow to finish. Read that workflow's authoritative state surface separately.","workflow_group":"ui_control","workflow_stage":"status","target_context":"ui_bridge","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":[],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiBridgeOperationWaitRequest","output_type":"UiBridgeOperationRef"}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_32","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"workflow","limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_32","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_capabilities","arguments":{"text":"workflow","limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"surface_profile\": \"desktop\",\n  \"query\": {\n    \"text\": \"workflow\",\n    \"kind\": null,\n    \"workflow_group\": null,\n    \"workflow_stage\": null,\n    \"target_context\": null,\n    \"visibility\": null,\n    \"role\": null,\n    \"has_side_effects\": null,\n    \"side_effect_contains\": null,\n    \"offset\": 0,\n    \"limit\": 50\n  },\n  \"matched_count\": 7,\n  \"returned_count\": 7,\n  \"next_offset\": null,\n  \"capabilities\": [\n    {\n      \"name\": \"openhcs_search_capabilities\",\n      \"kind\": \"tool\",\n      \"title\": \"Search capabilities\",\n      \"description\": \"Returns a bounded task-specific projection of the selected canonical capability registry. Filter by registry-owned workflow group, stage, target context, visibility, role, side effects, or free text before choosing tools.\",\n      \"workflow_group\": \"discovery\",\n      \"workflow_stage\": \"discovery\",\n      \"target_context\": \"server\",\n      \"visibility\": \"beginner\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [],\n      \"data_exposure\": [],\n      \"security_requirements\": [],\n      \"input_type\": \"AgentCapabilitySearchRequest\",\n      \"output_type\": \"AgentCapabilitySearchResult\"\n    },\n    {\n      \"name\": \"openhcs_inspect_plate_path\",\n      \"kind\": \"tool\",\n      \"title\": \"Inspect plate path\",\n      \"description\": \"Diagnostic-only, read-only inspection of a local plate folder: microscope handler detection, microscope metadata, image-file samples, filename parse coverage, registry-derived format-specific candidate evidence, workspace-preparation advice, and structured workflow routing. It does not configure a running UI or make a handler override the setup route; use the PlateManager code document plus selected-plate init when the result must remain visible in the desktop.\",\n      \"workflow_group\": \"plate_data\",\n      \"workflow_stage\": \"data_preparation\",\n      \"target_context\": \"plate_path\",\n      \"visibility\": \"beginner\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [],\n      \"data_exposure\": [\n        \"local_plate_path\",\n        \"microscope_metadata\",\n        \"image_file_names\",\n        \"result_artifact_names\",\n        \"filename_parse_summaries\"\n      ],\n      \"security_requirements\": [\n        \"AgentPathPolicy readable root\"\n      ],\n      \"input_type\": \"PlatePathInspectionRequest\",\n      \"output_type\": \"PlatePathInspectionResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_list_state_surfaces\",\n      \"kind\": \"tool\",\n      \"title\": \"List UI state surfaces\",\n      \"description\": \"Lists pollable domain state surfaces, including workflow status and live measurement results, with flat surface_id values for follow-up reads.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"status\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": null,\n      \"output_type\": \"UiStateSurfaceCatalog\"\n    },\n    {\n      \"name\": \"openhcs_ui_invoke_action\",\n      \"kind\": \"tool\",\n      \"title\": \"Invoke UI action\",\n      \"description\": \"Dispatches one running-UI action using the selection_revision_token from openhcs_ui_list_actions; workflow progress is polled through related state surfaces.\",\n      \"workflow_group\": \"ui_control\",\n      \"workflow_stage\": \"control\",\n      \"target_context\": \"ui_bridge\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"may_mutate_running_ui_state\",\n        \"may_start_ui_workflow\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiActionInvokeRequest\",\n      \"output_type\": \"UiActionInvokeResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_selected_plate_workflow\",\n      \"kind\": \"tool\",\n      \"title\": \"Selected plate workflow\",\n      \"description\": \"Dispatches init, compile, or run for the current PlateManager selection through the UI bridge, preserving user-visible plate rows, ObjectState snapshots, selected state, and output-plate auto-add.\",\n      \"workflow_group\": \"ui_selected_plate\",\n      \"workflow_stage\": \"execution\",\n      \"target_context\": \"ui_selected_plate\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"may_mutate_running_ui_state\",\n        \"may_start_ui_workflow\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiSelectedPlateWorkflowRequest\",\n      \"output_type\": \"UiSelectedPlateWorkflowResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_apply_code_document\",\n      \"kind\": \"tool\",\n      \"title\": \"Apply UI code document\",\n      \"description\": \"Applies an edited UI code document through the running PyQt workflow with revision protection, returning the resulting ObjectState snapshot, undo snapshot, and revision tokens.\",\n      \"workflow_group\": \"ui_state_editing\",\n      \"workflow_stage\": \"state_editing\",\n      \"target_context\": \"ui_code_document\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": false,\n      \"side_effects\": [\n        \"mutates_running_ui_state\"\n      ],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [\n        \"local_paths_in_source\",\n        \"ui_revision_tokens\",\n        \"object_state_snapshot_refs\",\n        \"object_state_undo_targets\"\n      ],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiCodeDocumentApplyRequest\",\n      \"output_type\": \"UiCodeDocumentApplyResult\"\n    },\n    {\n      \"name\": \"openhcs_ui_wait_for_operation_receipt\",\n      \"kind\": \"tool\",\n      \"title\": \"Wait for UI bridge mutation receipt\",\n      \"description\": \"Waits once for a running-UI bridge mutation receipt to reach completed, failed, or another exact terminal bridge status, preserving outcome, timestamps, errors, and warnings. This confirms bridge dispatch processing only; it does not wait for a compile, run, viewer, or other domain workflow to finish. Read that workflow's authoritative state surface separately.\",\n      \"workflow_group\": \"ui_control\",\n      \"workflow_stage\": \"status\",\n      \"target_context\": \"ui_bridge\",\n      \"visibility\": \"standard\",\n      \"role\": \"primary\",\n      \"read_only\": true,\n      \"side_effects\": [],\n      \"requires_network\": false,\n      \"required_extras\": [],\n      \"runtime_requirements\": [\n        \"running_openhcs_ui_bridge\"\n      ],\n      \"data_exposure\": [],\n      \"security_requirements\": [\n        \"ui_bridge_auth_token\"\n      ],\n      \"input_type\": \"UiBridgeOperationWaitRequest\",\n      \"output_type\": \"UiBridgeOperationRef\"\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","surface_profile":"desktop","query":{"text":"workflow","kind":null,"workflow_group":null,"workflow_stage":null,"target_context":null,"visibility":null,"role":null,"has_side_effects":null,"side_effect_contains":null,"offset":0,"limit":50},"matched_count":7,"returned_count":7,"next_offset":null,"capabilities":[{"name":"openhcs_search_capabilities","kind":"tool","title":"Search capabilities","description":"Returns a bounded task-specific projection of the selected canonical capability registry. Filter by registry-owned workflow group, stage, target context, visibility, role, side effects, or free text before choosing tools.","workflow_group":"discovery","workflow_stage":"discovery","target_context":"server","visibility":"beginner","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":[],"data_exposure":[],"security_requirements":[],"input_type":"AgentCapabilitySearchRequest","output_type":"AgentCapabilitySearchResult"},{"name":"openhcs_inspect_plate_path","kind":"tool","title":"Inspect plate path","description":"Diagnostic-only, read-only inspection of a local plate folder: microscope handler detection, microscope metadata, image-file samples, filename parse coverage, registry-derived format-specific candidate evidence, workspace-preparation advice, and structured workflow routing. It does not configure a running UI or make a handler override the setup route; use the PlateManager code document plus selected-plate init when the result must remain visible in the desktop.","workflow_group":"plate_data","workflow_stage":"data_preparation","target_context":"plate_path","visibility":"beginner","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":[],"data_exposure":["local_plate_path","microscope_metadata","image_file_names","result_artifact_names","filename_parse_summaries"],"security_requirements":["AgentPathPolicy readable root"],"input_type":"PlatePathInspectionRequest","output_type":"PlatePathInspectionResult"},{"name":"openhcs_ui_list_state_surfaces","kind":"tool","title":"List UI state surfaces","description":"Lists pollable domain state surfaces, including workflow status and live measurement results, with flat surface_id values for follow-up reads.","workflow_group":"ui_selected_plate","workflow_stage":"status","target_context":"ui_selected_plate","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":[],"security_requirements":["ui_bridge_auth_token"],"input_type":null,"output_type":"UiStateSurfaceCatalog"},{"name":"openhcs_ui_invoke_action","kind":"tool","title":"Invoke UI action","description":"Dispatches one running-UI action using the selection_revision_token from openhcs_ui_list_actions; workflow progress is polled through related state surfaces.","workflow_group":"ui_control","workflow_stage":"control","target_context":"ui_bridge","visibility":"standard","role":"primary","read_only":false,"side_effects":["may_mutate_running_ui_state","may_start_ui_workflow"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":[],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiActionInvokeRequest","output_type":"UiActionInvokeResult"},{"name":"openhcs_ui_selected_plate_workflow","kind":"tool","title":"Selected plate workflow","description":"Dispatches init, compile, or run for the current PlateManager selection through the UI bridge, preserving user-visible plate rows, ObjectState snapshots, selected state, and output-plate auto-add.","workflow_group":"ui_selected_plate","workflow_stage":"execution","target_context":"ui_selected_plate","visibility":"standard","role":"primary","read_only":false,"side_effects":["may_mutate_running_ui_state","may_start_ui_workflow"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":[],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiSelectedPlateWorkflowRequest","output_type":"UiSelectedPlateWorkflowResult"},{"name":"openhcs_ui_apply_code_document","kind":"tool","title":"Apply UI code document","description":"Applies an edited UI code document through the running PyQt workflow with revision protection, returning the resulting ObjectState snapshot, undo snapshot, and revision tokens.","workflow_group":"ui_state_editing","workflow_stage":"state_editing","target_context":"ui_code_document","visibility":"standard","role":"primary","read_only":false,"side_effects":["mutates_running_ui_state"],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":["local_paths_in_source","ui_revision_tokens","object_state_snapshot_refs","object_state_undo_targets"],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiCodeDocumentApplyRequest","output_type":"UiCodeDocumentApplyResult"},{"name":"openhcs_ui_wait_for_operation_receipt","kind":"tool","title":"Wait for UI bridge mutation receipt","description":"Waits once for a running-UI bridge mutation receipt to reach completed, failed, or another exact terminal bridge status, preserving outcome, timestamps, errors, and warnings. This confirms bridge dispatch processing only; it does not wait for a compile, run, viewer, or other domain workflow to finish. Read that workflow's authoritative state surface separately.","workflow_group":"ui_control","workflow_stage":"status","target_context":"ui_bridge","visibility":"standard","role":"primary","read_only":true,"side_effects":[],"requires_network":false,"required_extras":[],"runtime_requirements":["running_openhcs_ui_bridge"],"data_exposure":[],"security_requirements":["ui_bridge_auth_token"],"input_type":"UiBridgeOperationWaitRequest","output_type":"UiBridgeOperationRef"}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_33","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"spatialgraph","limit":50,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_33","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"spatialgraph","limit":50,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [],\n  \"total\": 0,\n  \"limit\": 50,\n  \"query\": \"spatialgraph\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[],"total":0,"limit":50,"query":"spatialgraph","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_34","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"skeleton graph","limit":50,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_34","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"skeleton graph","limit":50,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.skeleton.measure_image_skeleton\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_skeleton\",\n      \"name\": \"measure_image_skeleton\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.skeleton\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_skeleton(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure branches and endpoints in a 2-D skeletonized image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.skeleton.measure_image_skeleton_3d\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_skeleton_3d\",\n      \"name\": \"measure_image_skeleton_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.skeleton\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_skeleton_3d(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure branches and endpoints in a 3-D skeletonized image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.skeleton.measure_object_skeleton\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_skeleton\",\n      \"name\": \"measure_object_skeleton\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.skeleton\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_skeleton(fill_small_holes=True, maximum_hole_size=10, *, enabled=True) -> tuple[openhcs.core.runtime_array_values.RuntimeArrayPayload | numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure branching structures in skeletonized images relative to seed objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.skeleton.measure_object_skeleton_with_branchpoint_image\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_skeleton_with_branchpoint_image\",\n      \"name\": \"measure_object_skeleton_with_branchpoint_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.skeleton\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_skeleton_with_branchpoint_image(fill_small_holes=True, maximum_hole_size=10, branchpoint_image_name='BranchpointImage', *, enabled=True) -> tuple[openhcs.core.runtime_array_values.RuntimeArrayPayload | numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure object skeletons and retain the named branchpoint RGB image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d\",\n      \"function_id\": \"openhcs:cellprofiler_morphological_skeleton_3d\",\n      \"name\": \"morphological_skeleton_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute the 3-D morphological skeleton of a binary volume.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton\",\n      \"function_id\": \"openhcs:cellprofiler_morphologicalskeleton\",\n      \"name\": \"morphologicalskeleton\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphologicalskeleton(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute CellProfiler MorphologicalSkeleton on one image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.skan_axon_analysis.skan_axon_skeletonize_and_analyze\",\n      \"function_id\": \"openhcs:analysis_skan_axon_analysis_skan_axon_skeletonize_and_analyze\",\n      \"name\": \"skan_axon_skeletonize_and_analyze\",\n      \"module\": \"openhcs.processing.backends.analysis.skan_axon_analysis\",\n      \"library\": \"openhcs\",\n      \"signature\": \"skan_axon_skeletonize_and_analyze(voxel_spacing, threshold_method, threshold_value, min_object_size, ...)\",\n      \"summary\": \"Skeletonize axon images and perform comprehensive skeleton analysis.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"skan_axon_analysis\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.skeletonize_and_save.skeletonize_and_save\",\n      \"function_id\": \"openhcs:analysis_skeletonize_and_save_skeletonize_and_save\",\n      \"name\": \"skeletonize_and_save\",\n      \"module\": \"openhcs.processing.backends.analysis.skeletonize_and_save\",\n      \"library\": \"openhcs\",\n      \"signature\": \"skeletonize_and_save(threshold=None, min_component_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]\",\n      \"summary\": \"Skeletonize each image plane and emit CSV measurements and labeled ROIs.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"skeletonize_and_save\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects\",\n      \"function_id\": \"openhcs:cellprofiler_expand_or_shrink_objects\",\n      \"name\": \"expand_or_shrink_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Expand or shrink labeled objects using CellProfiler-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.object_overlap.measure_object_overlap_with_emd\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_overlap_with_emd\",\n      \"name\": \"measure_object_overlap_with_emd\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.object_overlap\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_overlap_with_emd(max_points, decimation_method, max_distance, penalize_missing, ...)\",\n      \"summary\": \"Measure object overlap including Earth Mover's Distance.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.object_overlap.measureimageoverlap_with_emd\",\n      \"function_id\": \"openhcs:cellprofiler_measureimageoverlap_with_emd\",\n      \"name\": \"measureimageoverlap_with_emd\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.object_overlap\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measureimageoverlap_with_emd(max_distance, penalize_missing, decimation_method, max_points, ...)\",\n      \"summary\": \"Measure binary overlap including Earth Mover's Distance.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.worms.untangle_worms\",\n      \"function_id\": \"openhcs:cellprofiler_untangle_worms\",\n      \"name\": \"untangle_worms\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.worms\",\n      \"library\": \"openhcs\",\n      \"signature\": \"untangle_worms(overlap_style, min_worm_area, max_worm_area, num_control_points, ...)\",\n      \"summary\": \"Untangle worms while excluding pixels shared by multiple worms.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.worms.untangle_worms_both\",\n      \"function_id\": \"openhcs:cellprofiler_untangle_worms_both\",\n      \"name\": \"untangle_worms_both\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.worms\",\n      \"library\": \"openhcs\",\n      \"signature\": \"untangle_worms_both(overlap_style, min_worm_area, max_worm_area, num_control_points, ...)\",\n      \"summary\": \"Untangle worms and return both overlapping and exclusive object sets.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.worms.untangle_worms_with_overlap\",\n      \"function_id\": \"openhcs:cellprofiler_untangle_worms_with_overlap\",\n      \"name\": \"untangle_worms_with_overlap\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.worms\",\n      \"library\": \"openhcs\",\n      \"signature\": \"untangle_worms_with_overlap(overlap_style, min_worm_area, max_worm_area, num_control_points, ...)\",\n      \"summary\": \"Untangle worms while retaining pixels shared by multiple worms.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.medial_axis.medialaxis\",\n      \"function_id\": \"openhcs:cellprofiler_medialaxis\",\n      \"name\": \"medialaxis\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.medial_axis\",\n      \"library\": \"openhcs\",\n      \"signature\": \"medialaxis(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute the medial axis (skeleton) of a binary image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    }\n  ],\n  \"total\": 18,\n  \"limit\": 50,\n  \"query\": \"skeleton graph\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.skeleton.measure_image_skeleton","function_id":"openhcs:cellprofiler_measure_image_skeleton","name":"measure_image_skeleton","module":"openhcs.processing.backends.cellprofiler.skeleton","library":"openhcs","signature":"measure_image_skeleton(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure branches and endpoints in a 2-D skeletonized image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.skeleton.measure_image_skeleton_3d","function_id":"openhcs:cellprofiler_measure_image_skeleton_3d","name":"measure_image_skeleton_3d","module":"openhcs.processing.backends.cellprofiler.skeleton","library":"openhcs","signature":"measure_image_skeleton_3d(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure branches and endpoints in a 3-D skeletonized image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.skeleton.measure_object_skeleton","function_id":"openhcs:cellprofiler_measure_object_skeleton","name":"measure_object_skeleton","module":"openhcs.processing.backends.cellprofiler.skeleton","library":"openhcs","signature":"measure_object_skeleton(fill_small_holes=True, maximum_hole_size=10, *, enabled=True) -> tuple[openhcs.core.runtime_array_values.RuntimeArrayPayload | numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure branching structures in skeletonized images relative to seed objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.skeleton.measure_object_skeleton_with_branchpoint_image","function_id":"openhcs:cellprofiler_measure_object_skeleton_with_branchpoint_image","name":"measure_object_skeleton_with_branchpoint_image","module":"openhcs.processing.backends.cellprofiler.skeleton","library":"openhcs","signature":"measure_object_skeleton_with_branchpoint_image(fill_small_holes=True, maximum_hole_size=10, branchpoint_image_name='BranchpointImage', *, enabled=True) -> tuple[openhcs.core.runtime_array_values.RuntimeArrayPayload | numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure object skeletons and retain the named branchpoint RGB image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d","function_id":"openhcs:cellprofiler_morphological_skeleton_3d","name":"morphological_skeleton_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray","summary":"Compute the 3-D morphological skeleton of a binary volume.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton","function_id":"openhcs:cellprofiler_morphologicalskeleton","name":"morphologicalskeleton","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphologicalskeleton(*, enabled=True) -> numpy.ndarray","summary":"Compute CellProfiler MorphologicalSkeleton on one image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.skan_axon_analysis.skan_axon_skeletonize_and_analyze","function_id":"openhcs:analysis_skan_axon_analysis_skan_axon_skeletonize_and_analyze","name":"skan_axon_skeletonize_and_analyze","module":"openhcs.processing.backends.analysis.skan_axon_analysis","library":"openhcs","signature":"skan_axon_skeletonize_and_analyze(voxel_spacing, threshold_method, threshold_value, min_object_size, ...)","summary":"Skeletonize axon images and perform comprehensive skeleton analysis.","backend_tags":["openhcs","analysis","skan_axon_analysis"]},{"import_path":"openhcs.processing.backends.analysis.skeletonize_and_save.skeletonize_and_save","function_id":"openhcs:analysis_skeletonize_and_save_skeletonize_and_save","name":"skeletonize_and_save","module":"openhcs.processing.backends.analysis.skeletonize_and_save","library":"openhcs","signature":"skeletonize_and_save(threshold=None, min_component_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]","summary":"Skeletonize each image plane and emit CSV measurements and labeled ROIs.","backend_tags":["openhcs","analysis","skeletonize_and_save"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects","function_id":"openhcs:cellprofiler_expand_or_shrink_objects","name":"expand_or_shrink_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Expand or shrink labeled objects using CellProfiler-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.object_overlap.measure_object_overlap_with_emd","function_id":"openhcs:cellprofiler_measure_object_overlap_with_emd","name":"measure_object_overlap_with_emd","module":"openhcs.processing.backends.cellprofiler.object_overlap","library":"openhcs","signature":"measure_object_overlap_with_emd(max_points, decimation_method, max_distance, penalize_missing, ...)","summary":"Measure object overlap including Earth Mover's Distance.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.object_overlap.measureimageoverlap_with_emd","function_id":"openhcs:cellprofiler_measureimageoverlap_with_emd","name":"measureimageoverlap_with_emd","module":"openhcs.processing.backends.cellprofiler.object_overlap","library":"openhcs","signature":"measureimageoverlap_with_emd(max_distance, penalize_missing, decimation_method, max_points, ...)","summary":"Measure binary overlap including Earth Mover's Distance.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.worms.untangle_worms","function_id":"openhcs:cellprofiler_untangle_worms","name":"untangle_worms","module":"openhcs.processing.backends.cellprofiler.worms","library":"openhcs","signature":"untangle_worms(overlap_style, min_worm_area, max_worm_area, num_control_points, ...)","summary":"Untangle worms while excluding pixels shared by multiple worms.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.worms.untangle_worms_both","function_id":"openhcs:cellprofiler_untangle_worms_both","name":"untangle_worms_both","module":"openhcs.processing.backends.cellprofiler.worms","library":"openhcs","signature":"untangle_worms_both(overlap_style, min_worm_area, max_worm_area, num_control_points, ...)","summary":"Untangle worms and return both overlapping and exclusive object sets.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.worms.untangle_worms_with_overlap","function_id":"openhcs:cellprofiler_untangle_worms_with_overlap","name":"untangle_worms_with_overlap","module":"openhcs.processing.backends.cellprofiler.worms","library":"openhcs","signature":"untangle_worms_with_overlap(overlap_style, min_worm_area, max_worm_area, num_control_points, ...)","summary":"Untangle worms while retaining pixels shared by multiple worms.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.medial_axis.medialaxis","function_id":"openhcs:cellprofiler_medialaxis","name":"medialaxis","module":"openhcs.processing.backends.cellprofiler.medial_axis","library":"openhcs","signature":"medialaxis(*, enabled=True) -> numpy.ndarray","summary":"Compute the medial axis (skeleton) of a binary image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]}],"total":18,"limit":50,"query":"skeleton graph","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_35","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"SWCOptions","limit":50,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_35","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"SWCOptions","limit":50,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.apply_mask\",\n      \"function_id\": \"openhcs:processors_numpy_processor_apply_mask\",\n      \"name\": \"apply_mask\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"apply_mask(mask, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply a mask to a 3D image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.pos_gen.ashlar_main_cpu.ashlar_compute_tile_positions_cpu\",\n      \"function_id\": \"openhcs:pos_gen_ashlar_main_cpu_ashlar_compute_tile_positions_cpu\",\n      \"name\": \"ashlar_compute_tile_positions_cpu\",\n      \"module\": \"openhcs.processing.backends.pos_gen.ashlar_main_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"ashlar_compute_tile_positions_cpu(overlap_ratio, pixel_size, max_shift, stitch_alpha, ...)\",\n      \"summary\": \"Compute tile positions using the complete Ashlar algorithm - pure position calculation only.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"pos_gen\",\n        \"ashlar_main_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy\",\n      \"function_id\": \"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy\",\n      \"name\": \"basic_flatfield_correction_numpy\",\n      \"module\": \"openhcs.processing.backends.enhance.basic_processor_numpy\",\n      \"library\": \"openhcs\",\n      \"signature\": \"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)\",\n      \"summary\": \"Correct a shared illumination field with low-rank and sparse decomposition.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"enhance\",\n        \"basic_processor_numpy\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.classification.classify_objects_single_measurement\",\n      \"function_id\": \"openhcs:cellprofiler_classify_objects_single_measurement\",\n      \"name\": \"classify_objects_single_measurement\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.classification\",\n      \"library\": \"openhcs\",\n      \"signature\": \"classify_objects_single_measurement(measurement_feature, classification_rules, bin_choice, bin_count, ...)\",\n      \"summary\": \"Classify objects based on one measurement or declared rule rows.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.closing\",\n      \"function_id\": \"openhcs:cellprofiler_closing\",\n      \"name\": \"closing\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale closing to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.color.color_to_gray\",\n      \"function_id\": \"openhcs:cellprofiler_color_to_gray\",\n      \"name\": \"color_to_gray\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.color\",\n      \"library\": \"openhcs\",\n      \"signature\": \"color_to_gray(mode, image_type, channel_indices, contributions, ...)\",\n      \"summary\": \"Convert a channel-last color image to selected grayscale outputs.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.consolidate_analysis_results.consolidate_analysis_results_pipeline\",\n      \"function_id\": \"openhcs:analysis_consolidate_analysis_results_consolidate_analysis_results_pipeline\",\n      \"name\": \"consolidate_analysis_results_pipeline\",\n      \"module\": \"openhcs.processing.backends.analysis.consolidate_analysis_results\",\n      \"library\": \"openhcs\",\n      \"signature\": \"consolidate_analysis_results_pipeline(results_directory, *, enabled=True) -> tuple[numpy.ndarray, pandas.core.frame.DataFrame]\",\n      \"summary\": \"Pipeline-compatible version of consolidate_analysis_results.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"consolidate_analysis_results\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.consolidate_special_outputs.consolidate_special_outputs\",\n      \"function_id\": \"openhcs:analysis_consolidate_special_outputs_consolidate_special_outputs\",\n      \"name\": \"consolidate_special_outputs\",\n      \"module\": \"openhcs.processing.backends.analysis.consolidate_special_outputs\",\n      \"library\": \"openhcs\",\n      \"signature\": \"consolidate_special_outputs(results_directory, well_pattern, file_extensions, include_patterns, ...)\",\n      \"summary\": \"Consolidate special outputs from OpenHCS analysis into summary tables.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"consolidate_special_outputs\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_calculate\",\n      \"name\": \"correct_illumination_calculate\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)\",\n      \"summary\": \"Estimate a smooth illumination correction function from image data.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel\",\n      \"function_id\": \"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel\",\n      \"name\": \"count_cells_multi_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.cell_counting_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)\",\n      \"summary\": \"Count cells in multi-channel image stack with colocalization analysis.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"cell_counting_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple\",\n      \"function_id\": \"openhcs:analysis_count_cells_simple_count_cells_simple\",\n      \"name\": \"count_cells_simple\",\n      \"module\": \"openhcs.processing.backends.analysis.count_cells_simple\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_simple(segmentation_settings=SimpleCellSegmentationConfig(threshold_method=<ThresholdMethod.OTSU: 'otsu'>, threshold=0.5, threshold_percentile=99.0, foreground=<Foreground.BRIGHT: 'bright'>, min_size=20, max_size=100000, max_eccentricity=1.0, watershed_large_objects=False, watershed_min_size=None, watershed_max_size=None, watershed_min_distance=5, watershed_footprint_size=3), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]\",\n      \"summary\": \"Count thresholded objects in a 3D image stack with optional shape cleanup.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"count_cells_simple\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel\",\n      \"function_id\": \"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel\",\n      \"name\": \"count_cells_simple_dual_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.count_cells_simple\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"count_cells_simple\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_single_channel\",\n      \"function_id\": \"openhcs:analysis_cell_counting_cpu_count_cells_single_channel\",\n      \"name\": \"count_cells_single_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.cell_counting_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_single_channel(detection_method, min_sigma, max_sigma, num_sigma, ...)\",\n      \"summary\": \"Count cells in single-channel image stack using various detection methods.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"cell_counting_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.create_composite\",\n      \"function_id\": \"openhcs:processors_numpy_processor_create_composite\",\n      \"name\": \"create_composite\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"create_composite(weights=None, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Create a composite image from a 3D stack where each slice is a channel.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.create_linear_weight_mask\",\n      \"function_id\": \"openhcs:processors_numpy_processor_create_linear_weight_mask\",\n      \"name\": \"create_linear_weight_mask\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"create_linear_weight_mask(width, margin_ratio=0.1, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Create a 2D weight mask that linearly ramps from 0 at the edges to 1 in the center.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.create_orthogonal_projections\",\n      \"function_id\": \"openhcs:processors_numpy_processor_create_orthogonal_projections\",\n      \"name\": \"create_orthogonal_projections\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"create_orthogonal_projections(projections=(<OrthogonalProjectionPlane.XY: 'xy'>, <OrthogonalProjectionPlane.XZ: 'xz'>, <OrthogonalProjectionPlane.YZ: 'yz'>), *, enabled=True) -> dict\",\n      \"summary\": \"Create orthogonal max projections from a Z-stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.create_weight_mask\",\n      \"function_id\": \"openhcs:processors_numpy_processor_create_weight_mask\",\n      \"name\": \"create_weight_mask\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"create_weight_mask(margin_ratio=0.1, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Create a weight mask for blending images.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.crop\",\n      \"function_id\": \"openhcs:processors_numpy_processor_crop\",\n      \"name\": \"crop\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"crop(start_x, start_y, start_z, width, ...)\",\n      \"summary\": \"Crop a given substack out of a given image stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_image\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_image\",\n      \"name\": \"dilate_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale dilation to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_data_on_image\",\n      \"function_id\": \"openhcs:cellprofiler_display_data_on_image\",\n      \"name\": \"display_data_on_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_data_on_image(measurement_feature, objects_or_image, display_mode, wants_background_image, ...)\",\n      \"summary\": \"Display measurement data on top of an image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_density_plot\",\n      \"function_id\": \"openhcs:cellprofiler_display_density_plot\",\n      \"name\": \"display_density_plot\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_density_plot(x_object_name, x_measurement_feature, y_object_name, y_measurement_feature, ...)\",\n      \"summary\": \"Compute 2D density histogram from two measurement arrays.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_platemap\",\n      \"function_id\": \"openhcs:cellprofiler_display_platemap\",\n      \"name\": \"display_platemap\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_platemap(objects_or_image, object_name, measurement_feature, plate_metadata_feature, ...)\",\n      \"summary\": \"Aggregate measurements by well for plate map visualization.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_image\",\n      \"function_id\": \"openhcs:cellprofiler_erode_image\",\n      \"name\": \"erode_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale erosion to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.object_filtering.filter_objects\",\n      \"function_id\": \"openhcs:cellprofiler_filter_objects\",\n      \"name\": \"filter_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.object_filtering\",\n      \"library\": \"openhcs\",\n      \"signature\": \"filter_objects(mode, filter_method, measurement_features, measurement_min_values, ...)\",\n      \"summary\": \"Filter dense object labels using CellProfiler-compatible selection policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.gaussian_blur\",\n      \"function_id\": \"openhcs:processors_numpy_processor_gaussian_blur\",\n      \"name\": \"gaussian_blur\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"gaussian_blur(sigma=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply Gaussian blur to reduce noise in image stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.gaussian_filter.gaussian_filter\",\n      \"function_id\": \"openhcs:cellprofiler_gaussian_filter\",\n      \"name\": \"gaussian_filter\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.gaussian_filter\",\n      \"library\": \"openhcs\",\n      \"signature\": \"gaussian_filter(sigma=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible Gaussian smoothing to an image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.manual_objects.identify_objects_manually\",\n      \"function_id\": \"openhcs:cellprofiler_identify_objects_manually\",\n      \"name\": \"identify_objects_manually\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.manual_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_objects_manually(labels_input=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Placeholder for manual object identification.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_math.image_math\",\n      \"function_id\": \"openhcs:cellprofiler_image_math\",\n      \"name\": \"image_math\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_math\",\n      \"library\": \"openhcs\",\n      \"signature\": \"image_math(operation, factors, exponent, after_factor, ...)\",\n      \"summary\": \"Perform CellProfiler ImageMath through registered operation strategies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_geometry.mask_image\",\n      \"function_id\": \"openhcs:cellprofiler_mask_image\",\n      \"name\": \"mask_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_geometry\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Mask an image using CellProfiler image/object mask semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.mask_objects\",\n      \"function_id\": \"openhcs:cellprofiler_mask_objects\",\n      \"name\": \"mask_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)\",\n      \"summary\": \"Mask object labels while preserving OpenHCS object-label domain semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.max_projection\",\n      \"function_id\": \"openhcs:processors_numpy_processor_max_projection\",\n      \"name\": \"max_projection\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"max_projection(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Create a maximum intensity projection from a Z-stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.mean_projection\",\n      \"function_id\": \"openhcs:processors_numpy_processor_mean_projection\",\n      \"name\": \"mean_projection\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mean_projection(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Create a mean intensity projection from a Z-stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization\",\n      \"name\": \"measure_colocalization\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)\",\n      \"summary\": \"Measure colocalization between two channels from an N-channel image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization_objects\",\n      \"name\": \"measure_colocalization_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)\",\n      \"summary\": \"Measure image and/or object colocalization through one declared callable.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_area_occupied\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_area_occupied\",\n      \"name\": \"measure_image_area_occupied\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.area_occupied\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_area_occupied(*, operand_choices=(<OperandChoice.BINARY_IMAGE: 'binary_image'>,), enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure area occupied for ordered binary-image and object rows.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_binary\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_volume_occupied_binary\",\n      \"name\": \"measure_image_volume_occupied_binary\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.area_occupied\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_volume_occupied_binary(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure volume occupied by foreground in a 3D binary image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_volume_occupied_objects\",\n      \"name\": \"measure_image_volume_occupied_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.area_occupied\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_volume_occupied_objects(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure volume occupied by labeled objects in 3D.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_object_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_intensity\",\n      \"name\": \"measure_object_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_intensity(object_intensity_backend_provider=DefaultCellProfilerBackendProviderSelection(), object_intensity_prepared_labels=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.processing.backends.cellprofiler.intensity.ObjectIntensityMeasurementRows]\",\n      \"summary\": \"Measure CellProfiler intensity features for identified objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.neighbors.measure_object_neighbors\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_neighbors\",\n      \"name\": \"measure_object_neighbors\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.neighbors\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_neighbors(distance_method, neighbor_distance, consider_discarded_objects, retain_neighbor_count_image, ...)\",\n      \"summary\": \"Measure neighbor relationships between objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.object_overlap.measure_object_overlap\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_overlap\",\n      \"name\": \"measure_object_overlap\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.object_overlap\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_overlap(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure object overlap without the optional EMD feature.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.object_overlap.measure_object_overlap_with_emd\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_overlap_with_emd\",\n      \"name\": \"measure_object_overlap_with_emd\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.object_overlap\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_overlap_with_emd(max_points, decimation_method, max_distance, penalize_missing, ...)\",\n      \"summary\": \"Measure object overlap including Earth Mover's Distance.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.shape.measure_object_size_shape\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_size_shape\",\n      \"name\": \"measure_object_size_shape\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.shape\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_size_shape(calculate_advanced, calculate_zernikes, shape_backend_provider, zernike_backend_provider, ...)\",\n      \"summary\": \"Measure CellProfiler AreaShape rows for labeled objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.median_filter.medianfilter\",\n      \"function_id\": \"openhcs:cellprofiler_medianfilter\",\n      \"name\": \"medianfilter\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.median_filter\",\n      \"library\": \"openhcs\",\n      \"signature\": \"medianfilter(window_size=3, mode=<ScipyBoundaryMode.CONSTANT: 'constant'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible median filtering.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop\",\n      \"name\": \"multi_template_crop\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop(template_path, score_threshold, max_matches, crop_margin, ...)\",\n      \"summary\": \"Perform multi-template matching on each slice of a 3D image stack and return cropped regions.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_reference_channel\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop_reference_channel\",\n      \"name\": \"multi_template_crop_reference_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop_reference_channel(template_path, reference_channel, score_threshold, max_matches, ...)\",\n      \"summary\": \"Perform template matching on a reference channel and apply the same crop to all channels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_subset\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop_subset\",\n      \"name\": \"multi_template_crop_subset\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop_subset(template_path, reference_channel, target_channels, score_threshold, ...)\",\n      \"summary\": \"Perform template matching on a reference channel and crop only specified target channels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.opening\",\n      \"function_id\": \"openhcs:cellprofiler_opening\",\n      \"name\": \"opening\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale opening to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 147,\n  \"limit\": 50,\n  \"query\": \"SWCOptions\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.apply_mask","function_id":"openhcs:processors_numpy_processor_apply_mask","name":"apply_mask","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"apply_mask(mask, *, enabled=True) -> numpy.ndarray","summary":"Apply a mask to a 3D image.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.pos_gen.ashlar_main_cpu.ashlar_compute_tile_positions_cpu","function_id":"openhcs:pos_gen_ashlar_main_cpu_ashlar_compute_tile_positions_cpu","name":"ashlar_compute_tile_positions_cpu","module":"openhcs.processing.backends.pos_gen.ashlar_main_cpu","library":"openhcs","signature":"ashlar_compute_tile_positions_cpu(overlap_ratio, pixel_size, max_shift, stitch_alpha, ...)","summary":"Compute tile positions using the complete Ashlar algorithm - pure position calculation only.","backend_tags":["openhcs","pos_gen","ashlar_main_cpu"]},{"import_path":"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy","function_id":"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy","name":"basic_flatfield_correction_numpy","module":"openhcs.processing.backends.enhance.basic_processor_numpy","library":"openhcs","signature":"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)","summary":"Correct a shared illumination field with low-rank and sparse decomposition.","backend_tags":["openhcs","enhance","basic_processor_numpy"]},{"import_path":"openhcs.processing.backends.cellprofiler.classification.classify_objects_single_measurement","function_id":"openhcs:cellprofiler_classify_objects_single_measurement","name":"classify_objects_single_measurement","module":"openhcs.processing.backends.cellprofiler.classification","library":"openhcs","signature":"classify_objects_single_measurement(measurement_feature, classification_rules, bin_choice, bin_count, ...)","summary":"Classify objects based on one measurement or declared rule rows.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.closing","function_id":"openhcs:cellprofiler_closing","name":"closing","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale closing to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.color.color_to_gray","function_id":"openhcs:cellprofiler_color_to_gray","name":"color_to_gray","module":"openhcs.processing.backends.cellprofiler.color","library":"openhcs","signature":"color_to_gray(mode, image_type, channel_indices, contributions, ...)","summary":"Convert a channel-last color image to selected grayscale outputs.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.consolidate_analysis_results.consolidate_analysis_results_pipeline","function_id":"openhcs:analysis_consolidate_analysis_results_consolidate_analysis_results_pipeline","name":"consolidate_analysis_results_pipeline","module":"openhcs.processing.backends.analysis.consolidate_analysis_results","library":"openhcs","signature":"consolidate_analysis_results_pipeline(results_directory, *, enabled=True) -> tuple[numpy.ndarray, pandas.core.frame.DataFrame]","summary":"Pipeline-compatible version of consolidate_analysis_results.","backend_tags":["openhcs","analysis","consolidate_analysis_results"]},{"import_path":"openhcs.processing.backends.analysis.consolidate_special_outputs.consolidate_special_outputs","function_id":"openhcs:analysis_consolidate_special_outputs_consolidate_special_outputs","name":"consolidate_special_outputs","module":"openhcs.processing.backends.analysis.consolidate_special_outputs","library":"openhcs","signature":"consolidate_special_outputs(results_directory, well_pattern, file_extensions, include_patterns, ...)","summary":"Consolidate special outputs from OpenHCS analysis into summary tables.","backend_tags":["openhcs","analysis","consolidate_special_outputs"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate","function_id":"openhcs:cellprofiler_correct_illumination_calculate","name":"correct_illumination_calculate","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)","summary":"Estimate a smooth illumination correction function from image data.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel","function_id":"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel","name":"count_cells_multi_channel","module":"openhcs.processing.backends.analysis.cell_counting_cpu","library":"openhcs","signature":"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)","summary":"Count cells in multi-channel image stack with colocalization analysis.","backend_tags":["openhcs","analysis","cell_counting_cpu"]},{"import_path":"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple","function_id":"openhcs:analysis_count_cells_simple_count_cells_simple","name":"count_cells_simple","module":"openhcs.processing.backends.analysis.count_cells_simple","library":"openhcs","signature":"count_cells_simple(segmentation_settings=SimpleCellSegmentationConfig(threshold_method=<ThresholdMethod.OTSU: 'otsu'>, threshold=0.5, threshold_percentile=99.0, foreground=<Foreground.BRIGHT: 'bright'>, min_size=20, max_size=100000, max_eccentricity=1.0, watershed_large_objects=False, watershed_min_size=None, watershed_max_size=None, watershed_min_distance=5, watershed_footprint_size=3), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray]","summary":"Count thresholded objects in a 3D image stack with optional shape cleanup.","backend_tags":["openhcs","analysis","count_cells_simple"]},{"import_path":"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel","function_id":"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel","name":"count_cells_simple_dual_channel","module":"openhcs.processing.backends.analysis.count_cells_simple","library":"openhcs","signature":"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.","backend_tags":["openhcs","analysis","count_cells_simple"]},{"import_path":"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_single_channel","function_id":"openhcs:analysis_cell_counting_cpu_count_cells_single_channel","name":"count_cells_single_channel","module":"openhcs.processing.backends.analysis.cell_counting_cpu","library":"openhcs","signature":"count_cells_single_channel(detection_method, min_sigma, max_sigma, num_sigma, ...)","summary":"Count cells in single-channel image stack using various detection methods.","backend_tags":["openhcs","analysis","cell_counting_cpu"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.create_composite","function_id":"openhcs:processors_numpy_processor_create_composite","name":"create_composite","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"create_composite(weights=None, *, enabled=True) -> numpy.ndarray","summary":"Create a composite image from a 3D stack where each slice is a channel.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.create_linear_weight_mask","function_id":"openhcs:processors_numpy_processor_create_linear_weight_mask","name":"create_linear_weight_mask","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"create_linear_weight_mask(width, margin_ratio=0.1, *, enabled=True) -> numpy.ndarray","summary":"Create a 2D weight mask that linearly ramps from 0 at the edges to 1 in the center.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.create_orthogonal_projections","function_id":"openhcs:processors_numpy_processor_create_orthogonal_projections","name":"create_orthogonal_projections","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"create_orthogonal_projections(projections=(<OrthogonalProjectionPlane.XY: 'xy'>, <OrthogonalProjectionPlane.XZ: 'xz'>, <OrthogonalProjectionPlane.YZ: 'yz'>), *, enabled=True) -> dict","summary":"Create orthogonal max projections from a Z-stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.create_weight_mask","function_id":"openhcs:processors_numpy_processor_create_weight_mask","name":"create_weight_mask","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"create_weight_mask(margin_ratio=0.1, *, enabled=True) -> numpy.ndarray","summary":"Create a weight mask for blending images.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.crop","function_id":"openhcs:processors_numpy_processor_crop","name":"crop","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"crop(start_x, start_y, start_z, width, ...)","summary":"Crop a given substack out of a given image stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_image","function_id":"openhcs:cellprofiler_dilate_image","name":"dilate_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale dilation to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_data_on_image","function_id":"openhcs:cellprofiler_display_data_on_image","name":"display_data_on_image","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_data_on_image(measurement_feature, objects_or_image, display_mode, wants_background_image, ...)","summary":"Display measurement data on top of an image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_density_plot","function_id":"openhcs:cellprofiler_display_density_plot","name":"display_density_plot","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_density_plot(x_object_name, x_measurement_feature, y_object_name, y_measurement_feature, ...)","summary":"Compute 2D density histogram from two measurement arrays.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_platemap","function_id":"openhcs:cellprofiler_display_platemap","name":"display_platemap","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_platemap(objects_or_image, object_name, measurement_feature, plate_metadata_feature, ...)","summary":"Aggregate measurements by well for plate map visualization.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_image","function_id":"openhcs:cellprofiler_erode_image","name":"erode_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale erosion to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.object_filtering.filter_objects","function_id":"openhcs:cellprofiler_filter_objects","name":"filter_objects","module":"openhcs.processing.backends.cellprofiler.object_filtering","library":"openhcs","signature":"filter_objects(mode, filter_method, measurement_features, measurement_min_values, ...)","summary":"Filter dense object labels using CellProfiler-compatible selection policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.gaussian_blur","function_id":"openhcs:processors_numpy_processor_gaussian_blur","name":"gaussian_blur","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"gaussian_blur(sigma=1.0, *, enabled=True) -> numpy.ndarray","summary":"Apply Gaussian blur to reduce noise in image stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.gaussian_filter.gaussian_filter","function_id":"openhcs:cellprofiler_gaussian_filter","name":"gaussian_filter","module":"openhcs.processing.backends.cellprofiler.gaussian_filter","library":"openhcs","signature":"gaussian_filter(sigma=1.0, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible Gaussian smoothing to an image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.manual_objects.identify_objects_manually","function_id":"openhcs:cellprofiler_identify_objects_manually","name":"identify_objects_manually","module":"openhcs.processing.backends.cellprofiler.manual_objects","library":"openhcs","signature":"identify_objects_manually(labels_input=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Placeholder for manual object identification.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_math.image_math","function_id":"openhcs:cellprofiler_image_math","name":"image_math","module":"openhcs.processing.backends.cellprofiler.image_math","library":"openhcs","signature":"image_math(operation, factors, exponent, after_factor, ...)","summary":"Perform CellProfiler ImageMath through registered operation strategies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_geometry.mask_image","function_id":"openhcs:cellprofiler_mask_image","name":"mask_image","module":"openhcs.processing.backends.cellprofiler.image_geometry","library":"openhcs","signature":"mask_image(mask_source=<MaskSource.IMAGE: 'image'>, invert_mask=False, binary_threshold=0.5, *, enabled=True) -> numpy.ndarray","summary":"Mask an image using CellProfiler image/object mask semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.mask_objects","function_id":"openhcs:cellprofiler_mask_objects","name":"mask_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)","summary":"Mask object labels while preserving OpenHCS object-label domain semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.max_projection","function_id":"openhcs:processors_numpy_processor_max_projection","name":"max_projection","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"max_projection(*, enabled=True) -> numpy.ndarray","summary":"Create a maximum intensity projection from a Z-stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.mean_projection","function_id":"openhcs:processors_numpy_processor_mean_projection","name":"mean_projection","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"mean_projection(*, enabled=True) -> numpy.ndarray","summary":"Create a mean intensity projection from a Z-stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization","function_id":"openhcs:cellprofiler_measure_colocalization","name":"measure_colocalization","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)","summary":"Measure colocalization between two channels from an N-channel image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects","function_id":"openhcs:cellprofiler_measure_colocalization_objects","name":"measure_colocalization_objects","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)","summary":"Measure image and/or object colocalization through one declared callable.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_area_occupied","function_id":"openhcs:cellprofiler_measure_image_area_occupied","name":"measure_image_area_occupied","module":"openhcs.processing.backends.cellprofiler.area_occupied","library":"openhcs","signature":"measure_image_area_occupied(*, operand_choices=(<OperandChoice.BINARY_IMAGE: 'binary_image'>,), enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure area occupied for ordered binary-image and object rows.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_binary","function_id":"openhcs:cellprofiler_measure_image_volume_occupied_binary","name":"measure_image_volume_occupied_binary","module":"openhcs.processing.backends.cellprofiler.area_occupied","library":"openhcs","signature":"measure_image_volume_occupied_binary(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure volume occupied by foreground in a 3D binary image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_objects","function_id":"openhcs:cellprofiler_measure_image_volume_occupied_objects","name":"measure_image_volume_occupied_objects","module":"openhcs.processing.backends.cellprofiler.area_occupied","library":"openhcs","signature":"measure_image_volume_occupied_objects(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure volume occupied by labeled objects in 3D.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_object_intensity","function_id":"openhcs:cellprofiler_measure_object_intensity","name":"measure_object_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_object_intensity(object_intensity_backend_provider=DefaultCellProfilerBackendProviderSelection(), object_intensity_prepared_labels=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.processing.backends.cellprofiler.intensity.ObjectIntensityMeasurementRows]","summary":"Measure CellProfiler intensity features for identified objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.neighbors.measure_object_neighbors","function_id":"openhcs:cellprofiler_measure_object_neighbors","name":"measure_object_neighbors","module":"openhcs.processing.backends.cellprofiler.neighbors","library":"openhcs","signature":"measure_object_neighbors(distance_method, neighbor_distance, consider_discarded_objects, retain_neighbor_count_image, ...)","summary":"Measure neighbor relationships between objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.object_overlap.measure_object_overlap","function_id":"openhcs:cellprofiler_measure_object_overlap","name":"measure_object_overlap","module":"openhcs.processing.backends.cellprofiler.object_overlap","library":"openhcs","signature":"measure_object_overlap(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure object overlap without the optional EMD feature.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.object_overlap.measure_object_overlap_with_emd","function_id":"openhcs:cellprofiler_measure_object_overlap_with_emd","name":"measure_object_overlap_with_emd","module":"openhcs.processing.backends.cellprofiler.object_overlap","library":"openhcs","signature":"measure_object_overlap_with_emd(max_points, decimation_method, max_distance, penalize_missing, ...)","summary":"Measure object overlap including Earth Mover's Distance.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.shape.measure_object_size_shape","function_id":"openhcs:cellprofiler_measure_object_size_shape","name":"measure_object_size_shape","module":"openhcs.processing.backends.cellprofiler.shape","library":"openhcs","signature":"measure_object_size_shape(calculate_advanced, calculate_zernikes, shape_backend_provider, zernike_backend_provider, ...)","summary":"Measure CellProfiler AreaShape rows for labeled objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.median_filter.medianfilter","function_id":"openhcs:cellprofiler_medianfilter","name":"medianfilter","module":"openhcs.processing.backends.cellprofiler.median_filter","library":"openhcs","signature":"medianfilter(window_size=3, mode=<ScipyBoundaryMode.CONSTANT: 'constant'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible median filtering.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop","name":"multi_template_crop","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop(template_path, score_threshold, max_matches, crop_margin, ...)","summary":"Perform multi-template matching on each slice of a 3D image stack and return cropped regions.","backend_tags":["openhcs","analysis","multi_template_matching"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_reference_channel","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop_reference_channel","name":"multi_template_crop_reference_channel","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop_reference_channel(template_path, reference_channel, score_threshold, max_matches, ...)","summary":"Perform template matching on a reference channel and apply the same crop to all channels.","backend_tags":["openhcs","analysis","multi_template_matching"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_subset","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop_subset","name":"multi_template_crop_subset","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop_subset(template_path, reference_channel, target_channels, score_threshold, ...)","summary":"Perform template matching on a reference channel and crop only specified target channels.","backend_tags":["openhcs","analysis","multi_template_matching"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.opening","function_id":"openhcs:cellprofiler_opening","name":"opening","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale opening to an image plane.","backend_tags":["openhcs","cellprofiler"]}],"total":147,"limit":50,"query":"SWCOptions","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_36","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neurite morphology","limit":50,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_36","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neurite morphology","limit":50,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.closing\",\n      \"function_id\": \"openhcs:cellprofiler_closing\",\n      \"name\": \"closing\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale closing to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.combineobjects\",\n      \"function_id\": \"openhcs:cellprofiler_combineobjects\",\n      \"name\": \"combineobjects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Combine objects from two label images using CellProfiler policies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_image\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_image\",\n      \"name\": \"dilate_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale dilation to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_objects\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_objects\",\n      \"name\": \"dilate_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_objects(structuring_element_shape=<StructuringElement.DISK: 'disk'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Dilate labels with CellProfiler's higher-label-overwrites policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_objects_3d\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_objects_3d\",\n      \"name\": \"dilate_objects_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_objects_3d(structuring_element_shape=<StructuringElement.BALL: 'ball'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Dilate 3D labels with CellProfiler's higher-label-overwrites policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_image\",\n      \"function_id\": \"openhcs:cellprofiler_erode_image\",\n      \"name\": \"erode_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale erosion to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_objects\",\n      \"function_id\": \"openhcs:cellprofiler_erode_objects\",\n      \"name\": \"erode_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_objects(structuring_element, size, preserve_midpoints, relabel_objects, ...)\",\n      \"summary\": \"Erode CellProfiler object labels while preserving optional midpoints.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects\",\n      \"function_id\": \"openhcs:cellprofiler_expand_or_shrink_objects\",\n      \"name\": \"expand_or_shrink_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Expand or shrink labeled objects using CellProfiler-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.fill_objects\",\n      \"function_id\": \"openhcs:cellprofiler_fill_objects\",\n      \"name\": \"fill_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"fill_objects(mode=<FillMode.HOLES: 'holes'>, diameter=64.0, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> openhcs.core.runtime_object_labels.ObjectLabelValue\",\n      \"summary\": \"Fill object holes or replace objects with convex hull labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.mask_objects\",\n      \"function_id\": \"openhcs:cellprofiler_mask_objects\",\n      \"name\": \"mask_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)\",\n      \"summary\": \"Mask object labels while preserving OpenHCS object-label domain semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morph\",\n      \"function_id\": \"openhcs:cellprofiler_morph\",\n      \"name\": \"morph\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)\",\n      \"summary\": \"Decorated CellProfiler Morph entrypoint backed by registered strategies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d\",\n      \"function_id\": \"openhcs:cellprofiler_morphological_skeleton_3d\",\n      \"name\": \"morphological_skeleton_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute the 3-D morphological skeleton of a binary volume.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton\",\n      \"function_id\": \"openhcs:cellprofiler_morphologicalskeleton\",\n      \"name\": \"morphologicalskeleton\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphologicalskeleton(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute CellProfiler MorphologicalSkeleton on one image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.opening\",\n      \"function_id\": \"openhcs:cellprofiler_opening\",\n      \"name\": \"opening\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale opening to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.remove_holes\",\n      \"function_id\": \"openhcs:cellprofiler_remove_holes\",\n      \"name\": \"remove_holes\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"remove_holes(diameter=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Fill binary holes smaller than the CellProfiler diameter threshold.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.remove_holes_3d\",\n      \"function_id\": \"openhcs:cellprofiler_remove_holes_3d\",\n      \"name\": \"remove_holes_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"remove_holes_3d(diameter=1.0, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Fill volumetric holes smaller than the CellProfiler diameter threshold.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.resize_objects\",\n      \"function_id\": \"openhcs:cellprofiler_resize_objects\",\n      \"name\": \"resize_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"resize_objects(method, factor_x, factor_y, factor_z, ...)\",\n      \"summary\": \"Resize object labels by CellProfiler nearest-neighbor label semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.resize_objects_3d\",\n      \"function_id\": \"openhcs:cellprofiler_resize_objects_3d\",\n      \"name\": \"resize_objects_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"resize_objects_3d(method, factor_x, factor_y, factor_z, ...)\",\n      \"summary\": \"Resize 3D object labels by CellProfiler nearest-neighbor semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers\",\n      \"function_id\": \"openhcs:cellprofiler_shrink_to_object_centers\",\n      \"name\": \"shrink_to_object_centers\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"shrink_to_object_centers(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Transform labeled objects into single-pixel centroid labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers_3d\",\n      \"function_id\": \"openhcs:cellprofiler_shrink_to_object_centers_3d\",\n      \"name\": \"shrink_to_object_centers_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"shrink_to_object_centers_3d(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Transform 3D labeled objects into single-voxel centroid labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects\",\n      \"name\": \"split_or_merge_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Split objects or merge them by distance without a guide image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_per_parent\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects_per_parent\",\n      \"name\": \"split_or_merge_objects_per_parent\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects_per_parent(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Merge child objects through the declared parent-object input.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_with_guide_image\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects_with_guide_image\",\n      \"name\": \"split_or_merge_objects_with_guide_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects_with_guide_image(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Merge objects by distance using the declared guide image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects\",\n      \"name\": \"identify_secondary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Identify secondary objects without a replacement-primary output.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary\",\n      \"name\": \"identify_secondary_objects_with_replacement_primary\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Execute the contract variant that emits replacement-primary artifacts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.neighbors.measure_object_neighbors\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_neighbors\",\n      \"name\": \"measure_object_neighbors\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.neighbors\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_neighbors(distance_method, neighbor_distance, consider_discarded_objects, retain_neighbor_count_image, ...)\",\n      \"summary\": \"Measure neighbor relationships between objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 31,\n  \"limit\": 50,\n  \"query\": \"neurite morphology\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method, return_trace_visualizations, trace_visualization_mode, chain_level, ...)","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.closing","function_id":"openhcs:cellprofiler_closing","name":"closing","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale closing to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.combineobjects","function_id":"openhcs:cellprofiler_combineobjects","name":"combineobjects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Combine objects from two label images using CellProfiler policies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_image","function_id":"openhcs:cellprofiler_dilate_image","name":"dilate_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale dilation to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_objects","function_id":"openhcs:cellprofiler_dilate_objects","name":"dilate_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_objects(structuring_element_shape=<StructuringElement.DISK: 'disk'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Dilate labels with CellProfiler's higher-label-overwrites policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_objects_3d","function_id":"openhcs:cellprofiler_dilate_objects_3d","name":"dilate_objects_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_objects_3d(structuring_element_shape=<StructuringElement.BALL: 'ball'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Dilate 3D labels with CellProfiler's higher-label-overwrites policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_image","function_id":"openhcs:cellprofiler_erode_image","name":"erode_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale erosion to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_objects","function_id":"openhcs:cellprofiler_erode_objects","name":"erode_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_objects(structuring_element, size, preserve_midpoints, relabel_objects, ...)","summary":"Erode CellProfiler object labels while preserving optional midpoints.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects","function_id":"openhcs:cellprofiler_expand_or_shrink_objects","name":"expand_or_shrink_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Expand or shrink labeled objects using CellProfiler-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.fill_objects","function_id":"openhcs:cellprofiler_fill_objects","name":"fill_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"fill_objects(mode=<FillMode.HOLES: 'holes'>, diameter=64.0, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> openhcs.core.runtime_object_labels.ObjectLabelValue","summary":"Fill object holes or replace objects with convex hull labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.mask_objects","function_id":"openhcs:cellprofiler_mask_objects","name":"mask_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"mask_objects(overlap_handling, overlap_fraction, numbering, invert_mask, ...)","summary":"Mask object labels while preserving OpenHCS object-label domain semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morph","function_id":"openhcs:cellprofiler_morph","name":"morph","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)","summary":"Decorated CellProfiler Morph entrypoint backed by registered strategies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d","function_id":"openhcs:cellprofiler_morphological_skeleton_3d","name":"morphological_skeleton_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray","summary":"Compute the 3-D morphological skeleton of a binary volume.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton","function_id":"openhcs:cellprofiler_morphologicalskeleton","name":"morphologicalskeleton","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphologicalskeleton(*, enabled=True) -> numpy.ndarray","summary":"Compute CellProfiler MorphologicalSkeleton on one image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.opening","function_id":"openhcs:cellprofiler_opening","name":"opening","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale opening to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.remove_holes","function_id":"openhcs:cellprofiler_remove_holes","name":"remove_holes","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"remove_holes(diameter=1.0, *, enabled=True) -> numpy.ndarray","summary":"Fill binary holes smaller than the CellProfiler diameter threshold.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.remove_holes_3d","function_id":"openhcs:cellprofiler_remove_holes_3d","name":"remove_holes_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"remove_holes_3d(diameter=1.0, *, enabled=True) -> numpy.ndarray","summary":"Fill volumetric holes smaller than the CellProfiler diameter threshold.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.resize_objects","function_id":"openhcs:cellprofiler_resize_objects","name":"resize_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"resize_objects(method, factor_x, factor_y, factor_z, ...)","summary":"Resize object labels by CellProfiler nearest-neighbor label semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.resize_objects_3d","function_id":"openhcs:cellprofiler_resize_objects_3d","name":"resize_objects_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"resize_objects_3d(method, factor_x, factor_y, factor_z, ...)","summary":"Resize 3D object labels by CellProfiler nearest-neighbor semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers","function_id":"openhcs:cellprofiler_shrink_to_object_centers","name":"shrink_to_object_centers","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"shrink_to_object_centers(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Transform labeled objects into single-pixel centroid labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.shrink_to_object_centers_3d","function_id":"openhcs:cellprofiler_shrink_to_object_centers_3d","name":"shrink_to_object_centers_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"shrink_to_object_centers_3d(*, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Transform 3D labeled objects into single-voxel centroid labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects","function_id":"openhcs:cellprofiler_split_or_merge_objects","name":"split_or_merge_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Split objects or merge them by distance without a guide image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_per_parent","function_id":"openhcs:cellprofiler_split_or_merge_objects_per_parent","name":"split_or_merge_objects_per_parent","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects_per_parent(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Merge child objects through the declared parent-object input.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_with_guide_image","function_id":"openhcs:cellprofiler_split_or_merge_objects_with_guide_image","name":"split_or_merge_objects_with_guide_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects_with_guide_image(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Merge objects by distance using the declared guide image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects","function_id":"openhcs:cellprofiler_identify_secondary_objects","name":"identify_secondary_objects","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Identify secondary objects without a replacement-primary output.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary","function_id":"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary","name":"identify_secondary_objects_with_replacement_primary","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Execute the contract variant that emits replacement-primary artifacts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.neighbors.measure_object_neighbors","function_id":"openhcs:cellprofiler_measure_object_neighbors","name":"measure_object_neighbors","module":"openhcs.processing.backends.cellprofiler.neighbors","library":"openhcs","signature":"measure_object_neighbors(distance_method, neighbor_distance, consider_discarded_objects, retain_neighbor_count_image, ...)","summary":"Measure neighbor relationships between objects.","backend_tags":["openhcs","cellprofiler"]}],"total":31,"limit":50,"query":"neurite morphology","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_37","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_function","arguments":{"function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","compact_signature":false,"max_doc_chars":12000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_37","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_function","arguments":{"function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","compact_signature":false,"max_doc_chars":12000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"entry\": {\n    \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n    \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n    \"name\": \"neurite_outgrowth_metaxpress\",\n    \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n    \"library\": \"openhcs\",\n    \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]\",\n    \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n    \"backend_tags\": [\n      \"openhcs\",\n      \"analysis\",\n      \"neurite_outgrowth\"\n    ]\n  },\n  \"parameters\": [\n    {\n      \"name\": \"image\",\n      \"annotation\": null,\n      \"default_repr\": null,\n      \"required\": false,\n      \"supplied_by\": \"runtime_primary_input\",\n      \"description\": \"Supplied by OpenHCS from the FunctionStep input image payload; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"neurite_channel_index\",\n      \"annotation\": \"int\",\n      \"default_repr\": \"0\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Zero-based channel containing neurite outgrowth.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"illumination\",\n      \"annotation\": \"NeuriteIllumination\",\n      \"default_repr\": \"NeuriteIllumination.FLUORESCENCE\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Fluorescence or transmission contrast model used for\\nforeground detection.\",\n      \"enum_import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.NeuriteIllumination\",\n      \"enum_members\": [\n        \"FLUORESCENCE\",\n        \"TRANSMISSION\"\n      ],\n      \"enum_values\": [\n        \"fluorescence\",\n        \"transmission\"\n      ]\n    },\n    {\n      \"name\": \"cell_body\",\n      \"annotation\": \"MetaXpressCellBodySettings\",\n      \"default_repr\": \"MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None)\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Optional channel plus width, area, and local-background\\nthresholds for cell bodies.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"outgrowth\",\n      \"annotation\": \"MetaXpressOutgrowthSettings\",\n      \"default_repr\": \"MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0)\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Width, intensity, and significant-growth thresholds for\\nattached neurites.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"use_nuclear_stain\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Whether to segment a nuclear channel and return nuclei.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"nuclear_stain\",\n      \"annotation\": \"MetaXpressNuclearSettings\",\n      \"default_repr\": \"MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0)\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Nuclear channel and size/intensity thresholds used when\\nnuclear staining is enabled.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"pixel_size\",\n      \"annotation\": \"HiddenPixelSize\",\n      \"default_repr\": \"1.0\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_artifact_input\",\n      \"description\": \"Supplied by OpenHCS from a declared artifact input during pipeline execution; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"slice_by_slice\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_parameter\",\n      \"description\": \"bool, optional\\nAdded by the numpy memory decorator. Process 3D arrays slice-by-slice.\\nDefaults to False. Prevents cross-slice contamination. Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"dtype_config\",\n      \"annotation\": \"LazyDtypeConfig\",\n      \"default_repr\": \"LazyDtypeConfig(default_dtype_conversion=<DtypeConversion.NATIVE_OUTPUT: 'native'>)\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_parameter\",\n      \"description\": \"Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"enabled\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Run this callable or configuration when enabled; skip it when disabled.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    }\n  ],\n  \"doc\": \"Measure cell bodies and attached neurites in one 2D channel stack.\\n\\nThe user-facing controls follow the MetaXpress Neurite Outgrowth module:\\nneurite image and illumination; optional cell-body channel, maximum width,\\nminimum area, and local-background intensity; outgrowth maximum width,\\nlocal-background intensity, and scoring threshold; plus an optional nuclear\\nwavelength with minimum/maximum width and local-background intensity.\\n\\nThis implementation is deliberately 2D. ``image`` must have shape\\n``(C, Y, X)`` and should be produced by a step whose variable component is\\n``CHANNEL``. Outgrowth detection is independent of the significant-growth\\nthreshold. CellProfiler-compatible primary-object, tubeness, adaptive Otsu,\\nmedial-axis, and seed-relative skeleton measurements provide the opinionated\\nengine; disconnected traces are omitted from the rendered ownership mask.\\n\\nArgs:\\n    neurite_channel_index: Zero-based channel containing neurite outgrowth.\\n    illumination: Fluorescence or transmission contrast model used for\\n        foreground detection.\\n    cell_body: Optional channel plus width, area, and local-background\\n        thresholds for cell bodies.\\n    outgrowth: Width, intensity, and significant-growth thresholds for\\n        attached neurites.\\n    use_nuclear_stain: Whether to segment a nuclear channel and return nuclei.\\n    nuclear_stain: Nuclear channel and size/intensity thresholds used when\\n        nuclear staining is enabled.\\n\\nReturns:\\n    The unchanged image, image- and cell-level measurement rows, and\\n    channel-aligned cell-body, thin outgrowth, unified-neuron, and nuclear\\n    masks, followed by a rooted spatial morphology forest. The unified\\n    layer assigns each body and its owned outgrowth the same integer\\n    identity, while the graph preserves branch geometry and metrics for\\n    direct table, ROI-path, and SWC inspection.\\n\\n\\nAdditional Parameters\\n---------------------\\n    slice_by_slice : bool, optional\\n        Added by the numpy memory decorator. Process 3D arrays slice-by-slice.\\n        Defaults to False. Prevents cross-slice contamination.\",\n  \"runtime_contract\": {\n    \"callable_kind\": \"regular\",\n    \"processing_contract\": \"FLEXIBLE\",\n    \"declared_processing_contract\": \"FLEXIBLE\",\n    \"runtime_bound_parameters\": [\n      \"slice_by_slice\"\n    ],\n    \"required_variable_components\": [],\n    \"artifact_inputs\": [\n      {\n        \"name\": \"pixel_size\",\n        \"kind\": \"special\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": false\n      }\n    ],\n    \"artifact_outputs\": [\n      {\n        \"name\": \"neurite_outgrowth_summary\",\n        \"kind\": \"measurements\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"neurite_outgrowth_cells\",\n        \"kind\": \"measurements\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"cell_bodies\",\n        \"kind\": \"object_labels\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"neurite_outgrowth\",\n        \"kind\": \"object_labels\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"neurons\",\n        \"kind\": \"object_labels\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"nuclei\",\n        \"kind\": \"object_labels\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"neurite_morphology\",\n        \"kind\": \"spatial_graph\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      }\n    ],\n    \"cellprofiler_module\": null,\n    \"source_binding_rule\": \"Artifact input bindings are resolved from canonical CallableContract artifact_inputs during compilation.\",\n    \"materialization_rule\": \"Artifact output materialization is derived from output artifact kinds and compile/runtime materialization policy.\",\n    \"measurement_rule\": \"Measurement and relationship rows are projected by the selected runtime plan and materialized as declared artifacts.\",\n    \"pattern_compatibility_rule\": \"Regular OpenHCS callables may participate in standard FunctionStep callable, tuple, list, or dict patterns subject to compiler validation. Dictionary keys are normalized group identities selected by group_by, may intentionally cover only a subset of available component values, and omit groups that should not be invoked; compilation rejects keys absent from the available component domain.\"\n  },\n  \"doc_truncated\": false,\n  \"doc_chars\": 2093,\n  \"max_doc_chars\": 12000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","entry":{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},"parameters":[{"name":"image","annotation":null,"default_repr":null,"required":false,"supplied_by":"runtime_primary_input","description":"Supplied by OpenHCS from the FunctionStep input image payload; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"neurite_channel_index","annotation":"int","default_repr":"0","required":false,"supplied_by":"agent","description":"Zero-based channel containing neurite outgrowth.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"illumination","annotation":"NeuriteIllumination","default_repr":"NeuriteIllumination.FLUORESCENCE","required":false,"supplied_by":"agent","description":"Fluorescence or transmission contrast model used for\nforeground detection.","enum_import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.NeuriteIllumination","enum_members":["FLUORESCENCE","TRANSMISSION"],"enum_values":["fluorescence","transmission"]},{"name":"cell_body","annotation":"MetaXpressCellBodySettings","default_repr":"MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None)","required":false,"supplied_by":"agent","description":"Optional channel plus width, area, and local-background\nthresholds for cell bodies.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"outgrowth","annotation":"MetaXpressOutgrowthSettings","default_repr":"MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0)","required":false,"supplied_by":"agent","description":"Width, intensity, and significant-growth thresholds for\nattached neurites.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"use_nuclear_stain","annotation":"bool","default_repr":"False","required":false,"supplied_by":"agent","description":"Whether to segment a nuclear channel and return nuclei.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"nuclear_stain","annotation":"MetaXpressNuclearSettings","default_repr":"MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0)","required":false,"supplied_by":"agent","description":"Nuclear channel and size/intensity thresholds used when\nnuclear staining is enabled.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"pixel_size","annotation":"HiddenPixelSize","default_repr":"1.0","required":false,"supplied_by":"runtime_artifact_input","description":"Supplied by OpenHCS from a declared artifact input during pipeline execution; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"slice_by_slice","annotation":"bool","default_repr":"False","required":false,"supplied_by":"runtime_parameter","description":"bool, optional\nAdded by the numpy memory decorator. Process 3D arrays slice-by-slice.\nDefaults to False. Prevents cross-slice contamination. Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"dtype_config","annotation":"LazyDtypeConfig","default_repr":"LazyDtypeConfig(default_dtype_conversion=<DtypeConversion.NATIVE_OUTPUT: 'native'>)","required":false,"supplied_by":"runtime_parameter","description":"Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"enabled","annotation":"bool","default_repr":"True","required":false,"supplied_by":"agent","description":"Run this callable or configuration when enabled; skip it when disabled.","enum_import_path":null,"enum_members":[],"enum_values":[]}],"doc":"Measure cell bodies and attached neurites in one 2D channel stack.\n\nThe user-facing controls follow the MetaXpress Neurite Outgrowth module:\nneurite image and illumination; optional cell-body channel, maximum width,\nminimum area, and local-background intensity; outgrowth maximum width,\nlocal-background intensity, and scoring threshold; plus an optional nuclear\nwavelength with minimum/maximum width and local-background intensity.\n\nThis implementation is deliberately 2D. ``image`` must have shape\n``(C, Y, X)`` and should be produced by a step whose variable component is\n``CHANNEL``. Outgrowth detection is independent of the significant-growth\nthreshold. CellProfiler-compatible primary-object, tubeness, adaptive Otsu,\nmedial-axis, and seed-relative skeleton measurements provide the opinionated\nengine; disconnected traces are omitted from the rendered ownership mask.\n\nArgs:\n    neurite_channel_index: Zero-based channel containing neurite outgrowth.\n    illumination: Fluorescence or transmission contrast model used for\n        foreground detection.\n    cell_body: Optional channel plus width, area, and local-background\n        thresholds for cell bodies.\n    outgrowth: Width, intensity, and significant-growth thresholds for\n        attached neurites.\n    use_nuclear_stain: Whether to segment a nuclear channel and return nuclei.\n    nuclear_stain: Nuclear channel and size/intensity thresholds used when\n        nuclear staining is enabled.\n\nReturns:\n    The unchanged image, image- and cell-level measurement rows, and\n    channel-aligned cell-body, thin outgrowth, unified-neuron, and nuclear\n    masks, followed by a rooted spatial morphology forest. The unified\n    layer assigns each body and its owned outgrowth the same integer\n    identity, while the graph preserves branch geometry and metrics for\n    direct table, ROI-path, and SWC inspection.\n\n\nAdditional Parameters\n---------------------\n    slice_by_slice : bool, optional\n        Added by the numpy memory decorator. Process 3D arrays slice-by-slice.\n        Defaults to False. Prevents cross-slice contamination.","runtime_contract":{"callable_kind":"regular","processing_contract":"FLEXIBLE","declared_processing_contract":"FLEXIBLE","runtime_bound_parameters":["slice_by_slice"],"required_variable_components":[],"artifact_inputs":[{"name":"pixel_size","kind":"special","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":false}],"artifact_outputs":[{"name":"neurite_outgrowth_summary","kind":"measurements","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"neurite_outgrowth_cells","kind":"measurements","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"cell_bodies","kind":"object_labels","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"neurite_outgrowth","kind":"object_labels","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"neurons","kind":"object_labels","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"nuclei","kind":"object_labels","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"neurite_morphology","kind":"spatial_graph","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true}],"cellprofiler_module":null,"source_binding_rule":"Artifact input bindings are resolved from canonical CallableContract artifact_inputs during compilation.","materialization_rule":"Artifact output materialization is derived from output artifact kinds and compile/runtime materialization policy.","measurement_rule":"Measurement and relationship rows are projected by the selected runtime plan and materialized as declared artifacts.","pattern_compatibility_rule":"Regular OpenHCS callables may participate in standard FunctionStep callable, tuple, list, or dict patterns subject to compiler validation. Dictionary keys are normalized group identities selected by group_by, may intentionally cover only a subset of available component values, and omit groups that should not be invoked; compilation rejects keys absent from the available component domain."},"doc_truncated":false,"doc_chars":2093,"max_doc_chars":12000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_38","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_function","arguments":{"function_id":"openhcs:analysis_skan_axon_analysis_skan_axon_skeletonize_and_analyze","compact_signature":false,"max_doc_chars":12000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_38","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_function","arguments":{"function_id":"openhcs:analysis_skan_axon_analysis_skan_axon_skeletonize_and_analyze","compact_signature":false,"max_doc_chars":12000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"entry\": {\n    \"import_path\": \"openhcs.processing.backends.analysis.skan_axon_analysis.skan_axon_skeletonize_and_analyze\",\n    \"function_id\": \"openhcs:analysis_skan_axon_analysis_skan_axon_skeletonize_and_analyze\",\n    \"name\": \"skan_axon_skeletonize_and_analyze\",\n    \"module\": \"openhcs.processing.backends.analysis.skan_axon_analysis\",\n    \"library\": \"openhcs\",\n    \"signature\": \"skan_axon_skeletonize_and_analyze(voxel_spacing=(1.0, 1.0, 1.0), threshold_method=<ThresholdMethod.OTSU: 'otsu'>, threshold_value=None, min_object_size=100, min_branch_length=0.0, filter_edge=None, return_skeleton_visualizations=False, skeleton_visualization_mode=<OutputMode.SKELETON_OVERLAY: 'skeleton_overlay'>, analysis_dimension=<AnalysisDimension.THREE_D: '3d'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n    \"summary\": \"Skeletonize axon images and perform comprehensive skeleton analysis.\",\n    \"backend_tags\": [\n      \"openhcs\",\n      \"analysis\",\n      \"skan_axon_analysis\"\n    ]\n  },\n  \"parameters\": [\n    {\n      \"name\": \"image_stack\",\n      \"annotation\": \"ndarray\",\n      \"default_repr\": null,\n      \"required\": false,\n      \"supplied_by\": \"runtime_primary_input\",\n      \"description\": \"3D grayscale image to skeletonize (Z, Y, X format) Supplied by OpenHCS from the FunctionStep input image payload; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"voxel_spacing\",\n      \"annotation\": \"typing.Tuple[float, float, float]\",\n      \"default_repr\": \"(1.0, 1.0, 1.0)\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Physical voxel spacing (z, y, x) in micrometers\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"threshold_method\",\n      \"annotation\": \"ThresholdMethod\",\n      \"default_repr\": \"ThresholdMethod.OTSU\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Segmentation method (OTSU, MANUAL, ADAPTIVE)\",\n      \"enum_import_path\": \"openhcs.processing.backends.analysis.skan_axon_analysis.ThresholdMethod\",\n      \"enum_members\": [\n        \"OTSU\",\n        \"MANUAL\",\n        \"ADAPTIVE\"\n      ],\n      \"enum_values\": [\n        \"otsu\",\n        \"manual\",\n        \"adaptive\"\n      ]\n    },\n    {\n      \"name\": \"threshold_value\",\n      \"annotation\": \"typing.Optional[float]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Manual threshold value (if threshold_method=MANUAL)\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"min_object_size\",\n      \"annotation\": \"int\",\n      \"default_repr\": \"100\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Minimum object size for noise removal (voxels)\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"min_branch_length\",\n      \"annotation\": \"float\",\n      \"default_repr\": \"0.0\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Minimum branch length threshold (micrometers)\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"filter_edge\",\n      \"annotation\": \"typing.Optional[str]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Keep only objects touching this edge ('left', 'right', 'top', 'bottom', or None for no filtering)\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"return_skeleton_visualizations\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Whether to generate skeleton visualizations as special output\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"skeleton_visualization_mode\",\n      \"annotation\": \"OutputMode\",\n      \"default_repr\": \"OutputMode.SKELETON_OVERLAY\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Type of visualization (SKELETON, SKELETON_OVERLAY, ORIGINAL, COMPOSITE)\",\n      \"enum_import_path\": \"openhcs.processing.backends.analysis.skan_axon_analysis.OutputMode\",\n      \"enum_members\": [\n        \"SKELETON\",\n        \"SKELETON_OVERLAY\",\n        \"ORIGINAL\",\n        \"COMPOSITE\"\n      ],\n      \"enum_values\": [\n        \"skeleton\",\n        \"skeleton_overlay\",\n        \"original\",\n        \"composite\"\n      ]\n    },\n    {\n      \"name\": \"analysis_dimension\",\n      \"annotation\": \"AnalysisDimension\",\n      \"default_repr\": \"AnalysisDimension.THREE_D\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Analysis mode (TWO_D or THREE_D)\",\n      \"enum_import_path\": \"openhcs.processing.backends.analysis.skan_axon_analysis.AnalysisDimension\",\n      \"enum_members\": [\n        \"TWO_D\",\n        \"THREE_D\"\n      ],\n      \"enum_values\": [\n        \"2d\",\n        \"3d\"\n      ]\n    },\n    {\n      \"name\": \"slice_by_slice\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_parameter\",\n      \"description\": \"bool, optional\\nAdded by the numpy memory decorator. Process 3D arrays slice-by-slice.\\nDefaults to False. Prevents cross-slice contamination. Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"dtype_config\",\n      \"annotation\": \"LazyDtypeConfig\",\n      \"default_repr\": \"LazyDtypeConfig(default_dtype_conversion=<DtypeConversion.NATIVE_OUTPUT: 'native'>)\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_parameter\",\n      \"description\": \"Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"enabled\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Run this callable or configuration when enabled; skip it when disabled.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    }\n  ],\n  \"doc\": \"Skeletonize axon images and perform comprehensive skeleton analysis.\\n\\nComplete workflow: segmentation → skeletonization → analysis\\n\\nArgs:\\n    image_stack: 3D grayscale image to skeletonize (Z, Y, X format)\\n    voxel_spacing: Physical voxel spacing (z, y, x) in micrometers\\n    threshold_method: Segmentation method (OTSU, MANUAL, ADAPTIVE)\\n    threshold_value: Manual threshold value (if threshold_method=MANUAL)\\n    min_object_size: Minimum object size for noise removal (voxels)\\n    min_branch_length: Minimum branch length threshold (micrometers)\\n    filter_edge: Keep only objects touching this edge ('left', 'right', 'top', 'bottom', or None for no filtering)\\n    return_skeleton_visualizations: Whether to generate skeleton visualizations as special output\\n    skeleton_visualization_mode: Type of visualization (SKELETON, SKELETON_OVERLAY, ORIGINAL, COMPOSITE)\\n    analysis_dimension: Analysis mode (TWO_D or THREE_D)\\nReturns:\\n    Tuple containing:\\n    - Original image stack: Input image unchanged (Z, Y, X)\\n    - Axon analysis results: Complete analysis data structure\\n    - Skeleton visualizations: (Special output) List of visualization arrays if return_skeleton_visualizations=True\\n    - Skeleton mask: (Special output) Binary skeleton mask (Z, Y, X) - gets converted to ROIs by materializer\\n\\n\\nAdditional Parameters\\n---------------------\\n    slice_by_slice : bool, optional\\n        Added by the numpy memory decorator. Process 3D arrays slice-by-slice.\\n        Defaults to False. Prevents cross-slice contamination.\",\n  \"runtime_contract\": {\n    \"callable_kind\": \"regular\",\n    \"processing_contract\": \"FLEXIBLE\",\n    \"declared_processing_contract\": \"FLEXIBLE\",\n    \"runtime_bound_parameters\": [\n      \"slice_by_slice\"\n    ],\n    \"required_variable_components\": [],\n    \"artifact_inputs\": [],\n    \"artifact_outputs\": [\n      {\n        \"name\": \"axon_summary\",\n        \"kind\": \"measurements\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"axon_branches\",\n        \"kind\": \"measurements\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"skeleton_visualizations\",\n        \"kind\": \"image\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      },\n      {\n        \"name\": \"skeleton_masks\",\n        \"kind\": \"object_labels\",\n        \"required\": true,\n        \"sidecar_role\": null,\n        \"materialization_uses_source_identity_filename\": true\n      }\n    ],\n    \"cellprofiler_module\": null,\n    \"source_binding_rule\": null,\n    \"materialization_rule\": \"Artifact output materialization is derived from output artifact kinds and compile/runtime materialization policy.\",\n    \"measurement_rule\": \"Measurement and relationship rows are projected by the selected runtime plan and materialized as declared artifacts.\",\n    \"pattern_compatibility_rule\": \"Regular OpenHCS callables may participate in standard FunctionStep callable, tuple, list, or dict patterns subject to compiler validation. Dictionary keys are normalized group identities selected by group_by, may intentionally cover only a subset of available component values, and omit groups that should not be invoked; compilation rejects keys absent from the available component domain.\"\n  },\n  \"doc_truncated\": false,\n  \"doc_chars\": 1527,\n  \"max_doc_chars\": 12000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","entry":{"import_path":"openhcs.processing.backends.analysis.skan_axon_analysis.skan_axon_skeletonize_and_analyze","function_id":"openhcs:analysis_skan_axon_analysis_skan_axon_skeletonize_and_analyze","name":"skan_axon_skeletonize_and_analyze","module":"openhcs.processing.backends.analysis.skan_axon_analysis","library":"openhcs","signature":"skan_axon_skeletonize_and_analyze(voxel_spacing=(1.0, 1.0, 1.0), threshold_method=<ThresholdMethod.OTSU: 'otsu'>, threshold_value=None, min_object_size=100, min_branch_length=0.0, filter_edge=None, return_skeleton_visualizations=False, skeleton_visualization_mode=<OutputMode.SKELETON_OVERLAY: 'skeleton_overlay'>, analysis_dimension=<AnalysisDimension.THREE_D: '3d'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Skeletonize axon images and perform comprehensive skeleton analysis.","backend_tags":["openhcs","analysis","skan_axon_analysis"]},"parameters":[{"name":"image_stack","annotation":"ndarray","default_repr":null,"required":false,"supplied_by":"runtime_primary_input","description":"3D grayscale image to skeletonize (Z, Y, X format) Supplied by OpenHCS from the FunctionStep input image payload; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"voxel_spacing","annotation":"typing.Tuple[float, float, float]","default_repr":"(1.0, 1.0, 1.0)","required":false,"supplied_by":"agent","description":"Physical voxel spacing (z, y, x) in micrometers","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"threshold_method","annotation":"ThresholdMethod","default_repr":"ThresholdMethod.OTSU","required":false,"supplied_by":"agent","description":"Segmentation method (OTSU, MANUAL, ADAPTIVE)","enum_import_path":"openhcs.processing.backends.analysis.skan_axon_analysis.ThresholdMethod","enum_members":["OTSU","MANUAL","ADAPTIVE"],"enum_values":["otsu","manual","adaptive"]},{"name":"threshold_value","annotation":"typing.Optional[float]","default_repr":"None","required":false,"supplied_by":"agent","description":"Manual threshold value (if threshold_method=MANUAL)","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"min_object_size","annotation":"int","default_repr":"100","required":false,"supplied_by":"agent","description":"Minimum object size for noise removal (voxels)","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"min_branch_length","annotation":"float","default_repr":"0.0","required":false,"supplied_by":"agent","description":"Minimum branch length threshold (micrometers)","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"filter_edge","annotation":"typing.Optional[str]","default_repr":"None","required":false,"supplied_by":"agent","description":"Keep only objects touching this edge ('left', 'right', 'top', 'bottom', or None for no filtering)","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"return_skeleton_visualizations","annotation":"bool","default_repr":"False","required":false,"supplied_by":"agent","description":"Whether to generate skeleton visualizations as special output","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"skeleton_visualization_mode","annotation":"OutputMode","default_repr":"OutputMode.SKELETON_OVERLAY","required":false,"supplied_by":"agent","description":"Type of visualization (SKELETON, SKELETON_OVERLAY, ORIGINAL, COMPOSITE)","enum_import_path":"openhcs.processing.backends.analysis.skan_axon_analysis.OutputMode","enum_members":["SKELETON","SKELETON_OVERLAY","ORIGINAL","COMPOSITE"],"enum_values":["skeleton","skeleton_overlay","original","composite"]},{"name":"analysis_dimension","annotation":"AnalysisDimension","default_repr":"AnalysisDimension.THREE_D","required":false,"supplied_by":"agent","description":"Analysis mode (TWO_D or THREE_D)","enum_import_path":"openhcs.processing.backends.analysis.skan_axon_analysis.AnalysisDimension","enum_members":["TWO_D","THREE_D"],"enum_values":["2d","3d"]},{"name":"slice_by_slice","annotation":"bool","default_repr":"False","required":false,"supplied_by":"runtime_parameter","description":"bool, optional\nAdded by the numpy memory decorator. Process 3D arrays slice-by-slice.\nDefaults to False. Prevents cross-slice contamination. Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"dtype_config","annotation":"LazyDtypeConfig","default_repr":"LazyDtypeConfig(default_dtype_conversion=<DtypeConversion.NATIVE_OUTPUT: 'native'>)","required":false,"supplied_by":"runtime_parameter","description":"Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"enabled","annotation":"bool","default_repr":"True","required":false,"supplied_by":"agent","description":"Run this callable or configuration when enabled; skip it when disabled.","enum_import_path":null,"enum_members":[],"enum_values":[]}],"doc":"Skeletonize axon images and perform comprehensive skeleton analysis.\n\nComplete workflow: segmentation → skeletonization → analysis\n\nArgs:\n    image_stack: 3D grayscale image to skeletonize (Z, Y, X format)\n    voxel_spacing: Physical voxel spacing (z, y, x) in micrometers\n    threshold_method: Segmentation method (OTSU, MANUAL, ADAPTIVE)\n    threshold_value: Manual threshold value (if threshold_method=MANUAL)\n    min_object_size: Minimum object size for noise removal (voxels)\n    min_branch_length: Minimum branch length threshold (micrometers)\n    filter_edge: Keep only objects touching this edge ('left', 'right', 'top', 'bottom', or None for no filtering)\n    return_skeleton_visualizations: Whether to generate skeleton visualizations as special output\n    skeleton_visualization_mode: Type of visualization (SKELETON, SKELETON_OVERLAY, ORIGINAL, COMPOSITE)\n    analysis_dimension: Analysis mode (TWO_D or THREE_D)\nReturns:\n    Tuple containing:\n    - Original image stack: Input image unchanged (Z, Y, X)\n    - Axon analysis results: Complete analysis data structure\n    - Skeleton visualizations: (Special output) List of visualization arrays if return_skeleton_visualizations=True\n    - Skeleton mask: (Special output) Binary skeleton mask (Z, Y, X) - gets converted to ROIs by materializer\n\n\nAdditional Parameters\n---------------------\n    slice_by_slice : bool, optional\n        Added by the numpy memory decorator. Process 3D arrays slice-by-slice.\n        Defaults to False. Prevents cross-slice contamination.","runtime_contract":{"callable_kind":"regular","processing_contract":"FLEXIBLE","declared_processing_contract":"FLEXIBLE","runtime_bound_parameters":["slice_by_slice"],"required_variable_components":[],"artifact_inputs":[],"artifact_outputs":[{"name":"axon_summary","kind":"measurements","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"axon_branches","kind":"measurements","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"skeleton_visualizations","kind":"image","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true},{"name":"skeleton_masks","kind":"object_labels","required":true,"sidecar_role":null,"materialization_uses_source_identity_filename":true}],"cellprofiler_module":null,"source_binding_rule":null,"materialization_rule":"Artifact output materialization is derived from output artifact kinds and compile/runtime materialization policy.","measurement_rule":"Measurement and relationship rows are projected by the selected runtime plan and materialized as declared artifacts.","pattern_compatibility_rule":"Regular OpenHCS callables may participate in standard FunctionStep callable, tuple, list, or dict patterns subject to compiler validation. Dictionary keys are normalized group identities selected by group_by, may intentionally cover only a subset of available component values, and omit groups that should not be invoked; compilation rejects keys absent from the available component domain."},"doc_truncated":false,"doc_chars":1527,"max_doc_chars":12000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_39","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"rescale normalize intensity","limit":30,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_39","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"rescale normalize intensity","limit":30,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.rescale_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_rescale_intensity\",\n      \"name\": \"rescale_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"rescale_intensity(rescale_method, automatic_low, automatic_high, source_low, ...)\",\n      \"summary\": \"Rescale CellProfiler image intensity using its declared range policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate\",\n      \"function_id\": \"openhcs:cellprofiler_correct_illumination_calculate\",\n      \"name\": \"correct_illumination_calculate\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.illumination\",\n      \"library\": \"openhcs\",\n      \"signature\": \"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)\",\n      \"summary\": \"Estimate a smooth illumination correction function from image data.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.color.gray_to_color\",\n      \"function_id\": \"openhcs:cellprofiler_gray_to_color\",\n      \"name\": \"gray_to_color\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.color\",\n      \"library\": \"openhcs\",\n      \"signature\": \"gray_to_color(color_scheme, rescale_intensity, red_channel, green_channel, ...)\",\n      \"summary\": \"Dispatch GrayToColor across its RGB, CMYK, Stack, and Composite variants.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morph\",\n      \"function_id\": \"openhcs:cellprofiler_morph\",\n      \"name\": \"morph\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)\",\n      \"summary\": \"Decorated CellProfiler Morph entrypoint backed by registered strategies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.percentile_normalize\",\n      \"function_id\": \"openhcs:processors_numpy_processor_percentile_normalize\",\n      \"name\": \"percentile_normalize\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)\",\n      \"summary\": \"Normalize each plane independently using percentile-based contrast stretching.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.stack_percentile_normalize\",\n      \"function_id\": \"openhcs:processors_numpy_processor_stack_percentile_normalize\",\n      \"name\": \"stack_percentile_normalize\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"stack_percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)\",\n      \"summary\": \"Normalize a stack using global percentile-based contrast stretching.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.thresholding.threshold\",\n      \"function_id\": \"openhcs:cellprofiler_threshold\",\n      \"name\": \"threshold\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.thresholding\",\n      \"library\": \"openhcs\",\n      \"signature\": \"threshold(mask, threshold_scope, threshold_method, assign_middle_to_foreground, ...)\",\n      \"summary\": \"Apply CP-compatible thresholding and emit the module measurement row.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy\",\n      \"function_id\": \"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy\",\n      \"name\": \"basic_flatfield_correction_numpy\",\n      \"module\": \"openhcs.processing.backends.enhance.basic_processor_numpy\",\n      \"library\": \"openhcs\",\n      \"signature\": \"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)\",\n      \"summary\": \"Correct a shared illumination field with low-rank and sparse decomposition.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"enhance\",\n        \"basic_processor_numpy\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_intensity\",\n      \"name\": \"measure_image_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_intensity(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure intensity across the declared image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_intensity_objects\",\n      \"name\": \"measure_image_intensity_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_intensity_objects(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure image intensity within one declared object set.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity.measure_object_intensity\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_intensity\",\n      \"name\": \"measure_object_intensity\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_intensity(object_intensity_backend_provider=DefaultCellProfilerBackendProviderSelection(), object_intensity_prepared_labels=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.processing.backends.cellprofiler.intensity.ObjectIntensityMeasurementRows]\",\n      \"summary\": \"Measure CellProfiler intensity features for identified objects.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.intensity_distribution.measure_object_intensity_distribution\",\n      \"function_id\": \"openhcs:cellprofiler_measure_object_intensity_distribution\",\n      \"name\": \"measure_object_intensity_distribution\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.intensity_distribution\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_object_intensity_distribution(bin_count, wants_scaled, maximum_radius, wants_zernikes, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible object intensity distribution rows.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.alignment.align\",\n      \"function_id\": \"openhcs:cellprofiler_align\",\n      \"name\": \"align\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.alignment\",\n      \"library\": \"openhcs\",\n      \"signature\": \"align(method, crop_mode, additional_alignment_modes, alignment_backend_provider, ...)\",\n      \"summary\": \"Align primary images and apply declared additional-image shifts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel\",\n      \"function_id\": \"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel\",\n      \"name\": \"count_cells_multi_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.cell_counting_cpu\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)\",\n      \"summary\": \"Count cells in multi-channel image stack with colocalization analysis.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"cell_counting_cpu\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel\",\n      \"function_id\": \"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel\",\n      \"name\": \"count_cells_simple_dual_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.count_cells_simple\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"count_cells_simple\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.display_modules.display_histogram\",\n      \"function_id\": \"openhcs:cellprofiler_display_histogram\",\n      \"name\": \"display_histogram\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.display_modules\",\n      \"library\": \"openhcs\",\n      \"signature\": \"display_histogram(object_name, measurement_feature, num_bins, x_scale, ...)\",\n      \"summary\": \"Compute histogram statistics from object measurements.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.maxima.find_maxima\",\n      \"function_id\": \"openhcs:cellprofiler_find_maxima\",\n      \"name\": \"find_maxima\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.maxima\",\n      \"library\": \"openhcs\",\n      \"signature\": \"find_maxima(min_distance, exclude_mode, min_intensity, label_maxima, ...)\",\n      \"summary\": \"Find local maxima under the requested CP exclusion policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.maxima.find_maxima_with_mask\",\n      \"function_id\": \"openhcs:cellprofiler_find_maxima_with_mask\",\n      \"name\": \"find_maxima_with_mask\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.maxima\",\n      \"library\": \"openhcs\",\n      \"signature\": \"find_maxima_with_mask(min_distance=5, min_intensity=0.0, label_maxima=True, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Find local maxima within a stacked mask input.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.flagging.flag_image\",\n      \"function_id\": \"openhcs:cellprofiler_flag_image\",\n      \"name\": \"flag_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.flagging\",\n      \"library\": \"openhcs\",\n      \"signature\": \"flag_image(flag_categories, flag_names, combination_choices, wants_skip, ...)\",\n      \"summary\": \"Emit one exact integer image measurement for every repeated flag.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_primary_objects\",\n      \"name\": \"identify_primary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.primary_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)\",\n      \"summary\": \"Segment primary objects, such as fluorescent nuclei, in a grayscale image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects\",\n      \"name\": \"identify_secondary_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Identify secondary objects without a replacement-primary output.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary\",\n      \"function_id\": \"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary\",\n      \"name\": \"identify_secondary_objects_with_replacement_primary\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.secondary\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)\",\n      \"summary\": \"Execute the contract variant that emits replacement-primary artifacts.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization\",\n      \"name\": \"measure_colocalization\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)\",\n      \"summary\": \"Measure colocalization between two channels from an N-channel image.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_colocalization_objects\",\n      \"name\": \"measure_colocalization_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.colocalization\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)\",\n      \"summary\": \"Measure image and/or object colocalization through one declared callable.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_quality\",\n      \"name\": \"measure_image_quality\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.image_quality\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)\",\n      \"summary\": \"Measure CellProfiler-compatible image-quality metrics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_objects\",\n      \"function_id\": \"openhcs:cellprofiler_measure_image_volume_occupied_objects\",\n      \"name\": \"measure_image_volume_occupied_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.area_occupied\",\n      \"library\": \"openhcs\",\n      \"signature\": \"measure_image_volume_occupied_objects(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]\",\n      \"summary\": \"Measure volume occupied by labeled objects in 3D.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop\",\n      \"name\": \"multi_template_crop\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop(template_path, score_threshold, max_matches, crop_margin, ...)\",\n      \"summary\": \"Perform multi-template matching on each slice of a 3D image stack and return cropped regions.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_reference_channel\",\n      \"function_id\": \"openhcs:analysis_multi_template_matching_multi_template_crop_reference_channel\",\n      \"name\": \"multi_template_crop_reference_channel\",\n      \"module\": \"openhcs.processing.backends.analysis.multi_template_matching\",\n      \"library\": \"openhcs\",\n      \"signature\": \"multi_template_crop_reference_channel(template_path, reference_channel, score_threshold, max_matches, ...)\",\n      \"summary\": \"Perform template matching on a reference channel and apply the same crop to all channels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"multi_template_matching\"\n      ]\n    }\n  ],\n  \"total\": 46,\n  \"limit\": 30,\n  \"query\": \"rescale normalize intensity\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.cellprofiler.intensity.rescale_intensity","function_id":"openhcs:cellprofiler_rescale_intensity","name":"rescale_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"rescale_intensity(rescale_method, automatic_low, automatic_high, source_low, ...)","summary":"Rescale CellProfiler image intensity using its declared range policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.illumination.correct_illumination_calculate","function_id":"openhcs:cellprofiler_correct_illumination_calculate","name":"correct_illumination_calculate","module":"openhcs.processing.backends.cellprofiler.illumination","library":"openhcs","signature":"correct_illumination_calculate(intensity_choice, dilate_objects, object_dilation_radius, block_size, ...)","summary":"Estimate a smooth illumination correction function from image data.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method, enhance_method, radius, speckle_accuracy, ...)","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.color.gray_to_color","function_id":"openhcs:cellprofiler_gray_to_color","name":"gray_to_color","module":"openhcs.processing.backends.cellprofiler.color","library":"openhcs","signature":"gray_to_color(color_scheme, rescale_intensity, red_channel, green_channel, ...)","summary":"Dispatch GrayToColor across its RGB, CMYK, Stack, and Composite variants.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morph","function_id":"openhcs:cellprofiler_morph","name":"morph","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morph(operation, repeat_mode, custom_repeats, rescale_values, ...)","summary":"Decorated CellProfiler Morph entrypoint backed by registered strategies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.percentile_normalize","function_id":"openhcs:processors_numpy_processor_percentile_normalize","name":"percentile_normalize","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)","summary":"Normalize each plane independently using percentile-based contrast stretching.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.stack_percentile_normalize","function_id":"openhcs:processors_numpy_processor_stack_percentile_normalize","name":"stack_percentile_normalize","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"stack_percentile_normalize(low_percentile, high_percentile, target_min, target_max, ...)","summary":"Normalize a stack using global percentile-based contrast stretching.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.thresholding.threshold","function_id":"openhcs:cellprofiler_threshold","name":"threshold","module":"openhcs.processing.backends.cellprofiler.thresholding","library":"openhcs","signature":"threshold(mask, threshold_scope, threshold_method, assign_middle_to_foreground, ...)","summary":"Apply CP-compatible thresholding and emit the module measurement row.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.enhance.basic_processor_numpy.basic_flatfield_correction_numpy","function_id":"openhcs:enhance_basic_processor_numpy_basic_flatfield_correction_numpy","name":"basic_flatfield_correction_numpy","module":"openhcs.processing.backends.enhance.basic_processor_numpy","library":"openhcs","signature":"basic_flatfield_correction_numpy(max_iters, lambda_sparse, lambda_lowrank, rank, ...)","summary":"Correct a shared illumination field with low-rank and sparse decomposition.","backend_tags":["openhcs","enhance","basic_processor_numpy"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity","function_id":"openhcs:cellprofiler_measure_image_intensity","name":"measure_image_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_image_intensity(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure intensity across the declared image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_image_intensity_objects","function_id":"openhcs:cellprofiler_measure_image_intensity_objects","name":"measure_image_intensity_objects","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_image_intensity_objects(calculate_percentiles=False, percentiles=(10, 90), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure image intensity within one declared object set.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity.measure_object_intensity","function_id":"openhcs:cellprofiler_measure_object_intensity","name":"measure_object_intensity","module":"openhcs.processing.backends.cellprofiler.intensity","library":"openhcs","signature":"measure_object_intensity(object_intensity_backend_provider=DefaultCellProfilerBackendProviderSelection(), object_intensity_prepared_labels=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.processing.backends.cellprofiler.intensity.ObjectIntensityMeasurementRows]","summary":"Measure CellProfiler intensity features for identified objects.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.intensity_distribution.measure_object_intensity_distribution","function_id":"openhcs:cellprofiler_measure_object_intensity_distribution","name":"measure_object_intensity_distribution","module":"openhcs.processing.backends.cellprofiler.intensity_distribution","library":"openhcs","signature":"measure_object_intensity_distribution(bin_count, wants_scaled, maximum_radius, wants_zernikes, ...)","summary":"Measure CellProfiler-compatible object intensity distribution rows.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.alignment.align","function_id":"openhcs:cellprofiler_align","name":"align","module":"openhcs.processing.backends.cellprofiler.alignment","library":"openhcs","signature":"align(method, crop_mode, additional_alignment_modes, alignment_backend_provider, ...)","summary":"Align primary images and apply declared additional-image shifts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.cell_counting_cpu.count_cells_multi_channel","function_id":"openhcs:analysis_cell_counting_cpu_count_cells_multi_channel","name":"count_cells_multi_channel","module":"openhcs.processing.backends.analysis.cell_counting_cpu","library":"openhcs","signature":"count_cells_multi_channel(chan_1, chan_2, chan_1_method, chan_1_min_sigma, ...)","summary":"Count cells in multi-channel image stack with colocalization analysis.","backend_tags":["openhcs","analysis","cell_counting_cpu"]},{"import_path":"openhcs.processing.backends.analysis.count_cells_simple.count_cells_simple_dual_channel","function_id":"openhcs:analysis_count_cells_simple_count_cells_simple_dual_channel","name":"count_cells_simple_dual_channel","module":"openhcs.processing.backends.analysis.count_cells_simple","library":"openhcs","signature":"count_cells_simple_dual_channel(w1=MetaXpressWavelengthSettings(channel_index=0, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), w2=MetaXpressW2Settings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0, stained_area=<StainedArea.NUCLEUS: 'nucleus'>), minimum_stained_area=10.0, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count W1 nuclei and score W2-positive cells like MetaXpress MWCS.","backend_tags":["openhcs","analysis","count_cells_simple"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.display_modules.display_histogram","function_id":"openhcs:cellprofiler_display_histogram","name":"display_histogram","module":"openhcs.processing.backends.cellprofiler.display_modules","library":"openhcs","signature":"display_histogram(object_name, measurement_feature, num_bins, x_scale, ...)","summary":"Compute histogram statistics from object measurements.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.maxima.find_maxima","function_id":"openhcs:cellprofiler_find_maxima","name":"find_maxima","module":"openhcs.processing.backends.cellprofiler.maxima","library":"openhcs","signature":"find_maxima(min_distance, exclude_mode, min_intensity, label_maxima, ...)","summary":"Find local maxima under the requested CP exclusion policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.maxima.find_maxima_with_mask","function_id":"openhcs:cellprofiler_find_maxima_with_mask","name":"find_maxima_with_mask","module":"openhcs.processing.backends.cellprofiler.maxima","library":"openhcs","signature":"find_maxima_with_mask(min_distance=5, min_intensity=0.0, label_maxima=True, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Find local maxima within a stacked mask input.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.flagging.flag_image","function_id":"openhcs:cellprofiler_flag_image","name":"flag_image","module":"openhcs.processing.backends.cellprofiler.flagging","library":"openhcs","signature":"flag_image(flag_categories, flag_names, combination_choices, wants_skip, ...)","summary":"Emit one exact integer image measurement for every repeated flag.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.primary_objects.identify_primary_objects","function_id":"openhcs:cellprofiler_identify_primary_objects","name":"identify_primary_objects","module":"openhcs.processing.backends.cellprofiler.primary_objects","library":"openhcs","signature":"identify_primary_objects(min_diameter, max_diameter, exclude_size, exclude_border_objects, ...)","summary":"Segment primary objects, such as fluorescent nuclei, in a grayscale image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects","function_id":"openhcs:cellprofiler_identify_secondary_objects","name":"identify_secondary_objects","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Identify secondary objects without a replacement-primary output.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.secondary.identify_secondary_objects_with_replacement_primary","function_id":"openhcs:cellprofiler_identify_secondary_objects_with_replacement_primary","name":"identify_secondary_objects_with_replacement_primary","module":"openhcs.processing.backends.cellprofiler.secondary","library":"openhcs","signature":"identify_secondary_objects_with_replacement_primary(method, threshold_scope, threshold_method, threshold_smoothing_scale, ...)","summary":"Execute the contract variant that emits replacement-primary artifacts.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization","function_id":"openhcs:cellprofiler_measure_colocalization","name":"measure_colocalization","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization(channel_1, channel_2, threshold_percent, do_correlation, ...)","summary":"Measure colocalization between two channels from an N-channel image.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.colocalization.measure_colocalization_objects","function_id":"openhcs:cellprofiler_measure_colocalization_objects","name":"measure_colocalization_objects","module":"openhcs.processing.backends.cellprofiler.colocalization","library":"openhcs","signature":"measure_colocalization_objects(measurement_scope, channel_1, channel_2, threshold_percent, ...)","summary":"Measure image and/or object colocalization through one declared callable.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.image_quality.measure_image_quality","function_id":"openhcs:cellprofiler_measure_image_quality","name":"measure_image_quality","module":"openhcs.processing.backends.cellprofiler.image_quality","library":"openhcs","signature":"measure_image_quality(include_scaling, calculate_blur, calculate_saturation, calculate_intensity, ...)","summary":"Measure CellProfiler-compatible image-quality metrics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.area_occupied.measure_image_volume_occupied_objects","function_id":"openhcs:cellprofiler_measure_image_volume_occupied_objects","name":"measure_image_volume_occupied_objects","module":"openhcs.processing.backends.cellprofiler.area_occupied","library":"openhcs","signature":"measure_image_volume_occupied_objects(spacing=None, *, enabled=True) -> Tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows]","summary":"Measure volume occupied by labeled objects in 3D.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop","name":"multi_template_crop","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop(template_path, score_threshold, max_matches, crop_margin, ...)","summary":"Perform multi-template matching on each slice of a 3D image stack and return cropped regions.","backend_tags":["openhcs","analysis","multi_template_matching"]},{"import_path":"openhcs.processing.backends.analysis.multi_template_matching.multi_template_crop_reference_channel","function_id":"openhcs:analysis_multi_template_matching_multi_template_crop_reference_channel","name":"multi_template_crop_reference_channel","module":"openhcs.processing.backends.analysis.multi_template_matching","library":"openhcs","signature":"multi_template_crop_reference_channel(template_path, reference_channel, score_threshold, max_matches, ...)","summary":"Perform template matching on a reference channel and apply the same crop to all channels.","backend_tags":["openhcs","analysis","multi_template_matching"]}],"total":46,"limit":30,"query":"rescale normalize intensity","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_40","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_40","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"PipelineConfig\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"materialization_results_path\",\n      \"type_repr\": \"typing.Optional[pathlib.Path]\",\n      \"default_repr\": \"openhcs.core.config.GlobalPipelineConfig.<lambda>()\",\n      \"required\": false,\n      \"description\": \"Path for materialized analysis results (CSV, JSON files from artifacts).\\n\\n    This is a pipeline-wide setting that controls where artifact materialization\\n    functions save their analysis results, regardless of which step produces them.\\n\\n    Can be relative to plate folder or absolute path.\\n    Default: \\\"results\\\" creates a results/ folder in the plate directory.\\n    Examples: \\\"results\\\", \\\"./analysis\\\", \\\"/data/analysis_results\\\", \\\"../shared_results\\\"\\n\\n    Note: This is separate from per-step image materialization, which is controlled\\n    by the sub_dir field in each step's step_materialization_config.\",\n      \"authoring_value_path\": [\n        \"materialization_results_path\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[pathlib.Path]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_factory\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"materialize_runtime_artifacts\",\n      \"type_repr\": \"typing.Optional[bool]\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"description\": \"Persist runtime artifacts such as measurements/tables to configured result files.\",\n      \"authoring_value_path\": [\n        \"materialize_runtime_artifacts\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[bool]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"num_workers\",\n      \"type_repr\": \"typing.Optional[int]\",\n      \"default_repr\": \"1\",\n      \"required\": false,\n      \"description\": \"Number of worker processes/threads for parallelizable tasks.\",\n      \"authoring_value_path\": [\n        \"num_workers\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[int]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"microscope\",\n      \"type_repr\": \"typing.Optional[openhcs.constants.constants.Microscope]\",\n      \"default_repr\": \"openhcs.core.config.GlobalPipelineConfig.<lambda>()\",\n      \"required\": false,\n      \"description\": \"Default microscope type for auto-detection.\",\n      \"authoring_value_path\": [\n        \"microscope\"\n      ],\n      \"enum_values\": [\n        \"auto\",\n        \"openhcsdata\",\n        \"imagexpress\",\n        \"opera_phenix\",\n        \"bbbc021\",\n        \"bbbc038\",\n        \"omero\",\n        \"bioformats\",\n        \"source_bindings\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.constants.constants.Microscope]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_factory\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"use_threading\",\n      \"type_repr\": \"typing.Optional[bool]\",\n      \"default_repr\": \"openhcs.utils.environment.OpenHCSProcessEnvironment.use_threading_mode()\",\n      \"required\": false,\n      \"description\": \"Use ThreadPoolExecutor instead of ProcessPoolExecutor for debugging. Reads from OPENHCS_USE_THREADING environment variable.\",\n      \"authoring_value_path\": [\n        \"use_threading\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[bool]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_factory\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"multiprocessing_start_method\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.MultiprocessingStartMethod]\",\n      \"default_repr\": \"openhcs.core.config.GlobalPipelineConfig.<lambda>()\",\n      \"required\": false,\n      \"description\": \"Process start method for multiprocessing workers. SPAWN is CUDA-safe; FORK is CPU-only.\",\n      \"authoring_value_path\": [\n        \"multiprocessing_start_method\"\n      ],\n      \"enum_values\": [\n        \"spawn\",\n        \"fork\",\n        \"forkserver\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.MultiprocessingStartMethod]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_factory\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"auto_add_output_plate_to_plate_manager\",\n      \"type_repr\": \"typing.Optional[bool]\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"description\": \"If True, when a plate run completes successfully, the computed output plate root\\n    (from path planning) is automatically added to Plate Manager as a new orchestrator\\n    if it is not already present.\",\n      \"authoring_value_path\": [\n        \"auto_add_output_plate_to_plate_manager\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[bool]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_display_config\",\n      \"type_repr\": \"openhcs.core.config.LazyNapariDisplayConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyNapariDisplayConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for Napari display behavior.\",\n      \"authoring_value_path\": [\n        \"napari_display_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"ui_hidden\": true,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"napari_display_config\"\n    },\n    {\n      \"path\": \"fiji_display_config\",\n      \"type_repr\": \"openhcs.core.config.LazyFijiDisplayConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyFijiDisplayConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for Fiji display behavior.\",\n      \"authoring_value_path\": [\n        \"fiji_display_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.FijiDisplayConfig\",\n      \"ui_hidden\": true,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"fiji_display_config\"\n    },\n    {\n      \"path\": \"well_filter_config\",\n      \"type_repr\": \"openhcs.core.config.LazyWellFilterConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyWellFilterConfig()\",\n      \"required\": false,\n      \"description\": \"Base execution-domain filter inherited by specialized well policies.\",\n      \"authoring_value_path\": [\n        \"well_filter_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.WellFilterConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"well_filter_config\"\n    },\n    {\n      \"path\": \"zarr_config\",\n      \"type_repr\": \"openhcs.core.config.LazyZarrConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyZarrConfig()\",\n      \"required\": false,\n      \"description\": \"OpenHCS registration of PolyStore's Zarr configuration owner.\",\n      \"authoring_value_path\": [\n        \"zarr_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.ZarrConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"zarr_config\"\n    },\n    {\n      \"path\": \"vfs_config\",\n      \"type_repr\": \"openhcs.core.config.LazyVFSConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyVFSConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for Virtual File System (VFS) related operations.\",\n      \"authoring_value_path\": [\n        \"vfs_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.VFSConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"vfs_config\"\n    },\n    {\n      \"path\": \"dtype_config\",\n      \"type_repr\": \"openhcs.core.config.LazyDtypeConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyDtypeConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for dtype conversion behavior in memory type decorators.\",\n      \"authoring_value_path\": [\n        \"dtype_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.DtypeConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"dtype_config\"\n    },\n    {\n      \"path\": \"processing_config\",\n      \"type_repr\": \"openhcs.core.config.LazyProcessingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyProcessingConfig()\",\n      \"required\": false,\n      \"description\": \"Independent stack-axis, post-assembly grouping, and main-flow choices.\",\n      \"authoring_value_path\": [\n        \"processing_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.ProcessingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"processing_config\"\n    },\n    {\n      \"path\": \"source_bindings_config\",\n      \"type_repr\": \"openhcs.core.source_bindings.LazySourceBindingsConfig\",\n      \"default_repr\": \"openhcs.core.source_bindings.LazySourceBindingsConfig()\",\n      \"required\": false,\n      \"description\": \"Canonical pipeline declaration for selecting and naming plate sources.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"source_bindings_config\"\n    },\n    {\n      \"path\": \"step_source_bindings_config\",\n      \"type_repr\": \"openhcs.core.source_bindings.LazyStepSourceBindingsConfig\",\n      \"default_repr\": \"openhcs.core.source_bindings.LazyStepSourceBindingsConfig()\",\n      \"required\": false,\n      \"description\": \"Step-local source-binding config inheriting pipeline/plate defaults.\",\n      \"authoring_value_path\": [\n        \"step_source_bindings_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.StepSourceBindingsConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"step_source_bindings_config\"\n    },\n    {\n      \"path\": \"sequential_processing_config\",\n      \"type_repr\": \"openhcs.core.config.LazySequentialProcessingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazySequentialProcessingConfig()\",\n      \"required\": false,\n      \"description\": \"Pipeline-level configuration for sequential processing mode.\",\n      \"authoring_value_path\": [\n        \"sequential_processing_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.SequentialProcessingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"sequential_processing_config\"\n    },\n    {\n      \"path\": \"analysis_consolidation_config\",\n      \"type_repr\": \"openhcs.core.config.LazyAnalysisConsolidationConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyAnalysisConsolidationConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for automatic analysis results consolidation.\",\n      \"authoring_value_path\": [\n        \"analysis_consolidation_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.AnalysisConsolidationConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"analysis_consolidation_config\"\n    },\n    {\n      \"path\": \"plate_metadata_config\",\n      \"type_repr\": \"openhcs.core.config.LazyPlateMetadataConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyPlateMetadataConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for plate metadata in MetaXpress-style output.\",\n      \"authoring_value_path\": [\n        \"plate_metadata_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.PlateMetadataConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"plate_metadata_config\"\n    },\n    {\n      \"path\": \"path_planning_config\",\n      \"type_repr\": \"openhcs.core.config.LazyPathPlanningConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyPathPlanningConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for pipeline path planning and directory structure.\",\n      \"authoring_value_path\": [\n        \"path_planning_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.PathPlanningConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"path_planning_config\"\n    },\n    {\n      \"path\": \"step_well_filter_config\",\n      \"type_repr\": \"openhcs.core.config.LazyStepWellFilterConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyStepWellFilterConfig()\",\n      \"required\": false,\n      \"description\": \"Step-policy filter inheriting the broader pipeline execution domain.\",\n      \"authoring_value_path\": [\n        \"step_well_filter_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StepWellFilterConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"step_well_filter_config\"\n    },\n    {\n      \"path\": \"step_materialization_config\",\n      \"type_repr\": \"openhcs.core.config.LazyStepMaterializationConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyStepMaterializationConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for persistent copies of a step's ordinary main-flow result.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"step_materialization_config\"\n    },\n    {\n      \"path\": \"streaming_defaults\",\n      \"type_repr\": \"openhcs.core.config.LazyStreamingDefaults\",\n      \"default_repr\": \"openhcs.core.config.LazyStreamingDefaults()\",\n      \"required\": false,\n      \"description\": \"Default configuration for streaming to visualizers.\",\n      \"authoring_value_path\": [\n        \"streaming_defaults\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StreamingDefaults\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"streaming_defaults\"\n    },\n    {\n      \"path\": \"napari_streaming_config\",\n      \"type_repr\": \"openhcs.core.config.LazyNapariStreamingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyNapariStreamingConfig()\",\n      \"required\": false,\n      \"description\": \"Streaming configuration for Napari.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"napari_streaming_config\"\n    },\n    {\n      \"path\": \"fiji_streaming_config\",\n      \"type_repr\": \"openhcs.core.config.LazyFijiStreamingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyFijiStreamingConfig()\",\n      \"required\": false,\n      \"description\": \"Streaming configuration for Fiji.\",\n      \"authoring_value_path\": [\n        \"fiji_streaming_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.FijiStreamingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"fiji_streaming_config\"\n    },\n    {\n      \"path\": \"compilation_debug_config\",\n      \"type_repr\": \"openhcs.core.config.LazyCompilationDebugConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyCompilationDebugConfig()\",\n      \"required\": false,\n      \"description\": \"Compiler diagnostics inherited by PipelineConfig.\",\n      \"authoring_value_path\": [\n        \"compilation_debug_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.CompilationDebugConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"compilation_debug_config\"\n    }\n  ],\n  \"path_prefix\": null,\n  \"authoring_path\": \"ConfigPatch.values\",\n  \"registries\": [\n    {\n      \"owner_type\": \"openhcs.core.config.StreamingConfig\",\n      \"registered_types\": [\n        {\n          \"key\": \"fiji_streaming_config\",\n          \"type_repr\": \"openhcs.core.config.LazyFijiStreamingConfig\"\n        },\n        {\n          \"key\": \"napari_streaming_config\",\n          \"type_repr\": \"openhcs.core.config.LazyNapariStreamingConfig\"\n        }\n      ]\n    }\n  ],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"description\": \"Root configuration object for an OpenHCS pipeline session.\\nThis object is intended to be instantiated at application startup and treated as immutable.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"description\": \"Configuration for Napari display behavior.\",\n      \"base_types\": [\n        \"polystore.streaming.viewer_transport.ViewerDisplayConfigABC\",\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.FijiDisplayConfig\",\n      \"description\": \"Configuration for Fiji display behavior.\",\n      \"base_types\": [\n        \"polystore.streaming.viewer_transport.ViewerDisplayConfigABC\",\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.WellFilterConfig\",\n      \"description\": \"Base execution-domain filter inherited by specialized well policies.\\n\\nAt pipeline scope this constrains which wells compile and execute. Nominal\\nsubclasses reuse the same selection for their own narrower behavior, such\\nas main-flow persistence, step checkpoints, or viewer emission.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.ZarrConfig\",\n      \"description\": \"OpenHCS registration of PolyStore's Zarr configuration owner.\\n\\nOME-ZARR metadata and plate metadata are always enabled for HCS compliance.\\nShuffle filter is always enabled for Blosc compressor (ignored for others).\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\",\n        \"polystore.config.ZarrConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.VFSConfig\",\n      \"description\": \"Configuration for Virtual File System (VFS) related operations.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.DtypeConfig\",\n      \"description\": \"Configuration for dtype conversion behavior in memory type decorators.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\",\n        \"openhcs.core.runtime_plane_projection.RuntimeSliceInvariantValue\",\n        \"arraybridge.decorators.DtypeConversionConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.ProcessingConfig\",\n      \"description\": \"Independent stack-axis, post-assembly grouping, and main-flow choices.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"description\": \"Canonical pipeline declaration for selecting and naming plate sources.\\n\\nNormal plate initialization resolves these bindings over exact planes emitted\\nby the image stores. Embedded sample/well and axis coordinates are preserved;\\nan absent axis becomes ``\\\"1\\\"`` only when its store declares that axis absent\\nor singleton. Conflicting dataset, plane, or component identities fail\\nexplicitly instead of being selected by a fallback.\",\n      \"base_types\": [\n        \"openhcs.core.source_bindings.SourceBindingDeclarationsMixin\",\n        \"openhcs.core.source_bindings._SourceBindingPlanBase\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.StepSourceBindingsConfig\",\n      \"description\": \"Step-local source-binding config inheriting pipeline/plate defaults.\",\n      \"base_types\": [\n        \"openhcs.core.source_bindings.SourceBindingsConfig\",\n        \"python_introspect.enableable.Enableable\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.SequentialProcessingConfig\",\n      \"description\": \"Pipeline-level configuration for sequential processing mode.\\n\\nSequential processing changes the orchestrator's execution flow to process\\none combination at a time through all steps, reducing memory usage.\\nThis is a pipeline-level setting, not per-step.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.AnalysisConsolidationConfig\",\n      \"description\": \"Configuration for automatic analysis results consolidation.\\n\\nenabled controls whether consolidation runs after pipeline completion.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\",\n        \"python_introspect.enableable.Enableable\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.PlateMetadataConfig\",\n      \"description\": \"Configuration for plate metadata in MetaXpress-style output.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.PathPlanningConfig\",\n      \"description\": \"Configuration for pipeline path planning and directory structure.\\n\\nThis class handles path construction concerns including plate root directories,\\noutput directory suffixes, and subdirectory organization. It does not handle\\nanalysis results location, which is controlled at the pipeline level.\\n\\nIts inherited well filter selects which processed wells seed the automatic\\nmain-flow output plate. Zero keeps that automatic output runtime-only. This\\npolicy is independent of step checkpoints, typed artifact materialization,\\nand viewer streaming.\",\n      \"base_types\": [\n        \"openhcs.core.config.WellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StepWellFilterConfig\",\n      \"description\": \"Step-policy filter inheriting the broader pipeline execution domain.\",\n      \"base_types\": [\n        \"openhcs.core.config.WellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"description\": \"Configuration for persistent copies of a step's ordinary main-flow result.\\n\\nThis dataclass appears in the UI like any other configuration, allowing users\\nto set pipeline-level defaults for step materialization behavior. All step\\nmaterialization instances will inherit these defaults unless explicitly overridden.\\n\\nTyped artifact outputs remain available through runtime dataflow independently.\\nTheir persistence is owned by artifact output and compiled runtime-artifact\\nmaterialization plans rather than this main-flow checkpoint config.\\n\\nUses multiple inheritance from PathPlanningConfig and StepWellFilterConfig.\\n\\nThe 'sub_dir' field is conditionally shown in list item previews via always_viewable_fields.\\nSince this config is Enableable, the sub_dir will only appear when enabled=True.\\nThis means disabled materialization configs won't clutter the preview with sub_dir.\",\n      \"base_types\": [\n        \"python_introspect.enableable.Enableable\",\n        \"openhcs.core.config.StepWellFilterConfig\",\n        \"openhcs.core.config.PathPlanningConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StreamingDefaults\",\n      \"description\": \"Default configuration for streaming to visualizers.\\n\\nAn unset viewer well filter inherits broader well scope. A viewer override\\ncan narrow emission, but it cannot undo loading or processing already chosen\\nby the pipeline execution-domain filter.\\n\\nThe 'persistent' field is conditionally shown in list item previews via\\nalways_viewable_fields. Since this config is Enableable, the persistent field\\nwill only appear when enabled=True. This means disabled streaming configs won't\\nclutter the preview with persistence info, but enabled ones will show whether\\nthe viewer persists after pipeline completion.\",\n      \"base_types\": [\n        \"python_introspect.enableable.Enableable\",\n        \"openhcs.core.config.StepWellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"description\": \"Streaming configuration for Napari.\",\n      \"base_types\": [\n        \"openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin\",\n        \"openhcs.core.config.StreamingConfig\",\n        \"openhcs.core.config.NapariDisplayConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.FijiStreamingConfig\",\n      \"description\": \"Streaming configuration for Fiji.\",\n      \"base_types\": [\n        \"openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin\",\n        \"openhcs.core.config.StreamingConfig\",\n        \"openhcs.core.config.FijiDisplayConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.CompilationDebugConfig\",\n      \"description\": \"Compiler diagnostics inherited by PipelineConfig.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\",\n        \"python_introspect.enableable.Enableable\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"config_type":"PipelineConfig","schema_version":"openhcs.agent.v1","fields":[{"path":"materialization_results_path","type_repr":"typing.Optional[pathlib.Path]","default_repr":"openhcs.core.config.GlobalPipelineConfig.<lambda>()","required":false,"description":"Path for materialized analysis results (CSV, JSON files from artifacts).\n\n    This is a pipeline-wide setting that controls where artifact materialization\n    functions save their analysis results, regardless of which step produces them.\n\n    Can be relative to plate folder or absolute path.\n    Default: \"results\" creates a results/ folder in the plate directory.\n    Examples: \"results\", \"./analysis\", \"/data/analysis_results\", \"../shared_results\"\n\n    Note: This is separate from per-step image materialization, which is controlled\n    by the sub_dir field in each step's step_materialization_config.","authoring_value_path":["materialization_results_path"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[pathlib.Path]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_factory","nested_schema_path":null},{"path":"materialize_runtime_artifacts","type_repr":"typing.Optional[bool]","default_repr":"True","required":false,"description":"Persist runtime artifacts such as measurements/tables to configured result files.","authoring_value_path":["materialize_runtime_artifacts"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[bool]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"num_workers","type_repr":"typing.Optional[int]","default_repr":"1","required":false,"description":"Number of worker processes/threads for parallelizable tasks.","authoring_value_path":["num_workers"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[int]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"microscope","type_repr":"typing.Optional[openhcs.constants.constants.Microscope]","default_repr":"openhcs.core.config.GlobalPipelineConfig.<lambda>()","required":false,"description":"Default microscope type for auto-detection.","authoring_value_path":["microscope"],"enum_values":["auto","openhcsdata","imagexpress","opera_phenix","bbbc021","bbbc038","omero","bioformats","source_bindings"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.constants.constants.Microscope]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_factory","nested_schema_path":null},{"path":"use_threading","type_repr":"typing.Optional[bool]","default_repr":"openhcs.utils.environment.OpenHCSProcessEnvironment.use_threading_mode()","required":false,"description":"Use ThreadPoolExecutor instead of ProcessPoolExecutor for debugging. Reads from OPENHCS_USE_THREADING environment variable.","authoring_value_path":["use_threading"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[bool]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_factory","nested_schema_path":null},{"path":"multiprocessing_start_method","type_repr":"typing.Optional[openhcs.core.config.MultiprocessingStartMethod]","default_repr":"openhcs.core.config.GlobalPipelineConfig.<lambda>()","required":false,"description":"Process start method for multiprocessing workers. SPAWN is CUDA-safe; FORK is CPU-only.","authoring_value_path":["multiprocessing_start_method"],"enum_values":["spawn","fork","forkserver"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.MultiprocessingStartMethod]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_factory","nested_schema_path":null},{"path":"auto_add_output_plate_to_plate_manager","type_repr":"typing.Optional[bool]","default_repr":"False","required":false,"description":"If True, when a plate run completes successfully, the computed output plate root\n    (from path planning) is automatically added to Plate Manager as a new orchestrator\n    if it is not already present.","authoring_value_path":["auto_add_output_plate_to_plate_manager"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[bool]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_display_config","type_repr":"openhcs.core.config.LazyNapariDisplayConfig","default_repr":"openhcs.core.config.LazyNapariDisplayConfig()","required":false,"description":"Configuration for Napari display behavior.","authoring_value_path":["napari_display_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.NapariDisplayConfig","ui_hidden":true,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"napari_display_config"},{"path":"fiji_display_config","type_repr":"openhcs.core.config.LazyFijiDisplayConfig","default_repr":"openhcs.core.config.LazyFijiDisplayConfig()","required":false,"description":"Configuration for Fiji display behavior.","authoring_value_path":["fiji_display_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.FijiDisplayConfig","ui_hidden":true,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"fiji_display_config"},{"path":"well_filter_config","type_repr":"openhcs.core.config.LazyWellFilterConfig","default_repr":"openhcs.core.config.LazyWellFilterConfig()","required":false,"description":"Base execution-domain filter inherited by specialized well policies.","authoring_value_path":["well_filter_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.WellFilterConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"well_filter_config"},{"path":"zarr_config","type_repr":"openhcs.core.config.LazyZarrConfig","default_repr":"openhcs.core.config.LazyZarrConfig()","required":false,"description":"OpenHCS registration of PolyStore's Zarr configuration owner.","authoring_value_path":["zarr_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.ZarrConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"zarr_config"},{"path":"vfs_config","type_repr":"openhcs.core.config.LazyVFSConfig","default_repr":"openhcs.core.config.LazyVFSConfig()","required":false,"description":"Configuration for Virtual File System (VFS) related operations.","authoring_value_path":["vfs_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.VFSConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"vfs_config"},{"path":"dtype_config","type_repr":"openhcs.core.config.LazyDtypeConfig","default_repr":"openhcs.core.config.LazyDtypeConfig()","required":false,"description":"Configuration for dtype conversion behavior in memory type decorators.","authoring_value_path":["dtype_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.DtypeConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"dtype_config"},{"path":"processing_config","type_repr":"openhcs.core.config.LazyProcessingConfig","default_repr":"openhcs.core.config.LazyProcessingConfig()","required":false,"description":"Independent stack-axis, post-assembly grouping, and main-flow choices.","authoring_value_path":["processing_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.ProcessingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"processing_config"},{"path":"source_bindings_config","type_repr":"openhcs.core.source_bindings.LazySourceBindingsConfig","default_repr":"openhcs.core.source_bindings.LazySourceBindingsConfig()","required":false,"description":"Canonical pipeline declaration for selecting and naming plate sources.","authoring_value_path":["source_bindings_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceBindingsConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"source_bindings_config"},{"path":"step_source_bindings_config","type_repr":"openhcs.core.source_bindings.LazyStepSourceBindingsConfig","default_repr":"openhcs.core.source_bindings.LazyStepSourceBindingsConfig()","required":false,"description":"Step-local source-binding config inheriting pipeline/plate defaults.","authoring_value_path":["step_source_bindings_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.StepSourceBindingsConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"step_source_bindings_config"},{"path":"sequential_processing_config","type_repr":"openhcs.core.config.LazySequentialProcessingConfig","default_repr":"openhcs.core.config.LazySequentialProcessingConfig()","required":false,"description":"Pipeline-level configuration for sequential processing mode.","authoring_value_path":["sequential_processing_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.SequentialProcessingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"sequential_processing_config"},{"path":"analysis_consolidation_config","type_repr":"openhcs.core.config.LazyAnalysisConsolidationConfig","default_repr":"openhcs.core.config.LazyAnalysisConsolidationConfig()","required":false,"description":"Configuration for automatic analysis results consolidation.","authoring_value_path":["analysis_consolidation_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.AnalysisConsolidationConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"analysis_consolidation_config"},{"path":"plate_metadata_config","type_repr":"openhcs.core.config.LazyPlateMetadataConfig","default_repr":"openhcs.core.config.LazyPlateMetadataConfig()","required":false,"description":"Configuration for plate metadata in MetaXpress-style output.","authoring_value_path":["plate_metadata_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.PlateMetadataConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"plate_metadata_config"},{"path":"path_planning_config","type_repr":"openhcs.core.config.LazyPathPlanningConfig","default_repr":"openhcs.core.config.LazyPathPlanningConfig()","required":false,"description":"Configuration for pipeline path planning and directory structure.","authoring_value_path":["path_planning_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.PathPlanningConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"path_planning_config"},{"path":"step_well_filter_config","type_repr":"openhcs.core.config.LazyStepWellFilterConfig","default_repr":"openhcs.core.config.LazyStepWellFilterConfig()","required":false,"description":"Step-policy filter inheriting the broader pipeline execution domain.","authoring_value_path":["step_well_filter_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StepWellFilterConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"step_well_filter_config"},{"path":"step_materialization_config","type_repr":"openhcs.core.config.LazyStepMaterializationConfig","default_repr":"openhcs.core.config.LazyStepMaterializationConfig()","required":false,"description":"Configuration for persistent copies of a step's ordinary main-flow result.","authoring_value_path":["step_materialization_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StepMaterializationConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"step_materialization_config"},{"path":"streaming_defaults","type_repr":"openhcs.core.config.LazyStreamingDefaults","default_repr":"openhcs.core.config.LazyStreamingDefaults()","required":false,"description":"Default configuration for streaming to visualizers.","authoring_value_path":["streaming_defaults"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StreamingDefaults","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"streaming_defaults"},{"path":"napari_streaming_config","type_repr":"openhcs.core.config.LazyNapariStreamingConfig","default_repr":"openhcs.core.config.LazyNapariStreamingConfig()","required":false,"description":"Streaming configuration for Napari.","authoring_value_path":["napari_streaming_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.NapariStreamingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"napari_streaming_config"},{"path":"fiji_streaming_config","type_repr":"openhcs.core.config.LazyFijiStreamingConfig","default_repr":"openhcs.core.config.LazyFijiStreamingConfig()","required":false,"description":"Streaming configuration for Fiji.","authoring_value_path":["fiji_streaming_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.FijiStreamingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"fiji_streaming_config"},{"path":"compilation_debug_config","type_repr":"openhcs.core.config.LazyCompilationDebugConfig","default_repr":"openhcs.core.config.LazyCompilationDebugConfig()","required":false,"description":"Compiler diagnostics inherited by PipelineConfig.","authoring_value_path":["compilation_debug_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.CompilationDebugConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"compilation_debug_config"}],"path_prefix":null,"authoring_path":"ConfigPatch.values","registries":[{"owner_type":"openhcs.core.config.StreamingConfig","registered_types":[{"key":"fiji_streaming_config","type_repr":"openhcs.core.config.LazyFijiStreamingConfig"},{"key":"napari_streaming_config","type_repr":"openhcs.core.config.LazyNapariStreamingConfig"}]}],"types":[{"type_repr":"openhcs.core.config.GlobalPipelineConfig","description":"Root configuration object for an OpenHCS pipeline session.\nThis object is intended to be instantiated at application startup and treated as immutable.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.NapariDisplayConfig","description":"Configuration for Napari display behavior.","base_types":["polystore.streaming.viewer_transport.ViewerDisplayConfigABC","python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.FijiDisplayConfig","description":"Configuration for Fiji display behavior.","base_types":["polystore.streaming.viewer_transport.ViewerDisplayConfigABC","python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.WellFilterConfig","description":"Base execution-domain filter inherited by specialized well policies.\n\nAt pipeline scope this constrains which wells compile and execute. Nominal\nsubclasses reuse the same selection for their own narrower behavior, such\nas main-flow persistence, step checkpoints, or viewer emission.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.ZarrConfig","description":"OpenHCS registration of PolyStore's Zarr configuration owner.\n\nOME-ZARR metadata and plate metadata are always enabled for HCS compliance.\nShuffle filter is always enabled for Blosc compressor (ignored for others).","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin","polystore.config.ZarrConfig"]},{"type_repr":"openhcs.core.config.VFSConfig","description":"Configuration for Virtual File System (VFS) related operations.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.DtypeConfig","description":"Configuration for dtype conversion behavior in memory type decorators.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin","openhcs.core.runtime_plane_projection.RuntimeSliceInvariantValue","arraybridge.decorators.DtypeConversionConfig"]},{"type_repr":"openhcs.core.config.ProcessingConfig","description":"Independent stack-axis, post-assembly grouping, and main-flow choices.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.source_bindings.SourceBindingsConfig","description":"Canonical pipeline declaration for selecting and naming plate sources.\n\nNormal plate initialization resolves these bindings over exact planes emitted\nby the image stores. Embedded sample/well and axis coordinates are preserved;\nan absent axis becomes ``\"1\"`` only when its store declares that axis absent\nor singleton. Conflicting dataset, plane, or component identities fail\nexplicitly instead of being selected by a fallback.","base_types":["openhcs.core.source_bindings.SourceBindingDeclarationsMixin","openhcs.core.source_bindings._SourceBindingPlanBase"]},{"type_repr":"openhcs.core.source_bindings.StepSourceBindingsConfig","description":"Step-local source-binding config inheriting pipeline/plate defaults.","base_types":["openhcs.core.source_bindings.SourceBindingsConfig","python_introspect.enableable.Enableable"]},{"type_repr":"openhcs.core.config.SequentialProcessingConfig","description":"Pipeline-level configuration for sequential processing mode.\n\nSequential processing changes the orchestrator's execution flow to process\none combination at a time through all steps, reducing memory usage.\nThis is a pipeline-level setting, not per-step.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.AnalysisConsolidationConfig","description":"Configuration for automatic analysis results consolidation.\n\nenabled controls whether consolidation runs after pipeline completion.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin","python_introspect.enableable.Enableable"]},{"type_repr":"openhcs.core.config.PlateMetadataConfig","description":"Configuration for plate metadata in MetaXpress-style output.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.PathPlanningConfig","description":"Configuration for pipeline path planning and directory structure.\n\nThis class handles path construction concerns including plate root directories,\noutput directory suffixes, and subdirectory organization. It does not handle\nanalysis results location, which is controlled at the pipeline level.\n\nIts inherited well filter selects which processed wells seed the automatic\nmain-flow output plate. Zero keeps that automatic output runtime-only. This\npolicy is independent of step checkpoints, typed artifact materialization,\nand viewer streaming.","base_types":["openhcs.core.config.WellFilterConfig"]},{"type_repr":"openhcs.core.config.StepWellFilterConfig","description":"Step-policy filter inheriting the broader pipeline execution domain.","base_types":["openhcs.core.config.WellFilterConfig"]},{"type_repr":"openhcs.core.config.StepMaterializationConfig","description":"Configuration for persistent copies of a step's ordinary main-flow result.\n\nThis dataclass appears in the UI like any other configuration, allowing users\nto set pipeline-level defaults for step materialization behavior. All step\nmaterialization instances will inherit these defaults unless explicitly overridden.\n\nTyped artifact outputs remain available through runtime dataflow independently.\nTheir persistence is owned by artifact output and compiled runtime-artifact\nmaterialization plans rather than this main-flow checkpoint config.\n\nUses multiple inheritance from PathPlanningConfig and StepWellFilterConfig.\n\nThe 'sub_dir' field is conditionally shown in list item previews via always_viewable_fields.\nSince this config is Enableable, the sub_dir will only appear when enabled=True.\nThis means disabled materialization configs won't clutter the preview with sub_dir.","base_types":["python_introspect.enableable.Enableable","openhcs.core.config.StepWellFilterConfig","openhcs.core.config.PathPlanningConfig"]},{"type_repr":"openhcs.core.config.StreamingDefaults","description":"Default configuration for streaming to visualizers.\n\nAn unset viewer well filter inherits broader well scope. A viewer override\ncan narrow emission, but it cannot undo loading or processing already chosen\nby the pipeline execution-domain filter.\n\nThe 'persistent' field is conditionally shown in list item previews via\nalways_viewable_fields. Since this config is Enableable, the persistent field\nwill only appear when enabled=True. This means disabled streaming configs won't\nclutter the preview with persistence info, but enabled ones will show whether\nthe viewer persists after pipeline completion.","base_types":["python_introspect.enableable.Enableable","openhcs.core.config.StepWellFilterConfig"]},{"type_repr":"openhcs.core.config.NapariStreamingConfig","description":"Streaming configuration for Napari.","base_types":["openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin","openhcs.core.config.StreamingConfig","openhcs.core.config.NapariDisplayConfig"]},{"type_repr":"openhcs.core.config.FijiStreamingConfig","description":"Streaming configuration for Fiji.","base_types":["openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin","openhcs.core.config.StreamingConfig","openhcs.core.config.FijiDisplayConfig"]},{"type_repr":"openhcs.core.config.CompilationDebugConfig","description":"Compiler diagnostics inherited by PipelineConfig.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin","python_introspect.enableable.Enableable"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_41","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazySourceBindingsConfig"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_41","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazySourceBindingsConfig"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_describe_config_schema\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_describe_config_schema","errors":[{"code":"mcp_tool_failed","message":"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_42","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"NamedSourceBinding"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_42","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"NamedSourceBinding"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_describe_config_schema\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_describe_config_schema","errors":[{"code":"mcp_tool_failed","message":"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_43","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"FunctionStep"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_43","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"FunctionStep"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"FunctionStep\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"dtype_config\",\n      \"type_repr\": \"openhcs.core.config.LazyDtypeConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyDtypeConfig()\",\n      \"required\": false,\n      \"description\": \"LazyDtypeConfig for dtype conversion behavior in memory type decorators.\",\n      \"authoring_value_path\": [\n        \"dtype_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.DtypeConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"dtype_config\"\n    },\n    {\n      \"path\": \"processing_config\",\n      \"type_repr\": \"openhcs.core.config.LazyProcessingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyProcessingConfig()\",\n      \"required\": false,\n      \"description\": \"LazyProcessingConfig for variable_components, group_by, and input_source.\\nPipeline-level sequential processing is owned separately by SequentialProcessingConfig.\",\n      \"authoring_value_path\": [\n        \"processing_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.ProcessingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"processing_config\"\n    },\n    {\n      \"path\": \"source_bindings\",\n      \"type_repr\": \"openhcs.core.source_bindings.LazyStepSourceBindingsConfig\",\n      \"default_repr\": \"openhcs.core.source_bindings.LazyStepSourceBindingsConfig()\",\n      \"required\": false,\n      \"description\": \"LazyStepSourceBindingsConfig for named semantic input bindings.\",\n      \"authoring_value_path\": [\n        \"source_bindings\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.StepSourceBindingsConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"source_bindings\"\n    },\n    {\n      \"path\": \"step_well_filter_config\",\n      \"type_repr\": \"openhcs.core.config.LazyStepWellFilterConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyStepWellFilterConfig()\",\n      \"required\": false,\n      \"description\": \"LazyStepWellFilterConfig for well filtering.\",\n      \"authoring_value_path\": [\n        \"step_well_filter_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StepWellFilterConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"step_well_filter_config\"\n    },\n    {\n      \"path\": \"step_materialization_config\",\n      \"type_repr\": \"openhcs.core.config.LazyStepMaterializationConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyStepMaterializationConfig()\",\n      \"required\": false,\n      \"description\": \"Optional LazyStepMaterializationConfig for per-step materialized output.\\nWhen provided, enables saving materialized copy of step output\\nto custom location in addition to normal memory backend processing.\\nUse LazyStepMaterializationConfig() for safe defaults that prevent path collisions.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"step_materialization_config\"\n    },\n    {\n      \"path\": \"streaming_defaults\",\n      \"type_repr\": \"openhcs.core.config.LazyStreamingDefaults\",\n      \"default_repr\": \"openhcs.core.config.LazyStreamingDefaults()\",\n      \"required\": false,\n      \"description\": \"LazyStreamingDefaults for shared viewer enablement, well filtering,\\nbatching, persistence, host, and transport behavior.\",\n      \"authoring_value_path\": [\n        \"streaming_defaults\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StreamingDefaults\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"streaming_defaults\"\n    },\n    {\n      \"path\": \"napari_streaming_config\",\n      \"type_repr\": \"openhcs.core.config.LazyNapariStreamingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyNapariStreamingConfig()\",\n      \"required\": false,\n      \"description\": \"Optional LazyNapariStreamingConfig for napari streaming.\\nWhen provided, enables real-time streaming to napari viewer.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"napari_streaming_config\"\n    },\n    {\n      \"path\": \"fiji_streaming_config\",\n      \"type_repr\": \"openhcs.core.config.LazyFijiStreamingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyFijiStreamingConfig()\",\n      \"required\": false,\n      \"description\": \"Optional LazyFijiStreamingConfig for Fiji streaming.\\nWhen provided, enables real-time streaming to Fiji viewer.\",\n      \"authoring_value_path\": [\n        \"fiji_streaming_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.FijiStreamingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"default_origin\": \"parameter_default\",\n      \"nested_schema_path\": \"fiji_streaming_config\"\n    }\n  ],\n  \"path_prefix\": null,\n  \"authoring_path\": \"FunctionStepAddRequest.step_config_overrides\",\n  \"registries\": [\n    {\n      \"owner_type\": \"openhcs.core.config.StreamingConfig\",\n      \"registered_types\": [\n        {\n          \"key\": \"fiji_streaming_config\",\n          \"type_repr\": \"openhcs.core.config.LazyFijiStreamingConfig\"\n        },\n        {\n          \"key\": \"napari_streaming_config\",\n          \"type_repr\": \"openhcs.core.config.LazyNapariStreamingConfig\"\n        }\n      ]\n    }\n  ],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.steps.abstract.AbstractStep\",\n      \"description\": \"Abstract base class for all steps in the OpenHCS pipeline.\\n\\nThis class defines the interface that all steps must implement.\\nSteps are stateful during pipeline definition and compilation (holding attributes\\nlike name, input/output memory types, etc.). After compilation, these attributes\\nare stripped by the StepAttributeStripper, and the step instances become\\nstateless shells. During execution, steps operate solely based on the\\nProcessingContext (which is frozen) and their specific plan within\\ncontext.step_plans.\\n\\nInput Source Control:\\n\\n``processing_config.input_source`` controls the ordinary main-flow source:\\n\\n- InputSource.PREVIOUS_STEP (default): Standard pipeline chaining where the step\\n  consumes the previous step's main-flow result. This maintains normal\\n  sequential data flow.\\n\\n- InputSource.PIPELINE_START: The step consumes pipeline-start main flow,\\n  bypassing previous step results. This replaces the @chain_breaker decorator\\n  functionality and is used for position generation and quality control.\\n\\nSeparately named inputs are callable artifact declarations satisfied through\\nsource bindings or prior artifact producers; they are not another\\n``InputSource`` value.\\n\\nUsage Examples:\\n\\nStandard processing step (default):\\n```python\\nstep = FunctionStep(\\n    func=my_processing_function,\\n    name=\\\"process_images\\\",\\n    processing_config=LazyProcessingConfig(\\n        input_source=InputSource.PREVIOUS_STEP,\\n    ),\\n)\\n```\\n\\nPosition generation accessing original images:\\n```python\\nstep = FunctionStep(\\n    func=ashlar_compute_tile_positions_gpu,\\n    name=\\\"compute_positions\\\",\\n    processing_config=LazyProcessingConfig(\\n        input_source=InputSource.PIPELINE_START,\\n    ),\\n)\\n```\",\n      \"base_types\": [\n        \"abc.ABC\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.DtypeConfig\",\n      \"description\": \"Configuration for dtype conversion behavior in memory type decorators.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\",\n        \"openhcs.core.runtime_plane_projection.RuntimeSliceInvariantValue\",\n        \"arraybridge.decorators.DtypeConversionConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.ProcessingConfig\",\n      \"description\": \"Independent stack-axis, post-assembly grouping, and main-flow choices.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.StepSourceBindingsConfig\",\n      \"description\": \"Step-local source-binding config inheriting pipeline/plate defaults.\",\n      \"base_types\": [\n        \"openhcs.core.source_bindings.SourceBindingsConfig\",\n        \"python_introspect.enableable.Enableable\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StepWellFilterConfig\",\n      \"description\": \"Step-policy filter inheriting the broader pipeline execution domain.\",\n      \"base_types\": [\n        \"openhcs.core.config.WellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"description\": \"Configuration for persistent copies of a step's ordinary main-flow result.\\n\\nThis dataclass appears in the UI like any other configuration, allowing users\\nto set pipeline-level defaults for step materialization behavior. All step\\nmaterialization instances will inherit these defaults unless explicitly overridden.\\n\\nTyped artifact outputs remain available through runtime dataflow independently.\\nTheir persistence is owned by artifact output and compiled runtime-artifact\\nmaterialization plans rather than this main-flow checkpoint config.\\n\\nUses multiple inheritance from PathPlanningConfig and StepWellFilterConfig.\\n\\nThe 'sub_dir' field is conditionally shown in list item previews via always_viewable_fields.\\nSince this config is Enableable, the sub_dir will only appear when enabled=True.\\nThis means disabled materialization configs won't clutter the preview with sub_dir.\",\n      \"base_types\": [\n        \"python_introspect.enableable.Enableable\",\n        \"openhcs.core.config.StepWellFilterConfig\",\n        \"openhcs.core.config.PathPlanningConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StreamingDefaults\",\n      \"description\": \"Default configuration for streaming to visualizers.\\n\\nAn unset viewer well filter inherits broader well scope. A viewer override\\ncan narrow emission, but it cannot undo loading or processing already chosen\\nby the pipeline execution-domain filter.\\n\\nThe 'persistent' field is conditionally shown in list item previews via\\nalways_viewable_fields. Since this config is Enableable, the persistent field\\nwill only appear when enabled=True. This means disabled streaming configs won't\\nclutter the preview with persistence info, but enabled ones will show whether\\nthe viewer persists after pipeline completion.\",\n      \"base_types\": [\n        \"python_introspect.enableable.Enableable\",\n        \"openhcs.core.config.StepWellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"description\": \"Streaming configuration for Napari.\",\n      \"base_types\": [\n        \"openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin\",\n        \"openhcs.core.config.StreamingConfig\",\n        \"openhcs.core.config.NapariDisplayConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.FijiStreamingConfig\",\n      \"description\": \"Streaming configuration for Fiji.\",\n      \"base_types\": [\n        \"openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin\",\n        \"openhcs.core.config.StreamingConfig\",\n        \"openhcs.core.config.FijiDisplayConfig\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"config_type":"FunctionStep","schema_version":"openhcs.agent.v1","fields":[{"path":"dtype_config","type_repr":"openhcs.core.config.LazyDtypeConfig","default_repr":"openhcs.core.config.LazyDtypeConfig()","required":false,"description":"LazyDtypeConfig for dtype conversion behavior in memory type decorators.","authoring_value_path":["dtype_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.DtypeConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"dtype_config"},{"path":"processing_config","type_repr":"openhcs.core.config.LazyProcessingConfig","default_repr":"openhcs.core.config.LazyProcessingConfig()","required":false,"description":"LazyProcessingConfig for variable_components, group_by, and input_source.\nPipeline-level sequential processing is owned separately by SequentialProcessingConfig.","authoring_value_path":["processing_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.ProcessingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"processing_config"},{"path":"source_bindings","type_repr":"openhcs.core.source_bindings.LazyStepSourceBindingsConfig","default_repr":"openhcs.core.source_bindings.LazyStepSourceBindingsConfig()","required":false,"description":"LazyStepSourceBindingsConfig for named semantic input bindings.","authoring_value_path":["source_bindings"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.StepSourceBindingsConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"source_bindings"},{"path":"step_well_filter_config","type_repr":"openhcs.core.config.LazyStepWellFilterConfig","default_repr":"openhcs.core.config.LazyStepWellFilterConfig()","required":false,"description":"LazyStepWellFilterConfig for well filtering.","authoring_value_path":["step_well_filter_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StepWellFilterConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"step_well_filter_config"},{"path":"step_materialization_config","type_repr":"openhcs.core.config.LazyStepMaterializationConfig","default_repr":"openhcs.core.config.LazyStepMaterializationConfig()","required":false,"description":"Optional LazyStepMaterializationConfig for per-step materialized output.\nWhen provided, enables saving materialized copy of step output\nto custom location in addition to normal memory backend processing.\nUse LazyStepMaterializationConfig() for safe defaults that prevent path collisions.","authoring_value_path":["step_materialization_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StepMaterializationConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"step_materialization_config"},{"path":"streaming_defaults","type_repr":"openhcs.core.config.LazyStreamingDefaults","default_repr":"openhcs.core.config.LazyStreamingDefaults()","required":false,"description":"LazyStreamingDefaults for shared viewer enablement, well filtering,\nbatching, persistence, host, and transport behavior.","authoring_value_path":["streaming_defaults"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StreamingDefaults","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"streaming_defaults"},{"path":"napari_streaming_config","type_repr":"openhcs.core.config.LazyNapariStreamingConfig","default_repr":"openhcs.core.config.LazyNapariStreamingConfig()","required":false,"description":"Optional LazyNapariStreamingConfig for napari streaming.\nWhen provided, enables real-time streaming to napari viewer.","authoring_value_path":["napari_streaming_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.NapariStreamingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"napari_streaming_config"},{"path":"fiji_streaming_config","type_repr":"openhcs.core.config.LazyFijiStreamingConfig","default_repr":"openhcs.core.config.LazyFijiStreamingConfig()","required":false,"description":"Optional LazyFijiStreamingConfig for Fiji streaming.\nWhen provided, enables real-time streaming to Fiji viewer.","authoring_value_path":["fiji_streaming_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.FijiStreamingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.steps.abstract.AbstractStep","default_origin":"parameter_default","nested_schema_path":"fiji_streaming_config"}],"path_prefix":null,"authoring_path":"FunctionStepAddRequest.step_config_overrides","registries":[{"owner_type":"openhcs.core.config.StreamingConfig","registered_types":[{"key":"fiji_streaming_config","type_repr":"openhcs.core.config.LazyFijiStreamingConfig"},{"key":"napari_streaming_config","type_repr":"openhcs.core.config.LazyNapariStreamingConfig"}]}],"types":[{"type_repr":"openhcs.core.steps.abstract.AbstractStep","description":"Abstract base class for all steps in the OpenHCS pipeline.\n\nThis class defines the interface that all steps must implement.\nSteps are stateful during pipeline definition and compilation (holding attributes\nlike name, input/output memory types, etc.). After compilation, these attributes\nare stripped by the StepAttributeStripper, and the step instances become\nstateless shells. During execution, steps operate solely based on the\nProcessingContext (which is frozen) and their specific plan within\ncontext.step_plans.\n\nInput Source Control:\n\n``processing_config.input_source`` controls the ordinary main-flow source:\n\n- InputSource.PREVIOUS_STEP (default): Standard pipeline chaining where the step\n  consumes the previous step's main-flow result. This maintains normal\n  sequential data flow.\n\n- InputSource.PIPELINE_START: The step consumes pipeline-start main flow,\n  bypassing previous step results. This replaces the @chain_breaker decorator\n  functionality and is used for position generation and quality control.\n\nSeparately named inputs are callable artifact declarations satisfied through\nsource bindings or prior artifact producers; they are not another\n``InputSource`` value.\n\nUsage Examples:\n\nStandard processing step (default):\n```python\nstep = FunctionStep(\n    func=my_processing_function,\n    name=\"process_images\",\n    processing_config=LazyProcessingConfig(\n        input_source=InputSource.PREVIOUS_STEP,\n    ),\n)\n```\n\nPosition generation accessing original images:\n```python\nstep = FunctionStep(\n    func=ashlar_compute_tile_positions_gpu,\n    name=\"compute_positions\",\n    processing_config=LazyProcessingConfig(\n        input_source=InputSource.PIPELINE_START,\n    ),\n)\n```","base_types":["abc.ABC"]},{"type_repr":"openhcs.core.config.DtypeConfig","description":"Configuration for dtype conversion behavior in memory type decorators.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin","openhcs.core.runtime_plane_projection.RuntimeSliceInvariantValue","arraybridge.decorators.DtypeConversionConfig"]},{"type_repr":"openhcs.core.config.ProcessingConfig","description":"Independent stack-axis, post-assembly grouping, and main-flow choices.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.source_bindings.StepSourceBindingsConfig","description":"Step-local source-binding config inheriting pipeline/plate defaults.","base_types":["openhcs.core.source_bindings.SourceBindingsConfig","python_introspect.enableable.Enableable"]},{"type_repr":"openhcs.core.config.StepWellFilterConfig","description":"Step-policy filter inheriting the broader pipeline execution domain.","base_types":["openhcs.core.config.WellFilterConfig"]},{"type_repr":"openhcs.core.config.StepMaterializationConfig","description":"Configuration for persistent copies of a step's ordinary main-flow result.\n\nThis dataclass appears in the UI like any other configuration, allowing users\nto set pipeline-level defaults for step materialization behavior. All step\nmaterialization instances will inherit these defaults unless explicitly overridden.\n\nTyped artifact outputs remain available through runtime dataflow independently.\nTheir persistence is owned by artifact output and compiled runtime-artifact\nmaterialization plans rather than this main-flow checkpoint config.\n\nUses multiple inheritance from PathPlanningConfig and StepWellFilterConfig.\n\nThe 'sub_dir' field is conditionally shown in list item previews via always_viewable_fields.\nSince this config is Enableable, the sub_dir will only appear when enabled=True.\nThis means disabled materialization configs won't clutter the preview with sub_dir.","base_types":["python_introspect.enableable.Enableable","openhcs.core.config.StepWellFilterConfig","openhcs.core.config.PathPlanningConfig"]},{"type_repr":"openhcs.core.config.StreamingDefaults","description":"Default configuration for streaming to visualizers.\n\nAn unset viewer well filter inherits broader well scope. A viewer override\ncan narrow emission, but it cannot undo loading or processing already chosen\nby the pipeline execution-domain filter.\n\nThe 'persistent' field is conditionally shown in list item previews via\nalways_viewable_fields. Since this config is Enableable, the persistent field\nwill only appear when enabled=True. This means disabled streaming configs won't\nclutter the preview with persistence info, but enabled ones will show whether\nthe viewer persists after pipeline completion.","base_types":["python_introspect.enableable.Enableable","openhcs.core.config.StepWellFilterConfig"]},{"type_repr":"openhcs.core.config.NapariStreamingConfig","description":"Streaming configuration for Napari.","base_types":["openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin","openhcs.core.config.StreamingConfig","openhcs.core.config.NapariDisplayConfig"]},{"type_repr":"openhcs.core.config.FijiStreamingConfig","description":"Streaming configuration for Fiji.","base_types":["openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin","openhcs.core.config.StreamingConfig","openhcs.core.config.FijiDisplayConfig"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_44","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazyNapariStreamingConfig"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_44","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazyNapariStreamingConfig"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_describe_config_schema\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_describe_config_schema","errors":[{"code":"mcp_tool_failed","message":"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_45","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazyPathPlanningConfig"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_45","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazyPathPlanningConfig"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_describe_config_schema\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_describe_config_schema","errors":[{"code":"mcp_tool_failed","message":"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_46","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazyStepMaterializationConfig"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_46","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"LazyStepMaterializationConfig"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_describe_config_schema\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_describe_config_schema","errors":[{"code":"mcp_tool_failed","message":"config_type must select a declared schema: GlobalPipelineConfig, globalpipelineconfig, global, PipelineConfig, pipelineconfig, pipeline, FunctionStep, functionstep, step, function_step","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_47","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"source_bindings_config"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_47","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"source_bindings_config"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"PipelineConfig\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"source_bindings_config\",\n      \"type_repr\": \"openhcs.core.source_bindings.LazySourceBindingsConfig\",\n      \"default_repr\": \"openhcs.core.source_bindings.LazySourceBindingsConfig()\",\n      \"required\": false,\n      \"description\": \"Canonical pipeline declaration for selecting and naming plate sources.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"source_bindings_config\"\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.MetadataExtractionRule, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Regex/metadata extraction rules that add semantic fields for matching sources.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.MetadataExtractionRule, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings._SourceBindingPlanBase\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.metadata_rules\"\n    },\n    {\n      \"path\": \"source_bindings_config.match_plan\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchPlan | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Cross-alias pairing plan for assembling selected sources into source sets.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"match_plan\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchPlan | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings._SourceBindingPlanBase\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.match_plan\"\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_fields\",\n      \"type_repr\": \"tuple[openhcs.core.runtime_tabular_values.FieldSpec, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Exact scalar schema for source-literal metadata fields.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_fields\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.runtime_tabular_values.FieldSpec, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings._SourceBindingPlanBase\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.metadata_fields\"\n    },\n    {\n      \"path\": \"source_bindings_config.source_filters\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Filters limiting the source universe before named bindings are resolved.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_filters\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.source_filters\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.NamedSourceBinding, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Named semantic source bindings available to pipelines and inherited by steps.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.NamedSourceBinding, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings\"\n    },\n    {\n      \"path\": \"source_bindings_config.image_plane_sources\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.ImagePlaneSource, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Exact image-plane source records available for source-binding resolution.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"image_plane_sources\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.ImagePlaneSource, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.image_plane_sources\"\n    },\n    {\n      \"path\": \"source_bindings_config.imported_metadata_tables\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.ImportedMetadataTable, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"External metadata tables joined to source records before matching.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"imported_metadata_tables\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.ImportedMetadataTable, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.imported_metadata_tables\"\n    },\n    {\n      \"path\": \"source_bindings_config.source_stack_components\",\n      \"type_repr\": \"tuple[openhcs.constants.constants.AllComponents, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Ordered plate components that form one logical source image stack.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_stack_components\"\n      ],\n      \"enum_values\": [\n        \"site\",\n        \"channel\",\n        \"z_index\",\n        \"timepoint\",\n        \"well\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.constants.constants.AllComponents, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.grouping_metadata_fields\",\n      \"type_repr\": \"tuple[str, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Metadata field names used to partition matched sources into execution groups.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"grouping_metadata_fields\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[str, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.source_voxel_spacing\",\n      \"type_repr\": \"openhcs.core.source_metadata.SourceVoxelSpacing\",\n      \"default_repr\": \"openhcs.core.source_metadata.SourceVoxelSpacing()\",\n      \"required\": false,\n      \"description\": \"Physical source-pixel spacing in z, y, x order; omit values when unknown.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_voxel_spacing\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_metadata.SourceVoxelSpacing\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"source_bindings_config.source_voxel_spacing\"\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].source\",\n      \"type_repr\": \"openhcs.core.source_bindings.MetadataSource\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"source\"\n      ],\n      \"enum_values\": [\n        \"file_name\",\n        \"folder_name\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.MetadataSource\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.MetadataExtractionRule\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].pattern\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"pattern\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.MetadataExtractionRule\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].filters\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"filters\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.MetadataExtractionRule\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.metadata_rules[].filters\"\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].filters[].subject\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterSubject\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"filters\",\n        \"[]\",\n        \"subject\"\n      ],\n      \"enum_values\": [\n        \"file\",\n        \"directory\",\n        \"extension\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceFilterSubject\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].filters[].match_type\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterMatchType\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"filters\",\n        \"[]\",\n        \"match_type\"\n      ],\n      \"enum_values\": [\n        \"contains\",\n        \"contains_regex\",\n        \"does_not_contain\",\n        \"does_not_contain_regex\",\n        \"equals\",\n        \"does_not_equal\",\n        \"starts_with\",\n        \"does_not_start_with\",\n        \"ends_with\",\n        \"does_not_end_with\",\n        \"is_image\",\n        \"is_tif\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceFilterMatchType\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].filters[].value\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"filters\",\n        \"[]\",\n        \"value\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_rules[].filters[].any_group\",\n      \"type_repr\": \"int | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_rules\",\n        \"[]\",\n        \"filters\",\n        \"[]\",\n        \"any_group\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"int | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.match_plan.method\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchMethod\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"match_plan\",\n        \"method\"\n      ],\n      \"enum_values\": [\n        \"metadata\",\n        \"order\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchMethod\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingMatchPlan\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.match_plan.dimensions\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.SourceBindingMatchDimension, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"match_plan\",\n        \"dimensions\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.SourceBindingMatchDimension, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingMatchPlan\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.match_plan.dimensions\"\n    },\n    {\n      \"path\": \"source_bindings_config.match_plan.dimensions[].fields\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.SourceBindingMatchField, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"match_plan\",\n        \"dimensions\",\n        \"[]\",\n        \"fields\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.SourceBindingMatchField, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingMatchDimension\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.match_plan.dimensions[].fields\"\n    },\n    {\n      \"path\": \"source_bindings_config.match_plan.dimensions[].fields[].alias\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"match_plan\",\n        \"dimensions\",\n        \"[]\",\n        \"fields\",\n        \"[]\",\n        \"alias\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingMatchField\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.match_plan.dimensions[].fields[].metadata_field\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"match_plan\",\n        \"dimensions\",\n        \"[]\",\n        \"fields\",\n        \"[]\",\n        \"metadata_field\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceBindingMatchField\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_fields[].name\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_fields\",\n        \"[]\",\n        \"name\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.runtime_tabular_values.FieldSpec\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_fields[].dtype\",\n      \"type_repr\": \"type[object] | str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_fields\",\n        \"[]\",\n        \"dtype\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"type[object] | str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.runtime_tabular_values.FieldSpec\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.metadata_fields[].required\",\n      \"type_repr\": \"builtins.bool\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"metadata_fields\",\n        \"[]\",\n        \"required\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.bool\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.runtime_tabular_values.FieldSpec\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.source_filters[].subject\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterSubject\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_filters\",\n        \"[]\",\n        \"subject\"\n      ],\n      \"enum_values\": [\n        \"file\",\n        \"directory\",\n        \"extension\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceFilterSubject\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.source_filters[].match_type\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterMatchType\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_filters\",\n        \"[]\",\n        \"match_type\"\n      ],\n      \"enum_values\": [\n        \"contains\",\n        \"contains_regex\",\n        \"does_not_contain\",\n        \"does_not_contain_regex\",\n        \"equals\",\n        \"does_not_equal\",\n        \"starts_with\",\n        \"does_not_start_with\",\n        \"ends_with\",\n        \"does_not_end_with\",\n        \"is_image\",\n        \"is_tif\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceFilterMatchType\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.source_filters[].value\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_filters\",\n        \"[]\",\n        \"value\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.source_filters[].any_group\",\n      \"type_repr\": \"int | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_filters\",\n        \"[]\",\n        \"any_group\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"int | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].alias\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"alias\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceAssignmentBase\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"default_repr\": \"SourceSelector(components=(), metadata=(), filters=(), inherit_current_scope=True)\",\n      \"required\": false,\n      \"description\": \"Choose store-emitted image planes for one named pipeline input.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceAssignmentBase\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings[].selector\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].origin\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingOrigin\",\n      \"default_repr\": \"<SourceBindingOrigin.STEP_INPUT: 'step_input'>\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"origin\"\n      ],\n      \"enum_values\": [\n        \"step_input\",\n        \"pipeline_start\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceBindingOrigin\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceAssignmentBase\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].component_identity\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.ComponentSelector, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Semantic component axes assigned after selector resolution.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"component_identity\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.ComponentSelector, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceAssignmentBase\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings[].component_identity\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].artifact_kind\",\n      \"type_repr\": \"type[openhcs.core.artifacts.ArtifactType]\",\n      \"default_repr\": \"<class 'openhcs.core.artifacts.ImageArtifactType'>\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"artifact_kind\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [\n        \"special\",\n        \"image\",\n        \"object_labels\",\n        \"measurements\",\n        \"object_lineage\",\n        \"relationships\",\n        \"table\",\n        \"spatial_grid\",\n        \"spatial_graph\",\n        \"metadata\"\n      ],\n      \"value_type_repr\": \"type[openhcs.core.artifacts.ArtifactType]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].required\",\n      \"type_repr\": \"builtins.bool\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"required\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.bool\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].source_set_role\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceSetRole\",\n      \"default_repr\": \"<SourceSetRole.MATCHED: 'matched'>\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"source_set_role\"\n      ],\n      \"enum_values\": [\n        \"matched\",\n        \"broadcast\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceSetRole\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].projection_role\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceProjectionRole\",\n      \"default_repr\": \"<SourceProjectionRole.PRIMARY_PLANE: 'primary_plane'>\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"projection_role\"\n      ],\n      \"enum_values\": [\n        \"primary_plane\",\n        \"source_artifact\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceProjectionRole\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].explicit_source\",\n      \"type_repr\": \"openhcs.core.source_bindings.ImagePlaneSource | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"One explicit image-plane source URI declared by a source config.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"explicit_source\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.ImagePlaneSource | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings[].explicit_source\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].load_as_monochrome\",\n      \"type_repr\": \"builtins.bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"load_as_monochrome\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.bool\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].load_as_mask\",\n      \"type_repr\": \"builtins.bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"load_as_mask\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.bool\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].source_channel_axis\",\n      \"type_repr\": \"int | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"source_channel_axis\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"int | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].source_channel_counts\",\n      \"type_repr\": \"frozenset[int] | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"source_channel_counts\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"frozenset[int] | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.components\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.ComponentSelector, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"components\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.ComponentSelector, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings[].selector.components\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.metadata\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.MetadataSelector, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"metadata\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.MetadataSelector, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings[].selector.metadata\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.filters\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"filters\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.bindings[].selector.filters\"\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.inherit_current_scope\",\n      \"type_repr\": \"builtins.bool\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"inherit_current_scope\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.bool\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.components[].component\",\n      \"type_repr\": \"typing.Any\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"components\",\n        \"[]\",\n        \"component\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Any\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ComponentSelector\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.components[].value\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"components\",\n        \"[]\",\n        \"value\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ComponentSelector\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.metadata[].field\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"metadata\",\n        \"[]\",\n        \"field\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.MetadataSelector\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.metadata[].value\",\n      \"type_repr\": \"str | int | float | bool | None\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"metadata\",\n        \"[]\",\n        \"value\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | int | float | bool | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.MetadataSelector\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.filters[].subject\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterSubject\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"filters\",\n        \"[]\",\n        \"subject\"\n      ],\n      \"enum_values\": [\n        \"file\",\n        \"directory\",\n        \"extension\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceFilterSubject\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.filters[].match_type\",\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterMatchType\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"filters\",\n        \"[]\",\n        \"match_type\"\n      ],\n      \"enum_values\": [\n        \"contains\",\n        \"contains_regex\",\n        \"does_not_contain\",\n        \"does_not_contain_regex\",\n        \"equals\",\n        \"does_not_equal\",\n        \"starts_with\",\n        \"does_not_start_with\",\n        \"ends_with\",\n        \"does_not_end_with\",\n        \"is_image\",\n        \"is_tif\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.source_bindings.SourceFilterMatchType\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.filters[].value\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"filters\",\n        \"[]\",\n        \"value\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].selector.filters[].any_group\",\n      \"type_repr\": \"int | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"selector\",\n        \"filters\",\n        \"[]\",\n        \"any_group\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"int | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].component_identity[].component\",\n      \"type_repr\": \"typing.Any\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"component_identity\",\n        \"[]\",\n        \"component\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Any\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ComponentSelector\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].component_identity[].value\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"component_identity\",\n        \"[]\",\n        \"value\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ComponentSelector\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].explicit_source.uri\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"explicit_source\",\n        \"uri\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].explicit_source.series\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"explicit_source\",\n        \"series\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].explicit_source.index\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"explicit_source\",\n        \"index\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.bindings[].explicit_source.channel\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"bindings\",\n        \"[]\",\n        \"explicit_source\",\n        \"channel\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.image_plane_sources[].uri\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"image_plane_sources\",\n        \"[]\",\n        \"uri\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.image_plane_sources[].series\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"image_plane_sources\",\n        \"[]\",\n        \"series\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.image_plane_sources[].index\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"image_plane_sources\",\n        \"[]\",\n        \"index\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.image_plane_sources[].channel\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"image_plane_sources\",\n        \"[]\",\n        \"channel\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.imported_metadata_tables[].location\",\n      \"type_repr\": \"str | None\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"imported_metadata_tables\",\n        \"[]\",\n        \"location\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"str | None\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImportedMetadataTable\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.imported_metadata_tables[].joins\",\n      \"type_repr\": \"tuple[openhcs.core.source_bindings.ImportedMetadataJoin, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"imported_metadata_tables\",\n        \"[]\",\n        \"joins\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[openhcs.core.source_bindings.ImportedMetadataJoin, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImportedMetadataTable\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": \"source_bindings_config.imported_metadata_tables[].joins\"\n    },\n    {\n      \"path\": \"source_bindings_config.imported_metadata_tables[].joins[].image_metadata_field\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"imported_metadata_tables\",\n        \"[]\",\n        \"joins\",\n        \"[]\",\n        \"image_metadata_field\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImportedMetadataJoin\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.imported_metadata_tables[].joins[].imported_metadata_field\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": null,\n      \"required\": true,\n      \"description\": null,\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"imported_metadata_tables\",\n        \"[]\",\n        \"joins\",\n        \"[]\",\n        \"imported_metadata_field\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_bindings.ImportedMetadataJoin\",\n      \"default_origin\": null,\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"source_bindings_config.source_voxel_spacing.values_zyx\",\n      \"type_repr\": \"tuple[float, ...]\",\n      \"default_repr\": \"()\",\n      \"required\": false,\n      \"description\": \"Positive y/x or z/y/x spacing values; an empty tuple means unspecified spacing.\",\n      \"authoring_value_path\": [\n        \"source_bindings_config\",\n        \"source_voxel_spacing\",\n        \"values_zyx\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"tuple[float, ...]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.source_metadata.SourceVoxelSpacing\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    }\n  ],\n  \"path_prefix\": \"source_bindings_config\",\n  \"authoring_path\": \"ConfigPatch.values\",\n  \"registries\": [],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"description\": \"Root configuration object for an OpenHCS pipeline session.\\nThis object is intended to be instantiated at application startup and treated as immutable.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingsConfig\",\n      \"description\": \"Canonical pipeline declaration for selecting and naming plate sources.\\n\\nNormal plate initialization resolves these bindings over exact planes emitted\\nby the image stores. Embedded sample/well and axis coordinates are preserved;\\nan absent axis becomes ``\\\"1\\\"`` only when its store declares that axis absent\\nor singleton. Conflicting dataset, plane, or component identities fail\\nexplicitly instead of being selected by a fallback.\",\n      \"base_types\": [\n        \"openhcs.core.source_bindings.SourceBindingDeclarationsMixin\",\n        \"openhcs.core.source_bindings._SourceBindingPlanBase\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings._SourceBindingPlanBase\",\n      \"description\": \"Shared typed source-binding plan fields across editable and compiled views.\",\n      \"base_types\": [\n        \"abc.ABC\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.MetadataExtractionRule\",\n      \"description\": \"Regex-backed metadata extraction rule for source binding resolution.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceFilterClause\",\n      \"description\": \"Typed filter clause applied before metadata extraction.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchPlan\",\n      \"description\": \"Cross-alias pairing plan for assembling selected sources into source sets.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchDimension\",\n      \"description\": \"One shared source-set key, expressed as alias-to-metadata-field pairs.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceBindingMatchField\",\n      \"description\": \"Metadata field from one alias used as a source-set pairing key.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.runtime_tabular_values.FieldSpec\",\n      \"description\": \"One named field expected in a tabular runtime value.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.NamedSourceBinding\",\n      \"description\": \"Name selected image planes and their optional component identity.\\n\\n``alias`` is the source name presented to pipeline functions and user\\ninterfaces. The selected planes retain their exact store-backed pixel identity.\\n``component_identity`` authoritatively assigns biological coordinates after\\nselector resolution, replacing coordinates merely inferred by a source store.\",\n      \"base_types\": [\n        \"openhcs.core.source_bindings.SourceAssignmentBase\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceAssignmentBase\",\n      \"description\": \"Shared contract for selecting an alias and assigning its semantic identity.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.SourceSelector\",\n      \"description\": \"Choose store-emitted image planes for one named pipeline input.\\n\\nComponent and metadata selectors use declared plane identity. Path filters use\\nsource provenance supplied by the owning image store; they never decode a\\nstorage format or infer its axes.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.ComponentSelector\",\n      \"description\": \"Component-axis key/value pair used either to select sources or assign identity.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.MetadataSelector\",\n      \"description\": \"Metadata field/value filter used to select source candidates for one alias.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.ImagePlaneSource\",\n      \"description\": \"One explicit image-plane source URI declared by a source config.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.ImportedMetadataTable\",\n      \"description\": \"Pipeline-level metadata imported from an external table.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_bindings.ImportedMetadataJoin\",\n      \"description\": \"One join key between image metadata and an imported metadata table.\",\n      \"base_types\": []\n    },\n    {\n      \"type_repr\": \"openhcs.core.source_metadata.SourceVoxelSpacing\",\n      \"description\": \"Relative physical spacing for source pixels, ordered like arrays.\",\n      \"base_types\": []\n    }\n  ]\n}"}],"structured_content":{"config_type":"PipelineConfig","schema_version":"openhcs.agent.v1","fields":[{"path":"source_bindings_config","type_repr":"openhcs.core.source_bindings.LazySourceBindingsConfig","default_repr":"openhcs.core.source_bindings.LazySourceBindingsConfig()","required":false,"description":"Canonical pipeline declaration for selecting and naming plate sources.","authoring_value_path":["source_bindings_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceBindingsConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"source_bindings_config"},{"path":"source_bindings_config.metadata_rules","type_repr":"tuple[openhcs.core.source_bindings.MetadataExtractionRule, ...]","default_repr":"()","required":false,"description":"Regex/metadata extraction rules that add semantic fields for matching sources.","authoring_value_path":["source_bindings_config","metadata_rules"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.MetadataExtractionRule, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings._SourceBindingPlanBase","default_origin":"field_default","nested_schema_path":"source_bindings_config.metadata_rules"},{"path":"source_bindings_config.match_plan","type_repr":"openhcs.core.source_bindings.SourceBindingMatchPlan | None","default_repr":"None","required":false,"description":"Cross-alias pairing plan for assembling selected sources into source sets.","authoring_value_path":["source_bindings_config","match_plan"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceBindingMatchPlan | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings._SourceBindingPlanBase","default_origin":"field_default","nested_schema_path":"source_bindings_config.match_plan"},{"path":"source_bindings_config.metadata_fields","type_repr":"tuple[openhcs.core.runtime_tabular_values.FieldSpec, ...]","default_repr":"()","required":false,"description":"Exact scalar schema for source-literal metadata fields.","authoring_value_path":["source_bindings_config","metadata_fields"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.runtime_tabular_values.FieldSpec, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings._SourceBindingPlanBase","default_origin":"field_default","nested_schema_path":"source_bindings_config.metadata_fields"},{"path":"source_bindings_config.source_filters","type_repr":"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]","default_repr":"()","required":false,"description":"Filters limiting the source universe before named bindings are resolved.","authoring_value_path":["source_bindings_config","source_filters"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"field_default","nested_schema_path":"source_bindings_config.source_filters"},{"path":"source_bindings_config.bindings","type_repr":"tuple[openhcs.core.source_bindings.NamedSourceBinding, ...]","default_repr":"()","required":false,"description":"Named semantic source bindings available to pipelines and inherited by steps.","authoring_value_path":["source_bindings_config","bindings"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.NamedSourceBinding, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings"},{"path":"source_bindings_config.image_plane_sources","type_repr":"tuple[openhcs.core.source_bindings.ImagePlaneSource, ...]","default_repr":"()","required":false,"description":"Exact image-plane source records available for source-binding resolution.","authoring_value_path":["source_bindings_config","image_plane_sources"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.ImagePlaneSource, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"field_default","nested_schema_path":"source_bindings_config.image_plane_sources"},{"path":"source_bindings_config.imported_metadata_tables","type_repr":"tuple[openhcs.core.source_bindings.ImportedMetadataTable, ...]","default_repr":"()","required":false,"description":"External metadata tables joined to source records before matching.","authoring_value_path":["source_bindings_config","imported_metadata_tables"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.ImportedMetadataTable, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"field_default","nested_schema_path":"source_bindings_config.imported_metadata_tables"},{"path":"source_bindings_config.source_stack_components","type_repr":"tuple[openhcs.constants.constants.AllComponents, ...]","default_repr":"()","required":false,"description":"Ordered plate components that form one logical source image stack.","authoring_value_path":["source_bindings_config","source_stack_components"],"enum_values":["site","channel","z_index","timepoint","well"],"registry_values":[],"value_type_repr":"tuple[openhcs.constants.constants.AllComponents, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.grouping_metadata_fields","type_repr":"tuple[str, ...]","default_repr":"()","required":false,"description":"Metadata field names used to partition matched sources into execution groups.","authoring_value_path":["source_bindings_config","grouping_metadata_fields"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[str, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.source_voxel_spacing","type_repr":"openhcs.core.source_metadata.SourceVoxelSpacing","default_repr":"openhcs.core.source_metadata.SourceVoxelSpacing()","required":false,"description":"Physical source-pixel spacing in z, y, x order; omit values when unknown.","authoring_value_path":["source_bindings_config","source_voxel_spacing"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_metadata.SourceVoxelSpacing","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingsConfig","default_origin":"default_factory","nested_schema_path":"source_bindings_config.source_voxel_spacing"},{"path":"source_bindings_config.metadata_rules[].source","type_repr":"openhcs.core.source_bindings.MetadataSource","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","source"],"enum_values":["file_name","folder_name"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.MetadataSource","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.MetadataExtractionRule","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.metadata_rules[].pattern","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","pattern"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.MetadataExtractionRule","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.metadata_rules[].filters","type_repr":"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","filters"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.MetadataExtractionRule","default_origin":"field_default","nested_schema_path":"source_bindings_config.metadata_rules[].filters"},{"path":"source_bindings_config.metadata_rules[].filters[].subject","type_repr":"openhcs.core.source_bindings.SourceFilterSubject","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","filters","[]","subject"],"enum_values":["file","directory","extension"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceFilterSubject","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.metadata_rules[].filters[].match_type","type_repr":"openhcs.core.source_bindings.SourceFilterMatchType","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","filters","[]","match_type"],"enum_values":["contains","contains_regex","does_not_contain","does_not_contain_regex","equals","does_not_equal","starts_with","does_not_start_with","ends_with","does_not_end_with","is_image","is_tif"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceFilterMatchType","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.metadata_rules[].filters[].value","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","filters","[]","value"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.metadata_rules[].filters[].any_group","type_repr":"int | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","metadata_rules","[]","filters","[]","any_group"],"enum_values":[],"registry_values":[],"value_type_repr":"int | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.match_plan.method","type_repr":"openhcs.core.source_bindings.SourceBindingMatchMethod","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","match_plan","method"],"enum_values":["metadata","order"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceBindingMatchMethod","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingMatchPlan","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.match_plan.dimensions","type_repr":"tuple[openhcs.core.source_bindings.SourceBindingMatchDimension, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","match_plan","dimensions"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.SourceBindingMatchDimension, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingMatchPlan","default_origin":"field_default","nested_schema_path":"source_bindings_config.match_plan.dimensions"},{"path":"source_bindings_config.match_plan.dimensions[].fields","type_repr":"tuple[openhcs.core.source_bindings.SourceBindingMatchField, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","match_plan","dimensions","[]","fields"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.SourceBindingMatchField, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingMatchDimension","default_origin":"field_default","nested_schema_path":"source_bindings_config.match_plan.dimensions[].fields"},{"path":"source_bindings_config.match_plan.dimensions[].fields[].alias","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","match_plan","dimensions","[]","fields","[]","alias"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingMatchField","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.match_plan.dimensions[].fields[].metadata_field","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","match_plan","dimensions","[]","fields","[]","metadata_field"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceBindingMatchField","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.metadata_fields[].name","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","metadata_fields","[]","name"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.runtime_tabular_values.FieldSpec","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.metadata_fields[].dtype","type_repr":"type[object] | str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","metadata_fields","[]","dtype"],"enum_values":[],"registry_values":[],"value_type_repr":"type[object] | str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.runtime_tabular_values.FieldSpec","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.metadata_fields[].required","type_repr":"builtins.bool","default_repr":"True","required":false,"description":null,"authoring_value_path":["source_bindings_config","metadata_fields","[]","required"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.bool","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.runtime_tabular_values.FieldSpec","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.source_filters[].subject","type_repr":"openhcs.core.source_bindings.SourceFilterSubject","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","source_filters","[]","subject"],"enum_values":["file","directory","extension"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceFilterSubject","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.source_filters[].match_type","type_repr":"openhcs.core.source_bindings.SourceFilterMatchType","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","source_filters","[]","match_type"],"enum_values":["contains","contains_regex","does_not_contain","does_not_contain_regex","equals","does_not_equal","starts_with","does_not_start_with","ends_with","does_not_end_with","is_image","is_tif"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceFilterMatchType","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.source_filters[].value","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","source_filters","[]","value"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.source_filters[].any_group","type_repr":"int | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","source_filters","[]","any_group"],"enum_values":[],"registry_values":[],"value_type_repr":"int | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].alias","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","alias"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceAssignmentBase","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector","type_repr":"openhcs.core.source_bindings.SourceSelector","default_repr":"SourceSelector(components=(), metadata=(), filters=(), inherit_current_scope=True)","required":false,"description":"Choose store-emitted image planes for one named pipeline input.","authoring_value_path":["source_bindings_config","bindings","[]","selector"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceSelector","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceAssignmentBase","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings[].selector"},{"path":"source_bindings_config.bindings[].origin","type_repr":"openhcs.core.source_bindings.SourceBindingOrigin","default_repr":"<SourceBindingOrigin.STEP_INPUT: 'step_input'>","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","origin"],"enum_values":["step_input","pipeline_start"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceBindingOrigin","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceAssignmentBase","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].component_identity","type_repr":"tuple[openhcs.core.source_bindings.ComponentSelector, ...]","default_repr":"()","required":false,"description":"Semantic component axes assigned after selector resolution.","authoring_value_path":["source_bindings_config","bindings","[]","component_identity"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.ComponentSelector, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceAssignmentBase","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings[].component_identity"},{"path":"source_bindings_config.bindings[].artifact_kind","type_repr":"type[openhcs.core.artifacts.ArtifactType]","default_repr":"<class 'openhcs.core.artifacts.ImageArtifactType'>","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","artifact_kind"],"enum_values":[],"registry_values":["special","image","object_labels","measurements","object_lineage","relationships","table","spatial_grid","spatial_graph","metadata"],"value_type_repr":"type[openhcs.core.artifacts.ArtifactType]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].required","type_repr":"builtins.bool","default_repr":"True","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","required"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.bool","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].source_set_role","type_repr":"openhcs.core.source_bindings.SourceSetRole","default_repr":"<SourceSetRole.MATCHED: 'matched'>","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","source_set_role"],"enum_values":["matched","broadcast"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceSetRole","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].projection_role","type_repr":"openhcs.core.source_bindings.SourceProjectionRole","default_repr":"<SourceProjectionRole.PRIMARY_PLANE: 'primary_plane'>","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","projection_role"],"enum_values":["primary_plane","source_artifact"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceProjectionRole","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].explicit_source","type_repr":"openhcs.core.source_bindings.ImagePlaneSource | None","default_repr":"None","required":false,"description":"One explicit image-plane source URI declared by a source config.","authoring_value_path":["source_bindings_config","bindings","[]","explicit_source"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.ImagePlaneSource | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings[].explicit_source"},{"path":"source_bindings_config.bindings[].load_as_monochrome","type_repr":"builtins.bool","default_repr":"False","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","load_as_monochrome"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.bool","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].load_as_mask","type_repr":"builtins.bool","default_repr":"False","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","load_as_mask"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.bool","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].source_channel_axis","type_repr":"int | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","source_channel_axis"],"enum_values":[],"registry_values":[],"value_type_repr":"int | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].source_channel_counts","type_repr":"frozenset[int] | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","source_channel_counts"],"enum_values":[],"registry_values":[],"value_type_repr":"frozenset[int] | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.NamedSourceBinding","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.components","type_repr":"tuple[openhcs.core.source_bindings.ComponentSelector, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","components"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.ComponentSelector, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceSelector","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings[].selector.components"},{"path":"source_bindings_config.bindings[].selector.metadata","type_repr":"tuple[openhcs.core.source_bindings.MetadataSelector, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","metadata"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.MetadataSelector, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceSelector","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings[].selector.metadata"},{"path":"source_bindings_config.bindings[].selector.filters","type_repr":"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","filters"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.SourceFilterClause, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceSelector","default_origin":"field_default","nested_schema_path":"source_bindings_config.bindings[].selector.filters"},{"path":"source_bindings_config.bindings[].selector.inherit_current_scope","type_repr":"builtins.bool","default_repr":"True","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","inherit_current_scope"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.bool","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceSelector","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.components[].component","type_repr":"typing.Any","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","components","[]","component"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Any","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ComponentSelector","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.components[].value","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","components","[]","value"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ComponentSelector","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.metadata[].field","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","metadata","[]","field"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.MetadataSelector","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.metadata[].value","type_repr":"str | int | float | bool | None","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","metadata","[]","value"],"enum_values":[],"registry_values":[],"value_type_repr":"str | int | float | bool | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.MetadataSelector","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.filters[].subject","type_repr":"openhcs.core.source_bindings.SourceFilterSubject","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","filters","[]","subject"],"enum_values":["file","directory","extension"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceFilterSubject","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.filters[].match_type","type_repr":"openhcs.core.source_bindings.SourceFilterMatchType","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","filters","[]","match_type"],"enum_values":["contains","contains_regex","does_not_contain","does_not_contain_regex","equals","does_not_equal","starts_with","does_not_start_with","ends_with","does_not_end_with","is_image","is_tif"],"registry_values":[],"value_type_repr":"openhcs.core.source_bindings.SourceFilterMatchType","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.filters[].value","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","filters","[]","value"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].selector.filters[].any_group","type_repr":"int | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","selector","filters","[]","any_group"],"enum_values":[],"registry_values":[],"value_type_repr":"int | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.SourceFilterClause","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].component_identity[].component","type_repr":"typing.Any","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","component_identity","[]","component"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Any","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ComponentSelector","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].component_identity[].value","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","component_identity","[]","value"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ComponentSelector","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].explicit_source.uri","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","explicit_source","uri"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.bindings[].explicit_source.series","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","explicit_source","series"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].explicit_source.index","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","explicit_source","index"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.bindings[].explicit_source.channel","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","bindings","[]","explicit_source","channel"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.image_plane_sources[].uri","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","image_plane_sources","[]","uri"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.image_plane_sources[].series","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","image_plane_sources","[]","series"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.image_plane_sources[].index","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","image_plane_sources","[]","index"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.image_plane_sources[].channel","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","image_plane_sources","[]","channel"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImagePlaneSource","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.imported_metadata_tables[].location","type_repr":"str | None","default_repr":"None","required":false,"description":null,"authoring_value_path":["source_bindings_config","imported_metadata_tables","[]","location"],"enum_values":[],"registry_values":[],"value_type_repr":"str | None","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImportedMetadataTable","default_origin":"field_default","nested_schema_path":null},{"path":"source_bindings_config.imported_metadata_tables[].joins","type_repr":"tuple[openhcs.core.source_bindings.ImportedMetadataJoin, ...]","default_repr":"()","required":false,"description":null,"authoring_value_path":["source_bindings_config","imported_metadata_tables","[]","joins"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[openhcs.core.source_bindings.ImportedMetadataJoin, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImportedMetadataTable","default_origin":"field_default","nested_schema_path":"source_bindings_config.imported_metadata_tables[].joins"},{"path":"source_bindings_config.imported_metadata_tables[].joins[].image_metadata_field","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","imported_metadata_tables","[]","joins","[]","image_metadata_field"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImportedMetadataJoin","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.imported_metadata_tables[].joins[].imported_metadata_field","type_repr":"builtins.str","default_repr":null,"required":true,"description":null,"authoring_value_path":["source_bindings_config","imported_metadata_tables","[]","joins","[]","imported_metadata_field"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_bindings.ImportedMetadataJoin","default_origin":null,"nested_schema_path":null},{"path":"source_bindings_config.source_voxel_spacing.values_zyx","type_repr":"tuple[float, ...]","default_repr":"()","required":false,"description":"Positive y/x or z/y/x spacing values; an empty tuple means unspecified spacing.","authoring_value_path":["source_bindings_config","source_voxel_spacing","values_zyx"],"enum_values":[],"registry_values":[],"value_type_repr":"tuple[float, ...]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.source_metadata.SourceVoxelSpacing","default_origin":"field_default","nested_schema_path":null}],"path_prefix":"source_bindings_config","authoring_path":"ConfigPatch.values","registries":[],"types":[{"type_repr":"openhcs.core.config.GlobalPipelineConfig","description":"Root configuration object for an OpenHCS pipeline session.\nThis object is intended to be instantiated at application startup and treated as immutable.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.source_bindings.SourceBindingsConfig","description":"Canonical pipeline declaration for selecting and naming plate sources.\n\nNormal plate initialization resolves these bindings over exact planes emitted\nby the image stores. Embedded sample/well and axis coordinates are preserved;\nan absent axis becomes ``\"1\"`` only when its store declares that axis absent\nor singleton. Conflicting dataset, plane, or component identities fail\nexplicitly instead of being selected by a fallback.","base_types":["openhcs.core.source_bindings.SourceBindingDeclarationsMixin","openhcs.core.source_bindings._SourceBindingPlanBase"]},{"type_repr":"openhcs.core.source_bindings._SourceBindingPlanBase","description":"Shared typed source-binding plan fields across editable and compiled views.","base_types":["abc.ABC"]},{"type_repr":"openhcs.core.source_bindings.MetadataExtractionRule","description":"Regex-backed metadata extraction rule for source binding resolution.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.SourceFilterClause","description":"Typed filter clause applied before metadata extraction.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.SourceBindingMatchPlan","description":"Cross-alias pairing plan for assembling selected sources into source sets.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.SourceBindingMatchDimension","description":"One shared source-set key, expressed as alias-to-metadata-field pairs.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.SourceBindingMatchField","description":"Metadata field from one alias used as a source-set pairing key.","base_types":[]},{"type_repr":"openhcs.core.runtime_tabular_values.FieldSpec","description":"One named field expected in a tabular runtime value.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.NamedSourceBinding","description":"Name selected image planes and their optional component identity.\n\n``alias`` is the source name presented to pipeline functions and user\ninterfaces. The selected planes retain their exact store-backed pixel identity.\n``component_identity`` authoritatively assigns biological coordinates after\nselector resolution, replacing coordinates merely inferred by a source store.","base_types":["openhcs.core.source_bindings.SourceAssignmentBase"]},{"type_repr":"openhcs.core.source_bindings.SourceAssignmentBase","description":"Shared contract for selecting an alias and assigning its semantic identity.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.SourceSelector","description":"Choose store-emitted image planes for one named pipeline input.\n\nComponent and metadata selectors use declared plane identity. Path filters use\nsource provenance supplied by the owning image store; they never decode a\nstorage format or infer its axes.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.ComponentSelector","description":"Component-axis key/value pair used either to select sources or assign identity.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.MetadataSelector","description":"Metadata field/value filter used to select source candidates for one alias.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.ImagePlaneSource","description":"One explicit image-plane source URI declared by a source config.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.ImportedMetadataTable","description":"Pipeline-level metadata imported from an external table.","base_types":[]},{"type_repr":"openhcs.core.source_bindings.ImportedMetadataJoin","description":"One join key between image metadata and an imported metadata table.","base_types":[]},{"type_repr":"openhcs.core.source_metadata.SourceVoxelSpacing","description":"Relative physical spacing for source pixels, ordered like arrays.","base_types":[]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_48","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"path_planning_config"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_48","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"path_planning_config"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"PipelineConfig\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"path_planning_config\",\n      \"type_repr\": \"openhcs.core.config.LazyPathPlanningConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyPathPlanningConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for pipeline path planning and directory structure.\",\n      \"authoring_value_path\": [\n        \"path_planning_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.PathPlanningConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"path_planning_config\"\n    },\n    {\n      \"path\": \"path_planning_config.well_filter\",\n      \"type_repr\": \"typing.Union[typing.List[str], str, int, NoneType]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Well filter specification: list of wells, pattern string, or non-negative max count. None means all wells; zero selects none.\",\n      \"authoring_value_path\": [\n        \"path_planning_config\",\n        \"well_filter\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Union[typing.List[str], str, int, NoneType]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.WellFilterConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"path_planning_config.well_filter_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.WellFilterMode]\",\n      \"default_repr\": \"<WellFilterMode.INCLUDE: 'include'>\",\n      \"required\": false,\n      \"description\": \"Whether well_filter is an include list or exclude list.\",\n      \"authoring_value_path\": [\n        \"path_planning_config\",\n        \"well_filter_mode\"\n      ],\n      \"enum_values\": [\n        \"include\",\n        \"exclude\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.WellFilterMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.WellFilterConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"path_planning_config.output_dir_suffix\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": \"'_openhcs'\",\n      \"required\": false,\n      \"description\": \"Default suffix for general step output directories.\",\n      \"authoring_value_path\": [\n        \"path_planning_config\",\n        \"output_dir_suffix\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.PathPlanningConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"path_planning_config.global_output_folder\",\n      \"type_repr\": \"typing.Optional[pathlib.Path]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Optional global output folder where all plate workspaces and outputs will be created.\\n    If specified, plate workspaces will be created as {global_output_folder}/{plate_name}_workspace/\\n    and outputs as {global_output_folder}/{plate_name}_workspace_outputs/.\\n    If None, uses the current behavior (workspace and outputs in same directory as plate).\\n    Example: \\\"/data/results\\\" or \\\"/mnt/hcs_output\\\"\",\n      \"authoring_value_path\": [\n        \"path_planning_config\",\n        \"global_output_folder\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[pathlib.Path]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.PathPlanningConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"path_planning_config.sub_dir\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": \"'images'\",\n      \"required\": false,\n      \"description\": \"Subdirectory within plate folder for storing processed data.\\n    Examples: \\\"images\\\", \\\"processed\\\", \\\"data/images\\\"\",\n      \"authoring_value_path\": [\n        \"path_planning_config\",\n        \"sub_dir\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.PathPlanningConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    }\n  ],\n  \"path_prefix\": \"path_planning_config\",\n  \"authoring_path\": \"ConfigPatch.values\",\n  \"registries\": [],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"description\": \"Root configuration object for an OpenHCS pipeline session.\\nThis object is intended to be instantiated at application startup and treated as immutable.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.WellFilterConfig\",\n      \"description\": \"Base execution-domain filter inherited by specialized well policies.\\n\\nAt pipeline scope this constrains which wells compile and execute. Nominal\\nsubclasses reuse the same selection for their own narrower behavior, such\\nas main-flow persistence, step checkpoints, or viewer emission.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.PathPlanningConfig\",\n      \"description\": \"Configuration for pipeline path planning and directory structure.\\n\\nThis class handles path construction concerns including plate root directories,\\noutput directory suffixes, and subdirectory organization. It does not handle\\nanalysis results location, which is controlled at the pipeline level.\\n\\nIts inherited well filter selects which processed wells seed the automatic\\nmain-flow output plate. Zero keeps that automatic output runtime-only. This\\npolicy is independent of step checkpoints, typed artifact materialization,\\nand viewer streaming.\",\n      \"base_types\": [\n        \"openhcs.core.config.WellFilterConfig\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"config_type":"PipelineConfig","schema_version":"openhcs.agent.v1","fields":[{"path":"path_planning_config","type_repr":"openhcs.core.config.LazyPathPlanningConfig","default_repr":"openhcs.core.config.LazyPathPlanningConfig()","required":false,"description":"Configuration for pipeline path planning and directory structure.","authoring_value_path":["path_planning_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.PathPlanningConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"path_planning_config"},{"path":"path_planning_config.well_filter","type_repr":"typing.Union[typing.List[str], str, int, NoneType]","default_repr":"None","required":false,"description":"Well filter specification: list of wells, pattern string, or non-negative max count. None means all wells; zero selects none.","authoring_value_path":["path_planning_config","well_filter"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Union[typing.List[str], str, int, NoneType]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.WellFilterConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"path_planning_config.well_filter_mode","type_repr":"typing.Optional[openhcs.core.config.WellFilterMode]","default_repr":"<WellFilterMode.INCLUDE: 'include'>","required":false,"description":"Whether well_filter is an include list or exclude list.","authoring_value_path":["path_planning_config","well_filter_mode"],"enum_values":["include","exclude"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.WellFilterMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.WellFilterConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"path_planning_config.output_dir_suffix","type_repr":"builtins.str","default_repr":"'_openhcs'","required":false,"description":"Default suffix for general step output directories.","authoring_value_path":["path_planning_config","output_dir_suffix"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.PathPlanningConfig","default_origin":"field_default","nested_schema_path":null},{"path":"path_planning_config.global_output_folder","type_repr":"typing.Optional[pathlib.Path]","default_repr":"None","required":false,"description":"Optional global output folder where all plate workspaces and outputs will be created.\n    If specified, plate workspaces will be created as {global_output_folder}/{plate_name}_workspace/\n    and outputs as {global_output_folder}/{plate_name}_workspace_outputs/.\n    If None, uses the current behavior (workspace and outputs in same directory as plate).\n    Example: \"/data/results\" or \"/mnt/hcs_output\"","authoring_value_path":["path_planning_config","global_output_folder"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[pathlib.Path]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.PathPlanningConfig","default_origin":"field_default","nested_schema_path":null},{"path":"path_planning_config.sub_dir","type_repr":"builtins.str","default_repr":"'images'","required":false,"description":"Subdirectory within plate folder for storing processed data.\n    Examples: \"images\", \"processed\", \"data/images\"","authoring_value_path":["path_planning_config","sub_dir"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.PathPlanningConfig","default_origin":"field_default","nested_schema_path":null}],"path_prefix":"path_planning_config","authoring_path":"ConfigPatch.values","registries":[],"types":[{"type_repr":"openhcs.core.config.GlobalPipelineConfig","description":"Root configuration object for an OpenHCS pipeline session.\nThis object is intended to be instantiated at application startup and treated as immutable.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.WellFilterConfig","description":"Base execution-domain filter inherited by specialized well policies.\n\nAt pipeline scope this constrains which wells compile and execute. Nominal\nsubclasses reuse the same selection for their own narrower behavior, such\nas main-flow persistence, step checkpoints, or viewer emission.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.PathPlanningConfig","description":"Configuration for pipeline path planning and directory structure.\n\nThis class handles path construction concerns including plate root directories,\noutput directory suffixes, and subdirectory organization. It does not handle\nanalysis results location, which is controlled at the pipeline level.\n\nIts inherited well filter selects which processed wells seed the automatic\nmain-flow output plate. Zero keeps that automatic output runtime-only. This\npolicy is independent of step checkpoints, typed artifact materialization,\nand viewer streaming.","base_types":["openhcs.core.config.WellFilterConfig"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_49","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"processing_config"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_49","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"processing_config"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"PipelineConfig\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"processing_config\",\n      \"type_repr\": \"openhcs.core.config.LazyProcessingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyProcessingConfig()\",\n      \"required\": false,\n      \"description\": \"Independent stack-axis, post-assembly grouping, and main-flow choices.\",\n      \"authoring_value_path\": [\n        \"processing_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.ProcessingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"processing_config\"\n    },\n    {\n      \"path\": \"processing_config.variable_components\",\n      \"type_repr\": \"typing.List[openhcs.constants.constants.VariableComponents]\",\n      \"default_repr\": \"openhcs.constants.constants.get_default_variable_components()\",\n      \"required\": false,\n      \"description\": \"Components whose values vary along the assembled array axis.\\n\\n    This field is the stack-axis meaning authority. It is independent of\\n    ``group_by`` and of whether the callable executes per plane or per stack.\",\n      \"authoring_value_path\": [\n        \"processing_config\",\n        \"variable_components\"\n      ],\n      \"enum_values\": [\n        \"site\",\n        \"channel\",\n        \"z_index\",\n        \"timepoint\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.List[openhcs.constants.constants.VariableComponents]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.ProcessingConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"processing_config.group_by\",\n      \"type_repr\": \"typing.Optional[openhcs.constants.constants.GroupBy]\",\n      \"default_repr\": \"openhcs.constants.constants.get_default_group_by()\",\n      \"required\": false,\n      \"description\": \"Component used to partition already assembled values.\\n\\n    A dictionary function pattern uses the resulting group identity for branch\\n    selection. This field does not define the assembled stack axis.\",\n      \"authoring_value_path\": [\n        \"processing_config\",\n        \"group_by\"\n      ],\n      \"enum_values\": [\n        \"site\",\n        \"channel\",\n        \"z_index\",\n        \"timepoint\",\n        \"NONE\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.constants.constants.GroupBy]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.ProcessingConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"processing_config.input_source\",\n      \"type_repr\": \"openhcs.constants.input_source.InputSource\",\n      \"default_repr\": \"<InputSource.PREVIOUS_STEP: 'previous'>\",\n      \"required\": false,\n      \"description\": \"Main-flow source: previous step or pipeline start.\\n\\n    Additional named sources are callable artifact inputs satisfied through\\n    step source bindings or prior artifact producers; they are not another\\n    ``InputSource`` value.\",\n      \"authoring_value_path\": [\n        \"processing_config\",\n        \"input_source\"\n      ],\n      \"enum_values\": [\n        \"previous\",\n        \"start\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.constants.input_source.InputSource\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.ProcessingConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    }\n  ],\n  \"path_prefix\": \"processing_config\",\n  \"authoring_path\": \"ConfigPatch.values\",\n  \"registries\": [],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"description\": \"Root configuration object for an OpenHCS pipeline session.\\nThis object is intended to be instantiated at application startup and treated as immutable.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.ProcessingConfig\",\n      \"description\": \"Independent stack-axis, post-assembly grouping, and main-flow choices.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"config_type":"PipelineConfig","schema_version":"openhcs.agent.v1","fields":[{"path":"processing_config","type_repr":"openhcs.core.config.LazyProcessingConfig","default_repr":"openhcs.core.config.LazyProcessingConfig()","required":false,"description":"Independent stack-axis, post-assembly grouping, and main-flow choices.","authoring_value_path":["processing_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.ProcessingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"processing_config"},{"path":"processing_config.variable_components","type_repr":"typing.List[openhcs.constants.constants.VariableComponents]","default_repr":"openhcs.constants.constants.get_default_variable_components()","required":false,"description":"Components whose values vary along the assembled array axis.\n\n    This field is the stack-axis meaning authority. It is independent of\n    ``group_by`` and of whether the callable executes per plane or per stack.","authoring_value_path":["processing_config","variable_components"],"enum_values":["site","channel","z_index","timepoint"],"registry_values":[],"value_type_repr":"typing.List[openhcs.constants.constants.VariableComponents]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.ProcessingConfig","default_origin":"default_factory","nested_schema_path":null},{"path":"processing_config.group_by","type_repr":"typing.Optional[openhcs.constants.constants.GroupBy]","default_repr":"openhcs.constants.constants.get_default_group_by()","required":false,"description":"Component used to partition already assembled values.\n\n    A dictionary function pattern uses the resulting group identity for branch\n    selection. This field does not define the assembled stack axis.","authoring_value_path":["processing_config","group_by"],"enum_values":["site","channel","z_index","timepoint","NONE"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.constants.constants.GroupBy]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.ProcessingConfig","default_origin":"default_factory","nested_schema_path":null},{"path":"processing_config.input_source","type_repr":"openhcs.constants.input_source.InputSource","default_repr":"<InputSource.PREVIOUS_STEP: 'previous'>","required":false,"description":"Main-flow source: previous step or pipeline start.\n\n    Additional named sources are callable artifact inputs satisfied through\n    step source bindings or prior artifact producers; they are not another\n    ``InputSource`` value.","authoring_value_path":["processing_config","input_source"],"enum_values":["previous","start"],"registry_values":[],"value_type_repr":"openhcs.constants.input_source.InputSource","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.ProcessingConfig","default_origin":"field_default","nested_schema_path":null}],"path_prefix":"processing_config","authoring_path":"ConfigPatch.values","registries":[],"types":[{"type_repr":"openhcs.core.config.GlobalPipelineConfig","description":"Root configuration object for an OpenHCS pipeline session.\nThis object is intended to be instantiated at application startup and treated as immutable.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.ProcessingConfig","description":"Independent stack-axis, post-assembly grouping, and main-flow choices.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_50","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"napari_streaming_config"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_50","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"napari_streaming_config"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"PipelineConfig\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"napari_streaming_config\",\n      \"type_repr\": \"openhcs.core.config.LazyNapariStreamingConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyNapariStreamingConfig()\",\n      \"required\": false,\n      \"description\": \"Streaming configuration for Napari.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"napari_streaming_config\"\n    },\n    {\n      \"path\": \"napari_streaming_config.well_filter\",\n      \"type_repr\": \"typing.Union[typing.List[str], str, int, NoneType]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Well filter specification: list of wells, pattern string, or non-negative max count. None means all wells; zero selects none.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"well_filter\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Union[typing.List[str], str, int, NoneType]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.WellFilterConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.well_filter_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.WellFilterMode]\",\n      \"default_repr\": \"<WellFilterMode.INCLUDE: 'include'>\",\n      \"required\": false,\n      \"description\": \"Whether well_filter is an include list or exclude list.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"well_filter_mode\"\n      ],\n      \"enum_values\": [\n        \"include\",\n        \"exclude\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.WellFilterMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.WellFilterConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.colormap\",\n      \"type_repr\": \"typing.Optional[str]\",\n      \"default_repr\": \"'gray'\",\n      \"required\": false,\n      \"description\": \"Name of a colormap registered in the installed Napari viewer. Napari validates this extensible registry name when displaying the layer.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"colormap\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[str]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.variable_size_handling\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.NapariVariableSizeHandling]\",\n      \"default_repr\": \"<NapariVariableSizeHandling.PAD_TO_MAX: 'pad_to_max'>\",\n      \"required\": false,\n      \"description\": \"How Napari combines images with different spatial dimensions into layers.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"variable_size_handling\"\n      ],\n      \"enum_values\": [\n        \"separate_layers\",\n        \"pad_to_max\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.NapariVariableSizeHandling]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.site_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"default_repr\": \"<NapariDimensionMode.STACK: 'stack'>\",\n      \"required\": false,\n      \"description\": \"Whether site values are stacked or use separate layers.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"site_mode\"\n      ],\n      \"enum_values\": [\n        \"layer\",\n        \"stack\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.channel_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"default_repr\": \"<NapariDimensionMode.STACK: 'stack'>\",\n      \"required\": false,\n      \"description\": \"Whether channel values are stacked or use separate layers.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"channel_mode\"\n      ],\n      \"enum_values\": [\n        \"layer\",\n        \"stack\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.z_index_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"default_repr\": \"<NapariDimensionMode.STACK: 'stack'>\",\n      \"required\": false,\n      \"description\": \"Whether z-index values are stacked or use separate layers.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"z_index_mode\"\n      ],\n      \"enum_values\": [\n        \"layer\",\n        \"stack\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.timepoint_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"default_repr\": \"<NapariDimensionMode.STACK: 'stack'>\",\n      \"required\": false,\n      \"description\": \"Whether timepoint values are stacked or use separate layers.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"timepoint_mode\"\n      ],\n      \"enum_values\": [\n        \"layer\",\n        \"stack\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.well_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"default_repr\": \"<NapariDimensionMode.STACK: 'stack'>\",\n      \"required\": false,\n      \"description\": \"Whether well values are stacked or use separate layers.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"well_mode\"\n      ],\n      \"enum_values\": [\n        \"layer\",\n        \"stack\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.NapariDimensionMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.enabled\",\n      \"type_repr\": \"typing.Optional[bool]\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"description\": \"Whether this streaming config is enabled. When False, config exists but streaming is disabled.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"enabled\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[bool]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StreamingDefaults\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.persistent\",\n      \"type_repr\": \"typing.Optional[bool]\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"description\": \"Whether viewer stays open after pipeline completion.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"persistent\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[bool]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StreamingDefaults\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.host\",\n      \"type_repr\": \"typing.Optional[str]\",\n      \"default_repr\": \"'localhost'\",\n      \"required\": false,\n      \"description\": \"Host for streaming communication. Use 'localhost' for local, or remote IP for network streaming.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"host\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[str]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StreamingDefaults\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.transport_mode\",\n      \"type_repr\": \"typing.Optional[zmqruntime.config.TransportMode]\",\n      \"default_repr\": \"<TransportMode.IPC: 'ipc'>\",\n      \"required\": false,\n      \"description\": \"ZMQ transport mode: Platform-aware default (TCP on Windows, IPC on Unix/Mac).\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"transport_mode\"\n      ],\n      \"enum_values\": [\n        \"tcp\",\n        \"ipc\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[zmqruntime.config.TransportMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StreamingDefaults\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.scope_accent_color\",\n      \"type_repr\": \"typing.Optional[str]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Exact owner-projected scope accent used to frame a managed viewer.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"scope_accent_color\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[str]\",\n      \"ui_hidden\": true,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StreamingDefaults\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"napari_streaming_config.port\",\n      \"type_repr\": \"builtins.int\",\n      \"default_repr\": \"5555\",\n      \"required\": false,\n      \"description\": \"Napari viewer transport port; choose a free local port when streaming is enabled.\",\n      \"authoring_value_path\": [\n        \"napari_streaming_config\",\n        \"port\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.int\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    }\n  ],\n  \"path_prefix\": \"napari_streaming_config\",\n  \"authoring_path\": \"ConfigPatch.values\",\n  \"registries\": [\n    {\n      \"owner_type\": \"openhcs.core.config.StreamingConfig\",\n      \"registered_types\": [\n        {\n          \"key\": \"fiji_streaming_config\",\n          \"type_repr\": \"openhcs.core.config.LazyFijiStreamingConfig\"\n        },\n        {\n          \"key\": \"napari_streaming_config\",\n          \"type_repr\": \"openhcs.core.config.LazyNapariStreamingConfig\"\n        }\n      ]\n    }\n  ],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"description\": \"Root configuration object for an OpenHCS pipeline session.\\nThis object is intended to be instantiated at application startup and treated as immutable.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.NapariDisplayConfig\",\n      \"description\": \"Configuration for Napari display behavior.\",\n      \"base_types\": [\n        \"polystore.streaming.viewer_transport.ViewerDisplayConfigABC\",\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.WellFilterConfig\",\n      \"description\": \"Base execution-domain filter inherited by specialized well policies.\\n\\nAt pipeline scope this constrains which wells compile and execute. Nominal\\nsubclasses reuse the same selection for their own narrower behavior, such\\nas main-flow persistence, step checkpoints, or viewer emission.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StreamingDefaults\",\n      \"description\": \"Default configuration for streaming to visualizers.\\n\\nAn unset viewer well filter inherits broader well scope. A viewer override\\ncan narrow emission, but it cannot undo loading or processing already chosen\\nby the pipeline execution-domain filter.\\n\\nThe 'persistent' field is conditionally shown in list item previews via\\nalways_viewable_fields. Since this config is Enableable, the persistent field\\nwill only appear when enabled=True. This means disabled streaming configs won't\\nclutter the preview with persistence info, but enabled ones will show whether\\nthe viewer persists after pipeline completion.\",\n      \"base_types\": [\n        \"python_introspect.enableable.Enableable\",\n        \"openhcs.core.config.StepWellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.NapariStreamingConfig\",\n      \"description\": \"Streaming configuration for Napari.\",\n      \"base_types\": [\n        \"openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin\",\n        \"openhcs.core.config.StreamingConfig\",\n        \"openhcs.core.config.NapariDisplayConfig\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"config_type":"PipelineConfig","schema_version":"openhcs.agent.v1","fields":[{"path":"napari_streaming_config","type_repr":"openhcs.core.config.LazyNapariStreamingConfig","default_repr":"openhcs.core.config.LazyNapariStreamingConfig()","required":false,"description":"Streaming configuration for Napari.","authoring_value_path":["napari_streaming_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.NapariStreamingConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"napari_streaming_config"},{"path":"napari_streaming_config.well_filter","type_repr":"typing.Union[typing.List[str], str, int, NoneType]","default_repr":"None","required":false,"description":"Well filter specification: list of wells, pattern string, or non-negative max count. None means all wells; zero selects none.","authoring_value_path":["napari_streaming_config","well_filter"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Union[typing.List[str], str, int, NoneType]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.WellFilterConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.well_filter_mode","type_repr":"typing.Optional[openhcs.core.config.WellFilterMode]","default_repr":"<WellFilterMode.INCLUDE: 'include'>","required":false,"description":"Whether well_filter is an include list or exclude list.","authoring_value_path":["napari_streaming_config","well_filter_mode"],"enum_values":["include","exclude"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.WellFilterMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.WellFilterConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.colormap","type_repr":"typing.Optional[str]","default_repr":"'gray'","required":false,"description":"Name of a colormap registered in the installed Napari viewer. Napari validates this extensible registry name when displaying the layer.","authoring_value_path":["napari_streaming_config","colormap"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[str]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.variable_size_handling","type_repr":"typing.Optional[openhcs.core.config.NapariVariableSizeHandling]","default_repr":"<NapariVariableSizeHandling.PAD_TO_MAX: 'pad_to_max'>","required":false,"description":"How Napari combines images with different spatial dimensions into layers.","authoring_value_path":["napari_streaming_config","variable_size_handling"],"enum_values":["separate_layers","pad_to_max"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.NapariVariableSizeHandling]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.site_mode","type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","default_repr":"<NapariDimensionMode.STACK: 'stack'>","required":false,"description":"Whether site values are stacked or use separate layers.","authoring_value_path":["napari_streaming_config","site_mode"],"enum_values":["layer","stack"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.channel_mode","type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","default_repr":"<NapariDimensionMode.STACK: 'stack'>","required":false,"description":"Whether channel values are stacked or use separate layers.","authoring_value_path":["napari_streaming_config","channel_mode"],"enum_values":["layer","stack"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.z_index_mode","type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","default_repr":"<NapariDimensionMode.STACK: 'stack'>","required":false,"description":"Whether z-index values are stacked or use separate layers.","authoring_value_path":["napari_streaming_config","z_index_mode"],"enum_values":["layer","stack"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.timepoint_mode","type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","default_repr":"<NapariDimensionMode.STACK: 'stack'>","required":false,"description":"Whether timepoint values are stacked or use separate layers.","authoring_value_path":["napari_streaming_config","timepoint_mode"],"enum_values":["layer","stack"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.well_mode","type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","default_repr":"<NapariDimensionMode.STACK: 'stack'>","required":false,"description":"Whether well values are stacked or use separate layers.","authoring_value_path":["napari_streaming_config","well_mode"],"enum_values":["layer","stack"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.NapariDimensionMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariDisplayConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.enabled","type_repr":"typing.Optional[bool]","default_repr":"False","required":false,"description":"Whether this streaming config is enabled. When False, config exists but streaming is disabled.","authoring_value_path":["napari_streaming_config","enabled"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[bool]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StreamingDefaults","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.persistent","type_repr":"typing.Optional[bool]","default_repr":"True","required":false,"description":"Whether viewer stays open after pipeline completion.","authoring_value_path":["napari_streaming_config","persistent"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[bool]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StreamingDefaults","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.host","type_repr":"typing.Optional[str]","default_repr":"'localhost'","required":false,"description":"Host for streaming communication. Use 'localhost' for local, or remote IP for network streaming.","authoring_value_path":["napari_streaming_config","host"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[str]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StreamingDefaults","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.transport_mode","type_repr":"typing.Optional[zmqruntime.config.TransportMode]","default_repr":"<TransportMode.IPC: 'ipc'>","required":false,"description":"ZMQ transport mode: Platform-aware default (TCP on Windows, IPC on Unix/Mac).","authoring_value_path":["napari_streaming_config","transport_mode"],"enum_values":["tcp","ipc"],"registry_values":[],"value_type_repr":"typing.Optional[zmqruntime.config.TransportMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StreamingDefaults","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.scope_accent_color","type_repr":"typing.Optional[str]","default_repr":"None","required":false,"description":"Exact owner-projected scope accent used to frame a managed viewer.","authoring_value_path":["napari_streaming_config","scope_accent_color"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[str]","ui_hidden":true,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StreamingDefaults","default_origin":"inherited_default","nested_schema_path":null},{"path":"napari_streaming_config.port","type_repr":"builtins.int","default_repr":"5555","required":false,"description":"Napari viewer transport port; choose a free local port when streaming is enabled.","authoring_value_path":["napari_streaming_config","port"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.int","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.NapariStreamingConfig","default_origin":"field_default","nested_schema_path":null}],"path_prefix":"napari_streaming_config","authoring_path":"ConfigPatch.values","registries":[{"owner_type":"openhcs.core.config.StreamingConfig","registered_types":[{"key":"fiji_streaming_config","type_repr":"openhcs.core.config.LazyFijiStreamingConfig"},{"key":"napari_streaming_config","type_repr":"openhcs.core.config.LazyNapariStreamingConfig"}]}],"types":[{"type_repr":"openhcs.core.config.GlobalPipelineConfig","description":"Root configuration object for an OpenHCS pipeline session.\nThis object is intended to be instantiated at application startup and treated as immutable.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.NapariDisplayConfig","description":"Configuration for Napari display behavior.","base_types":["polystore.streaming.viewer_transport.ViewerDisplayConfigABC","python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.WellFilterConfig","description":"Base execution-domain filter inherited by specialized well policies.\n\nAt pipeline scope this constrains which wells compile and execute. Nominal\nsubclasses reuse the same selection for their own narrower behavior, such\nas main-flow persistence, step checkpoints, or viewer emission.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.StreamingDefaults","description":"Default configuration for streaming to visualizers.\n\nAn unset viewer well filter inherits broader well scope. A viewer override\ncan narrow emission, but it cannot undo loading or processing already chosen\nby the pipeline execution-domain filter.\n\nThe 'persistent' field is conditionally shown in list item previews via\nalways_viewable_fields. Since this config is Enableable, the persistent field\nwill only appear when enabled=True. This means disabled streaming configs won't\nclutter the preview with persistence info, but enabled ones will show whether\nthe viewer persists after pipeline completion.","base_types":["python_introspect.enableable.Enableable","openhcs.core.config.StepWellFilterConfig"]},{"type_repr":"openhcs.core.config.NapariStreamingConfig","description":"Streaming configuration for Napari.","base_types":["openhcs.core.streaming_config_factory.StreamingConfigBehaviorMixin","openhcs.core.config.StreamingConfig","openhcs.core.config.NapariDisplayConfig"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_51","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"step_materialization_config"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_51","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_config_schema","arguments":{"config_type":"PipelineConfig","path_prefix":"step_materialization_config"},"result":{"content":[{"type":"text","text":"{\n  \"config_type\": \"PipelineConfig\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"fields\": [\n    {\n      \"path\": \"step_materialization_config\",\n      \"type_repr\": \"openhcs.core.config.LazyStepMaterializationConfig\",\n      \"default_repr\": \"openhcs.core.config.LazyStepMaterializationConfig()\",\n      \"required\": false,\n      \"description\": \"Configuration for persistent copies of a step's ordinary main-flow result.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"ui_hidden\": false,\n      \"lazy\": true,\n      \"inheritable\": false,\n      \"declaring_type\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"default_origin\": \"default_factory\",\n      \"nested_schema_path\": \"step_materialization_config\"\n    },\n    {\n      \"path\": \"step_materialization_config.well_filter\",\n      \"type_repr\": \"typing.Union[typing.List[str], str, int, NoneType]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Well filter specification: list of wells, pattern string, or non-negative max count. None means all wells; zero selects none.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\",\n        \"well_filter\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Union[typing.List[str], str, int, NoneType]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.WellFilterConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"step_materialization_config.well_filter_mode\",\n      \"type_repr\": \"typing.Optional[openhcs.core.config.WellFilterMode]\",\n      \"default_repr\": \"<WellFilterMode.INCLUDE: 'include'>\",\n      \"required\": false,\n      \"description\": \"Whether well_filter is an include list or exclude list.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\",\n        \"well_filter_mode\"\n      ],\n      \"enum_values\": [\n        \"include\",\n        \"exclude\"\n      ],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[openhcs.core.config.WellFilterMode]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.WellFilterConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"step_materialization_config.output_dir_suffix\",\n      \"type_repr\": \"typing.Optional[str]\",\n      \"default_repr\": \"'_openhcs'\",\n      \"required\": false,\n      \"description\": \"Default suffix for general step output directories.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\",\n        \"output_dir_suffix\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[str]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.PathPlanningConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"step_materialization_config.global_output_folder\",\n      \"type_repr\": \"typing.Optional[pathlib.Path]\",\n      \"default_repr\": \"None\",\n      \"required\": false,\n      \"description\": \"Optional global output folder where all plate workspaces and outputs will be created.\\n    If specified, plate workspaces will be created as {global_output_folder}/{plate_name}_workspace/\\n    and outputs as {global_output_folder}/{plate_name}_workspace_outputs/.\\n    If None, uses the current behavior (workspace and outputs in same directory as plate).\\n    Example: \\\"/data/results\\\" or \\\"/mnt/hcs_output\\\"\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\",\n        \"global_output_folder\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"typing.Optional[pathlib.Path]\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.PathPlanningConfig\",\n      \"default_origin\": \"inherited_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"step_materialization_config.sub_dir\",\n      \"type_repr\": \"builtins.str\",\n      \"default_repr\": \"'checkpoints'\",\n      \"required\": false,\n      \"description\": \"Subdirectory for materialized outputs (different from global 'images').\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\",\n        \"sub_dir\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.str\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    },\n    {\n      \"path\": \"step_materialization_config.enabled\",\n      \"type_repr\": \"builtins.bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"description\": \"Whether this materialization config is enabled. When False, config exists but materialization is disabled.\",\n      \"authoring_value_path\": [\n        \"step_materialization_config\",\n        \"enabled\"\n      ],\n      \"enum_values\": [],\n      \"registry_values\": [],\n      \"value_type_repr\": \"builtins.bool\",\n      \"ui_hidden\": false,\n      \"lazy\": false,\n      \"inheritable\": true,\n      \"declaring_type\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"default_origin\": \"field_default\",\n      \"nested_schema_path\": null\n    }\n  ],\n  \"path_prefix\": \"step_materialization_config\",\n  \"authoring_path\": \"ConfigPatch.values\",\n  \"registries\": [],\n  \"types\": [\n    {\n      \"type_repr\": \"openhcs.core.config.GlobalPipelineConfig\",\n      \"description\": \"Root configuration object for an OpenHCS pipeline session.\\nThis object is intended to be instantiated at application startup and treated as immutable.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.WellFilterConfig\",\n      \"description\": \"Base execution-domain filter inherited by specialized well policies.\\n\\nAt pipeline scope this constrains which wells compile and execute. Nominal\\nsubclasses reuse the same selection for their own narrower behavior, such\\nas main-flow persistence, step checkpoints, or viewer emission.\",\n      \"base_types\": [\n        \"python_introspect.validation.AnnotatedDataclassValidationMixin\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.PathPlanningConfig\",\n      \"description\": \"Configuration for pipeline path planning and directory structure.\\n\\nThis class handles path construction concerns including plate root directories,\\noutput directory suffixes, and subdirectory organization. It does not handle\\nanalysis results location, which is controlled at the pipeline level.\\n\\nIts inherited well filter selects which processed wells seed the automatic\\nmain-flow output plate. Zero keeps that automatic output runtime-only. This\\npolicy is independent of step checkpoints, typed artifact materialization,\\nand viewer streaming.\",\n      \"base_types\": [\n        \"openhcs.core.config.WellFilterConfig\"\n      ]\n    },\n    {\n      \"type_repr\": \"openhcs.core.config.StepMaterializationConfig\",\n      \"description\": \"Configuration for persistent copies of a step's ordinary main-flow result.\\n\\nThis dataclass appears in the UI like any other configuration, allowing users\\nto set pipeline-level defaults for step materialization behavior. All step\\nmaterialization instances will inherit these defaults unless explicitly overridden.\\n\\nTyped artifact outputs remain available through runtime dataflow independently.\\nTheir persistence is owned by artifact output and compiled runtime-artifact\\nmaterialization plans rather than this main-flow checkpoint config.\\n\\nUses multiple inheritance from PathPlanningConfig and StepWellFilterConfig.\\n\\nThe 'sub_dir' field is conditionally shown in list item previews via always_viewable_fields.\\nSince this config is Enableable, the sub_dir will only appear when enabled=True.\\nThis means disabled materialization configs won't clutter the preview with sub_dir.\",\n      \"base_types\": [\n        \"python_introspect.enableable.Enableable\",\n        \"openhcs.core.config.StepWellFilterConfig\",\n        \"openhcs.core.config.PathPlanningConfig\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"config_type":"PipelineConfig","schema_version":"openhcs.agent.v1","fields":[{"path":"step_materialization_config","type_repr":"openhcs.core.config.LazyStepMaterializationConfig","default_repr":"openhcs.core.config.LazyStepMaterializationConfig()","required":false,"description":"Configuration for persistent copies of a step's ordinary main-flow result.","authoring_value_path":["step_materialization_config"],"enum_values":[],"registry_values":[],"value_type_repr":"openhcs.core.config.StepMaterializationConfig","ui_hidden":false,"lazy":true,"inheritable":false,"declaring_type":"openhcs.core.config.GlobalPipelineConfig","default_origin":"default_factory","nested_schema_path":"step_materialization_config"},{"path":"step_materialization_config.well_filter","type_repr":"typing.Union[typing.List[str], str, int, NoneType]","default_repr":"None","required":false,"description":"Well filter specification: list of wells, pattern string, or non-negative max count. None means all wells; zero selects none.","authoring_value_path":["step_materialization_config","well_filter"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Union[typing.List[str], str, int, NoneType]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.WellFilterConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"step_materialization_config.well_filter_mode","type_repr":"typing.Optional[openhcs.core.config.WellFilterMode]","default_repr":"<WellFilterMode.INCLUDE: 'include'>","required":false,"description":"Whether well_filter is an include list or exclude list.","authoring_value_path":["step_materialization_config","well_filter_mode"],"enum_values":["include","exclude"],"registry_values":[],"value_type_repr":"typing.Optional[openhcs.core.config.WellFilterMode]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.WellFilterConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"step_materialization_config.output_dir_suffix","type_repr":"typing.Optional[str]","default_repr":"'_openhcs'","required":false,"description":"Default suffix for general step output directories.","authoring_value_path":["step_materialization_config","output_dir_suffix"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[str]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.PathPlanningConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"step_materialization_config.global_output_folder","type_repr":"typing.Optional[pathlib.Path]","default_repr":"None","required":false,"description":"Optional global output folder where all plate workspaces and outputs will be created.\n    If specified, plate workspaces will be created as {global_output_folder}/{plate_name}_workspace/\n    and outputs as {global_output_folder}/{plate_name}_workspace_outputs/.\n    If None, uses the current behavior (workspace and outputs in same directory as plate).\n    Example: \"/data/results\" or \"/mnt/hcs_output\"","authoring_value_path":["step_materialization_config","global_output_folder"],"enum_values":[],"registry_values":[],"value_type_repr":"typing.Optional[pathlib.Path]","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.PathPlanningConfig","default_origin":"inherited_default","nested_schema_path":null},{"path":"step_materialization_config.sub_dir","type_repr":"builtins.str","default_repr":"'checkpoints'","required":false,"description":"Subdirectory for materialized outputs (different from global 'images').","authoring_value_path":["step_materialization_config","sub_dir"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.str","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StepMaterializationConfig","default_origin":"field_default","nested_schema_path":null},{"path":"step_materialization_config.enabled","type_repr":"builtins.bool","default_repr":"False","required":false,"description":"Whether this materialization config is enabled. When False, config exists but materialization is disabled.","authoring_value_path":["step_materialization_config","enabled"],"enum_values":[],"registry_values":[],"value_type_repr":"builtins.bool","ui_hidden":false,"lazy":false,"inheritable":true,"declaring_type":"openhcs.core.config.StepMaterializationConfig","default_origin":"field_default","nested_schema_path":null}],"path_prefix":"step_materialization_config","authoring_path":"ConfigPatch.values","registries":[],"types":[{"type_repr":"openhcs.core.config.GlobalPipelineConfig","description":"Root configuration object for an OpenHCS pipeline session.\nThis object is intended to be instantiated at application startup and treated as immutable.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.WellFilterConfig","description":"Base execution-domain filter inherited by specialized well policies.\n\nAt pipeline scope this constrains which wells compile and execute. Nominal\nsubclasses reuse the same selection for their own narrower behavior, such\nas main-flow persistence, step checkpoints, or viewer emission.","base_types":["python_introspect.validation.AnnotatedDataclassValidationMixin"]},{"type_repr":"openhcs.core.config.PathPlanningConfig","description":"Configuration for pipeline path planning and directory structure.\n\nThis class handles path construction concerns including plate root directories,\noutput directory suffixes, and subdirectory organization. It does not handle\nanalysis results location, which is controlled at the pipeline level.\n\nIts inherited well filter selects which processed wells seed the automatic\nmain-flow output plate. Zero keeps that automatic output runtime-only. This\npolicy is independent of step checkpoints, typed artifact materialization,\nand viewer streaming.","base_types":["openhcs.core.config.WellFilterConfig"]},{"type_repr":"openhcs.core.config.StepMaterializationConfig","description":"Configuration for persistent copies of a step's ordinary main-flow result.\n\nThis dataclass appears in the UI like any other configuration, allowing users\nto set pipeline-level defaults for step materialization behavior. All step\nmaterialization instances will inherit these defaults unless explicitly overridden.\n\nTyped artifact outputs remain available through runtime dataflow independently.\nTheir persistence is owned by artifact output and compiled runtime-artifact\nmaterialization plans rather than this main-flow checkpoint config.\n\nUses multiple inheritance from PathPlanningConfig and StepWellFilterConfig.\n\nThe 'sub_dir' field is conditionally shown in list item previews via always_viewable_fields.\nSince this config is Enableable, the sub_dir will only appear when enabled=True.\nThis means disabled materialization configs won't clutter the preview with sub_dir.","base_types":["python_introspect.enableable.Enableable","openhcs.core.config.StepWellFilterConfig","openhcs.core.config.PathPlanningConfig"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_52","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_image_sources","section_id":"executable-code-mode-declarations","max_chars":20000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_52","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_image_sources","section_id":"executable-code-mode-declarations","max_chars":20000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"document\": {\n    \"document_id\": \"openhcs_image_sources\",\n    \"title\": \"Loading and naming image sources\",\n    \"summary\": \"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.\",\n    \"source_path\": \"docs/source/guide_for_biologists/image_sources.rst\",\n    \"tags\": [\n      \"loading CZI\",\n      \"CZI\",\n      \"OME-TIFF\",\n      \"OME-Zarr\",\n      \"NGFF\",\n      \"TIFF\",\n      \"PNG\",\n      \"mixed image stores\",\n      \"named source bindings\",\n      \"named channels\",\n      \"component metadata\",\n      \"well site channel Z timepoint\",\n      \"source provenance\"\n    ],\n    \"section_count\": 7\n  },\n  \"sections\": [\n    {\n      \"section_id\": \"loading-and-naming-image-sources\",\n      \"title\": \"Loading and naming image sources\",\n      \"level\": 1,\n      \"span\": {\n        \"start_line\": 1,\n        \"end_line\": 349\n      }\n    },\n    {\n      \"section_id\": \"native-layout-versus-complete-metadata\",\n      \"title\": \"Native layout versus complete metadata\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 35,\n        \"end_line\": 70\n      }\n    },\n    {\n      \"section_id\": \"coordinates-and-source-identity\",\n      \"title\": \"Coordinates and source identity\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 71,\n        \"end_line\": 87\n      }\n    },\n    {\n      \"section_id\": \"binding-positions-are-not-microscope-channel-values\",\n      \"title\": \"Binding positions are not microscope channel values\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 88,\n        \"end_line\": 179\n      }\n    },\n    {\n      \"section_id\": \"executable-code-mode-declarations\",\n      \"title\": \"Executable code-mode declarations\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 180,\n        \"end_line\": 293\n      }\n    },\n    {\n      \"section_id\": \"selecting-channels-and-samples\",\n      \"title\": \"Selecting channels and samples\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 294,\n        \"end_line\": 333\n      }\n    },\n    {\n      \"section_id\": \"diagnostics-and-rich-containers\",\n      \"title\": \"Diagnostics and rich containers\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 334,\n        \"end_line\": 349\n      }\n    }\n  ],\n  \"content\": \"Executable code-mode declarations\\n---------------------------------\\n\\nThe following block constructs a complete Pipeline Editor code document for a\\ndirectory that mixes stores. The intermediate config values deliberately show\\nboth source-binding roles:\\n\\n- ``tiff_png_config`` can drive ``SourceBindingsHandler`` when the directory is\\n  an otherwise unrecognized collection of ordinary files;\\n- the CZI, OME-TIFF, and OME-Zarr configs name/select planes after their store\\n  handlers decode them.\\n\\nChoose one as ``pipeline_config`` and keep the ``pipeline_steps`` assignment in\\nthe same document. Filenames are exact examples; replace them with names present\\ndirectly under the selected plate directory.\\n\\n.. code-block:: python\\n\\n   from openhcs.constants.input_source import InputSource\\n   from openhcs.core.config import (\\n       LazyProcessingConfig,\\n       LazyStepSourceBindingsConfig,\\n       PipelineConfig,\\n   )\\n   from openhcs.core.source_bindings import (\\n       NamedSourceBinding,\\n       SourceBindingsConfig,\\n       SourceFilterClause,\\n       SourceFilterMatchType,\\n       SourceFilterSubject,\\n       SourceSelector,\\n   )\\n   from openhcs.core.steps.function_step import FunctionStep\\n   from openhcs.processing.backends.processors.numpy_processor import (\\n       stack_percentile_normalize,\\n   )\\n\\n\\n   def bind_file(alias: str, filename: str) -> NamedSourceBinding:\\n       return NamedSourceBinding(\\n           alias=alias,\\n           selector=SourceSelector(\\n               filters=(\\n                   SourceFilterClause(\\n                       subject=SourceFilterSubject.FILE,\\n                       match_type=SourceFilterMatchType.EQUALS,\\n                       value=filename,\\n                   ),\\n               ),\\n           ),\\n       )\\n\\n\\n   tiff_png_config = PipelineConfig(\\n       source_bindings_config=SourceBindingsConfig(\\n           bindings=(\\n               bind_file(\\\"DNA\\\", \\\"nuclei.tif\\\"),\\n               bind_file(\\\"Mask\\\", \\\"segmentation.png\\\"),\\n           ),\\n       ),\\n   )\\n\\n   czi_config = PipelineConfig(\\n       source_bindings_config=SourceBindingsConfig(\\n           bindings=(bind_file(\\\"DNA\\\", \\\"experiment.czi\\\"),),\\n       ),\\n   )\\n\\n   ome_tiff_config = PipelineConfig(\\n       source_bindings_config=SourceBindingsConfig(\\n           bindings=(bind_file(\\\"DNA\\\", \\\"plate.ome.tif\\\"),),\\n       ),\\n   )\\n\\n   ome_zarr_config = PipelineConfig(\\n       source_bindings_config=SourceBindingsConfig(\\n           bindings=(bind_file(\\\"DNA\\\", \\\"plate.zarr\\\"),),\\n       ),\\n   )\\n\\n   mixed_store_config = PipelineConfig(\\n       source_bindings_config=SourceBindingsConfig(\\n           bindings=(\\n               bind_file(\\\"DNA\\\", \\\"plate.zarr\\\"),\\n               bind_file(\\\"Brightfield\\\", \\\"brightfield.tif\\\"),\\n               bind_file(\\\"Mask\\\", \\\"labels.png\\\"),\\n           ),\\n       ),\\n   )\\n\\n   pipeline_config = mixed_store_config\\n\\n   pipeline_steps = [\\n       FunctionStep(\\n           name=\\\"Normalize DNA\\\",\\n           func=stack_percentile_normalize,\\n           processing_config=LazyProcessingConfig(\\n               input_source=InputSource.PIPELINE_START,\\n           ),\\n           source_bindings=LazyStepSourceBindingsConfig(\\n               enabled=True,\\n               bindings=(NamedSourceBinding(alias=\\\"DNA\\\"),),\\n           ),\\n       ),\\n   ]\\n\\nAfter applying the code, initialize the selected plate normally with auto-\\ndetection. OpenHCS first chooses the native, Bio-Formats/store, or arbitrary-\\nfolder ingestion owner, then resolves every binding over the planes that owner\\npublished. CZI and embedded OME metadata require the Bio-Formats runtime included\\nby an OpenHCS installation that enables those formats. Do not force a CZI or OME\\ncontainer through ``SourceBindingsHandler`` when its structured decoder is\\nmissing or unhealthy; repair that decoder instead.\\n\",\n  \"selected_section_id\": \"executable-code-mode-declarations\",\n  \"truncated\": false,\n  \"max_chars\": 20000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"document":{"document_id":"openhcs_image_sources","title":"Loading and naming image sources","summary":"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.","source_path":"docs/source/guide_for_biologists/image_sources.rst","tags":["loading CZI","CZI","OME-TIFF","OME-Zarr","NGFF","TIFF","PNG","mixed image stores","named source bindings","named channels","component metadata","well site channel Z timepoint","source provenance"],"section_count":7},"sections":[{"section_id":"loading-and-naming-image-sources","title":"Loading and naming image sources","level":1,"span":{"start_line":1,"end_line":349}},{"section_id":"native-layout-versus-complete-metadata","title":"Native layout versus complete metadata","level":2,"span":{"start_line":35,"end_line":70}},{"section_id":"coordinates-and-source-identity","title":"Coordinates and source identity","level":2,"span":{"start_line":71,"end_line":87}},{"section_id":"binding-positions-are-not-microscope-channel-values","title":"Binding positions are not microscope channel values","level":2,"span":{"start_line":88,"end_line":179}},{"section_id":"executable-code-mode-declarations","title":"Executable code-mode declarations","level":2,"span":{"start_line":180,"end_line":293}},{"section_id":"selecting-channels-and-samples","title":"Selecting channels and samples","level":2,"span":{"start_line":294,"end_line":333}},{"section_id":"diagnostics-and-rich-containers","title":"Diagnostics and rich containers","level":2,"span":{"start_line":334,"end_line":349}}],"content":"Executable code-mode declarations\n---------------------------------\n\nThe following block constructs a complete Pipeline Editor code document for a\ndirectory that mixes stores. The intermediate config values deliberately show\nboth source-binding roles:\n\n- ``tiff_png_config`` can drive ``SourceBindingsHandler`` when the directory is\n  an otherwise unrecognized collection of ordinary files;\n- the CZI, OME-TIFF, and OME-Zarr configs name/select planes after their store\n  handlers decode them.\n\nChoose one as ``pipeline_config`` and keep the ``pipeline_steps`` assignment in\nthe same document. Filenames are exact examples; replace them with names present\ndirectly under the selected plate directory.\n\n.. code-block:: python\n\n   from openhcs.constants.input_source import InputSource\n   from openhcs.core.config import (\n       LazyProcessingConfig,\n       LazyStepSourceBindingsConfig,\n       PipelineConfig,\n   )\n   from openhcs.core.source_bindings import (\n       NamedSourceBinding,\n       SourceBindingsConfig,\n       SourceFilterClause,\n       SourceFilterMatchType,\n       SourceFilterSubject,\n       SourceSelector,\n   )\n   from openhcs.core.steps.function_step import FunctionStep\n   from openhcs.processing.backends.processors.numpy_processor import (\n       stack_percentile_normalize,\n   )\n\n\n   def bind_file(alias: str, filename: str) -> NamedSourceBinding:\n       return NamedSourceBinding(\n           alias=alias,\n           selector=SourceSelector(\n               filters=(\n                   SourceFilterClause(\n                       subject=SourceFilterSubject.FILE,\n                       match_type=SourceFilterMatchType.EQUALS,\n                       value=filename,\n                   ),\n               ),\n           ),\n       )\n\n\n   tiff_png_config = PipelineConfig(\n       source_bindings_config=SourceBindingsConfig(\n           bindings=(\n               bind_file(\"DNA\", \"nuclei.tif\"),\n               bind_file(\"Mask\", \"segmentation.png\"),\n           ),\n       ),\n   )\n\n   czi_config = PipelineConfig(\n       source_bindings_config=SourceBindingsConfig(\n           bindings=(bind_file(\"DNA\", \"experiment.czi\"),),\n       ),\n   )\n\n   ome_tiff_config = PipelineConfig(\n       source_bindings_config=SourceBindingsConfig(\n           bindings=(bind_file(\"DNA\", \"plate.ome.tif\"),),\n       ),\n   )\n\n   ome_zarr_config = PipelineConfig(\n       source_bindings_config=SourceBindingsConfig(\n           bindings=(bind_file(\"DNA\", \"plate.zarr\"),),\n       ),\n   )\n\n   mixed_store_config = PipelineConfig(\n       source_bindings_config=SourceBindingsConfig(\n           bindings=(\n               bind_file(\"DNA\", \"plate.zarr\"),\n               bind_file(\"Brightfield\", \"brightfield.tif\"),\n               bind_file(\"Mask\", \"labels.png\"),\n           ),\n       ),\n   )\n\n   pipeline_config = mixed_store_config\n\n   pipeline_steps = [\n       FunctionStep(\n           name=\"Normalize DNA\",\n           func=stack_percentile_normalize,\n           processing_config=LazyProcessingConfig(\n               input_source=InputSource.PIPELINE_START,\n           ),\n           source_bindings=LazyStepSourceBindingsConfig(\n               enabled=True,\n               bindings=(NamedSourceBinding(alias=\"DNA\"),),\n           ),\n       ),\n   ]\n\nAfter applying the code, initialize the selected plate normally with auto-\ndetection. OpenHCS first chooses the native, Bio-Formats/store, or arbitrary-\nfolder ingestion owner, then resolves every binding over the planes that owner\npublished. CZI and embedded OME metadata require the Bio-Formats runtime included\nby an OpenHCS installation that enables those formats. Do not force a CZI or OME\ncontainer through ``SourceBindingsHandler`` when its structured decoder is\nmissing or unhealthy; repair that decoder instead.\n","selected_section_id":"executable-code-mode-declarations","truncated":false,"max_chars":20000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_53","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"identity passthrough","limit":20,"compact_signatures":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_53","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"identity passthrough","limit":20,"compact_signatures":true},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_per_parent\",\n      \"function_id\": \"openhcs:cellprofiler_split_or_merge_objects_per_parent\",\n      \"name\": \"split_or_merge_objects_per_parent\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"split_or_merge_objects_per_parent(operation, merge_method, output_object_type, distance_threshold, ...)\",\n      \"summary\": \"Merge child objects through the declared parent-object input.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.manual_objects.identify_objects_manually\",\n      \"function_id\": \"openhcs:cellprofiler_identify_objects_manually\",\n      \"name\": \"identify_objects_manually\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.manual_objects\",\n      \"library\": \"openhcs\",\n      \"signature\": \"identify_objects_manually(labels_input=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Placeholder for manual object identification.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    }\n  ],\n  \"total\": 3,\n  \"limit\": 20,\n  \"query\": \"identity passthrough\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.cellprofiler.morphology.split_or_merge_objects_per_parent","function_id":"openhcs:cellprofiler_split_or_merge_objects_per_parent","name":"split_or_merge_objects_per_parent","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"split_or_merge_objects_per_parent(operation, merge_method, output_object_type, distance_threshold, ...)","summary":"Merge child objects through the declared parent-object input.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.manual_objects.identify_objects_manually","function_id":"openhcs:cellprofiler_identify_objects_manually","name":"identify_objects_manually","module":"openhcs.processing.backends.cellprofiler.manual_objects","library":"openhcs","signature":"identify_objects_manually(labels_input=None, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Placeholder for manual object identification.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index, illumination, cell_body, outgrowth, ...)","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]}],"total":3,"limit":20,"query":"identity passthrough","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_54","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","base_revision_token":"cb6c13fc818b1758be085cc1d98abe86cd1b303fb99e35ebfcae1f24372e4027","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import (\n    NeuronCytoIICrossoverInputs,\n    build_neuroncyto_ii_crossover_pipeline,\n)\ninputs = NeuronCytoIICrossoverInputs(\n    plate_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"),\n    output_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n    viewer_port=5613,\n)\npipeline_config, pipeline_steps = build_neuroncyto_ii_crossover_pipeline(inputs)\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_54","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","base_revision_token":"cb6c13fc818b1758be085cc1d98abe86cd1b303fb99e35ebfcae1f24372e4027","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import (\n    NeuronCytoIICrossoverInputs,\n    build_neuroncyto_ii_crossover_pipeline,\n)\ninputs = NeuronCytoIICrossoverInputs(\n    plate_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"),\n    output_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n    viewer_port=5613,\n)\npipeline_config, pipeline_steps = build_neuroncyto_ii_crossover_pipeline(inputs)\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"cannot import name 'build_neuroncyto_ii_crossover_pipeline' from 'openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth' (/home/ts/code/projects/openhcs/openhcs/processing/presets/pipelines/neuroncyto_ii_crossover_neurite_outgrowth.py)\",\n      \"hint\": null,\n      \"exception_type\": \"ImportError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"cannot import name 'build_neuroncyto_ii_crossover_pipeline' from 'openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth' (/home/ts/code/projects/openhcs/openhcs/processing/presets/pipelines/neuroncyto_ii_crossover_neurite_outgrowth.py)","hint":null,"exception_type":"ImportError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_55","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import (\n    NeuronCytoIICrossoverInputs,\n    build_neuroncyto_ii_crossover_neurite_pipeline,\n)\ninputs = NeuronCytoIICrossoverInputs(\n    plate_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"),\n    output_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n    viewer_port=5613,\n)\npipeline_config, pipeline_steps = build_neuroncyto_ii_crossover_neurite_pipeline(inputs)\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_55","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import (\n    NeuronCytoIICrossoverInputs,\n    build_neuroncyto_ii_crossover_neurite_pipeline,\n)\ninputs = NeuronCytoIICrossoverInputs(\n    plate_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"),\n    output_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n    viewer_port=5613,\n)\npipeline_config, pipeline_steps = build_neuroncyto_ii_crossover_neurite_pipeline(inputs)\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"cannot import name 'build_neuroncyto_ii_crossover_neurite_pipeline' from 'openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth' (/home/ts/code/projects/openhcs/openhcs/processing/presets/pipelines/neuroncyto_ii_crossover_neurite_outgrowth.py)\",\n      \"hint\": null,\n      \"exception_type\": \"ImportError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"cannot import name 'build_neuroncyto_ii_crossover_neurite_pipeline' from 'openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth' (/home/ts/code/projects/openhcs/openhcs/processing/presets/pipelines/neuroncyto_ii_crossover_neurite_outgrowth.py)","hint":null,"exception_type":"ImportError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_56","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(\n    session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"),\n    source_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"),\n)\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline_steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_56","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(\n    session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"),\n    source_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"),\n)\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline_steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"neuroncyto_ii_crossover_demo_contribution() got an unexpected keyword argument 'source_path'\",\n      \"hint\": null,\n      \"exception_type\": \"TypeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"neuroncyto_ii_crossover_demo_contribution() got an unexpected keyword argument 'source_path'","hint":null,"exception_type":"TypeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_57","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(\n    session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"),\n)\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline_steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_57","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(\n    session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"),\n)\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline_steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"Pipeline code must define 'pipeline_config' and 'pipeline_steps'.\",\n      \"hint\": null,\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"Pipeline code must define 'pipeline_config' and 'pipeline_steps'.","hint":null,"exception_type":"ValueError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_58","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\npipeline_config, pipeline_steps = neuroncyto_ii_crossover_demo_contribution(\n    session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"),\n)\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_58","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\npipeline_config, pipeline_steps = neuroncyto_ii_crossover_demo_contribution(\n    session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"),\n)\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"cannot unpack non-iterable PipelineDemoContribution object\",\n      \"hint\": null,\n      \"exception_type\": \"TypeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"cannot unpack non-iterable PipelineDemoContribution object","hint":null,"exception_type":"TypeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_59","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution pipeline_config pipeline_steps build_pipeline"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_59","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution pipeline_config pipeline_steps build_pipeline"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"PipelineDemoContribution pipeline_config pipeline_steps build_pipeline\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 941,\n      \"snippet\": \"return pipeline_config, pipeline_steps\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"pipelinedemocontribution\",\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_architecture_quick_start\",\n        \"title\": \"OpenHCS architecture quick start\",\n        \"summary\": \"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.\",\n        \"source_path\": \"docs/source/architecture/quick_start.rst\",\n        \"tags\": [\n          \"architecture quick start\",\n          \"first use\",\n          \"MCP quick start\",\n          \"execution flow\",\n          \"FunctionStep\",\n          \"function patterns\",\n          \"variable components\",\n          \"group_by\",\n          \"ProcessingContract\",\n          \"artifacts\",\n          \"CellProfiler semantics\",\n          \"source bindings\",\n          \"unsupported microscope\",\n          \"virtual workspace\",\n          \"Official30\",\n          \"compile before execute\"\n        ],\n        \"section_count\": 10\n      },\n      \"section\": {\n        \"section_id\": \"the-public-declaration-boundary\",\n        \"title\": \"The public declaration boundary\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 33,\n          \"end_line\": 89\n        }\n      },\n      \"line_number\": 74,\n      \"snippet\": \"pipeline_config = PipelineConfig()\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_architecture_quick_start\",\n        \"title\": \"OpenHCS architecture quick start\",\n        \"summary\": \"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.\",\n        \"source_path\": \"docs/source/architecture/quick_start.rst\",\n        \"tags\": [\n          \"architecture quick start\",\n          \"first use\",\n          \"MCP quick start\",\n          \"execution flow\",\n          \"FunctionStep\",\n          \"function patterns\",\n          \"variable components\",\n          \"group_by\",\n          \"ProcessingContract\",\n          \"artifacts\",\n          \"CellProfiler semantics\",\n          \"source bindings\",\n          \"unsupported microscope\",\n          \"virtual workspace\",\n          \"Official30\",\n          \"compile before execute\"\n        ],\n        \"section_count\": 10\n      },\n      \"section\": {\n        \"section_id\": \"first-mcp-session\",\n        \"title\": \"First MCP session\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 90,\n          \"end_line\": 127\n        }\n      },\n      \"line_number\": 125,\n      \"snippet\": \"``pipeline_config`` and ``pipeline_steps`` pair. The corpus contains 30 such\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_architecture_quick_start\",\n        \"title\": \"OpenHCS architecture quick start\",\n        \"summary\": \"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.\",\n        \"source_path\": \"docs/source/architecture/quick_start.rst\",\n        \"tags\": [\n          \"architecture quick start\",\n          \"first use\",\n          \"MCP quick start\",\n          \"execution flow\",\n          \"FunctionStep\",\n          \"function patterns\",\n          \"variable components\",\n          \"group_by\",\n          \"ProcessingContract\",\n          \"artifacts\",\n          \"CellProfiler semantics\",\n          \"source bindings\",\n          \"unsupported microscope\",\n          \"virtual workspace\",\n          \"Official30\",\n          \"compile before execute\"\n        ],\n        \"section_count\": 10\n      },\n      \"section\": {\n        \"section_id\": \"cellprofiler-pipelines\",\n        \"title\": \"CellProfiler pipelines\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 128,\n          \"end_line\": 154\n        }\n      },\n      \"line_number\": 139,\n      \"snippet\": \"pipeline_steps, pipeline_config = import_cellprofiler_pipeline(\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_architecture_quick_start\",\n        \"title\": \"OpenHCS architecture quick start\",\n        \"summary\": \"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.\",\n        \"source_path\": \"docs/source/architecture/quick_start.rst\",\n        \"tags\": [\n          \"architecture quick start\",\n          \"first use\",\n          \"MCP quick start\",\n          \"execution flow\",\n          \"FunctionStep\",\n          \"function patterns\",\n          \"variable components\",\n          \"group_by\",\n          \"ProcessingContract\",\n          \"artifacts\",\n          \"CellProfiler semantics\",\n          \"source bindings\",\n          \"unsupported microscope\",\n          \"virtual workspace\",\n          \"Official30\",\n          \"compile before execute\"\n        ],\n        \"section_count\": 10\n      },\n      \"section\": {\n        \"section_id\": \"unsupported-microscope-folders\",\n        \"title\": \"Unsupported microscope folders\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 177,\n          \"end_line\": 276\n        }\n      },\n      \"line_number\": 224,\n      \"snippet\": \"pipeline_config = PipelineConfig(\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 1111,\n          \"end_line\": 1233\n        }\n      },\n      \"line_number\": 1231,\n      \"snippet\": \"pipeline_config, pipeline_steps = build_loose_operaphenix_neurite_metaxpress_pipeline(\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"thirty-complete-imported-pipelines\",\n        \"title\": \"Thirty complete imported pipelines\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 9,\n          \"end_line\": 23\n        }\n      },\n      \"line_number\": 15,\n      \"snippet\": \"``examplehuman-openhcs-python`` defines both ``pipeline_config`` and\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_basic_interface\",\n        \"title\": \"OpenHCS basic interface\",\n        \"summary\": \"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\",\n        \"source_path\": \"docs/source/guide_for_biologists/basic_interface.rst\",\n        \"tags\": [\n          \"GUI\",\n          \"plate manager\",\n          \"pipeline editor\",\n          \"image browser\",\n          \"metadata\"\n        ],\n        \"section_count\": 8\n      },\n      \"section\": {\n        \"section_id\": \"pipeline-editor\",\n        \"title\": \"Pipeline Editor\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 42,\n          \"end_line\": 55\n        }\n      },\n      \"line_number\": 51,\n      \"snippet\": \"``pipeline_config`` plus ``pipeline_steps``. An individual step or config editor\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_configuration_reference\",\n        \"title\": \"OpenHCS configuration reference\",\n        \"summary\": \"Expert map of GlobalPipelineConfig, generated lazy PipelineConfig overrides, step-local nested configs, ObjectState inheritance, and the processing, source, storage, materialization, viewer, analysis, and metadata config families.\",\n        \"source_path\": \"docs/source/guide_for_biologists/configuration_reference.rst\",\n        \"tags\": [\n          \"configuration\",\n          \"GlobalPipelineConfig\",\n          \"PipelineConfig\",\n          \"LazyConfig\",\n          \"ObjectState inheritance\",\n          \"ProcessingConfig\",\n          \"SourceBindingsConfig\",\n          \"DtypeConfig\",\n          \"VFSConfig\",\n          \"ZarrConfig\",\n          \"PathPlanningConfig\",\n          \"StepMaterializationConfig\",\n          \"SequentialProcessingConfig\",\n          \"NapariStreamingConfig\",\n          \"FijiStreamingConfig\",\n          \"AnalysisConsolidationConfig\",\n          \"ExperimentalAnalysisConfig\"\n        ],\n        \"section_count\": 10\n      },\n      \"section\": {\n        \"section_id\": \"how-scopes-interact\",\n        \"title\": \"How scopes interact\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 174,\n          \"end_line\": 188\n        }\n      },\n      \"line_number\": 185,\n      \"snippet\": \"``pipeline_config`` plus ``pipeline_steps``. In a running desktop session, apply\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_image_sources\",\n        \"title\": \"Loading and naming image sources\",\n        \"summary\": \"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.\",\n        \"source_path\": \"docs/source/guide_for_biologists/image_sources.rst\",\n        \"tags\": [\n          \"loading CZI\",\n          \"CZI\",\n          \"OME-TIFF\",\n          \"OME-Zarr\",\n          \"NGFF\",\n          \"TIFF\",\n          \"PNG\",\n          \"mixed image stores\",\n          \"named source bindings\",\n          \"named channels\",\n          \"component metadata\",\n          \"well site channel Z timepoint\",\n          \"source provenance\"\n        ],\n        \"section_count\": 7\n      },\n      \"section\": {\n        \"section_id\": \"executable-code-mode-declarations\",\n        \"title\": \"Executable code-mode declarations\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 180,\n          \"end_line\": 293\n        }\n      },\n      \"line_number\": 192,\n      \"snippet\": \"Choose one as ``pipeline_config`` and keep the ``pipeline_steps`` assignment in\",\n      \"score\": 20,\n      \"matched_terms\": [\n        \"pipeline_config\",\n        \"pipeline_steps\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"PipelineDemoContribution pipeline_config pipeline_steps build_pipeline","hits":[{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":941,"snippet":"return pipeline_config, pipeline_steps","score":30,"matched_terms":["pipelinedemocontribution","pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_architecture_quick_start","title":"OpenHCS architecture quick start","summary":"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.","source_path":"docs/source/architecture/quick_start.rst","tags":["architecture quick start","first use","MCP quick start","execution flow","FunctionStep","function patterns","variable components","group_by","ProcessingContract","artifacts","CellProfiler semantics","source bindings","unsupported microscope","virtual workspace","Official30","compile before execute"],"section_count":10},"section":{"section_id":"the-public-declaration-boundary","title":"The public declaration boundary","level":2,"span":{"start_line":33,"end_line":89}},"line_number":74,"snippet":"pipeline_config = PipelineConfig()","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_architecture_quick_start","title":"OpenHCS architecture quick start","summary":"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.","source_path":"docs/source/architecture/quick_start.rst","tags":["architecture quick start","first use","MCP quick start","execution flow","FunctionStep","function patterns","variable components","group_by","ProcessingContract","artifacts","CellProfiler semantics","source bindings","unsupported microscope","virtual workspace","Official30","compile before execute"],"section_count":10},"section":{"section_id":"first-mcp-session","title":"First MCP session","level":2,"span":{"start_line":90,"end_line":127}},"line_number":125,"snippet":"``pipeline_config`` and ``pipeline_steps`` pair. The corpus contains 30 such","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_architecture_quick_start","title":"OpenHCS architecture quick start","summary":"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.","source_path":"docs/source/architecture/quick_start.rst","tags":["architecture quick start","first use","MCP quick start","execution flow","FunctionStep","function patterns","variable components","group_by","ProcessingContract","artifacts","CellProfiler semantics","source bindings","unsupported microscope","virtual workspace","Official30","compile before execute"],"section_count":10},"section":{"section_id":"cellprofiler-pipelines","title":"CellProfiler pipelines","level":2,"span":{"start_line":128,"end_line":154}},"line_number":139,"snippet":"pipeline_steps, pipeline_config = import_cellprofiler_pipeline(","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_architecture_quick_start","title":"OpenHCS architecture quick start","summary":"Front-door OpenHCS architecture and MCP route covering the public PipelineConfig plus FunctionStep model, ObjectState resolution, function patterns, axes and grouping, typed artifacts, CellProfiler translation, generic source bindings, compilation, runtime values, examples, and safe operation.","source_path":"docs/source/architecture/quick_start.rst","tags":["architecture quick start","first use","MCP quick start","execution flow","FunctionStep","function patterns","variable components","group_by","ProcessingContract","artifacts","CellProfiler semantics","source bindings","unsupported microscope","virtual workspace","Official30","compile before execute"],"section_count":10},"section":{"section_id":"unsupported-microscope-folders","title":"Unsupported microscope folders","level":2,"span":{"start_line":177,"end_line":276}},"line_number":224,"snippet":"pipeline_config = PipelineConfig(","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py","level":2,"span":{"start_line":1111,"end_line":1233}},"line_number":1231,"snippet":"pipeline_config, pipeline_steps = build_loose_operaphenix_neurite_metaxpress_pipeline(","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"thirty-complete-imported-pipelines","title":"Thirty complete imported pipelines","level":2,"span":{"start_line":9,"end_line":23}},"line_number":15,"snippet":"``examplehuman-openhcs-python`` defines both ``pipeline_config`` and","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_basic_interface","title":"OpenHCS basic interface","summary":"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.","source_path":"docs/source/guide_for_biologists/basic_interface.rst","tags":["GUI","plate manager","pipeline editor","image browser","metadata"],"section_count":8},"section":{"section_id":"pipeline-editor","title":"Pipeline Editor","level":2,"span":{"start_line":42,"end_line":55}},"line_number":51,"snippet":"``pipeline_config`` plus ``pipeline_steps``. An individual step or config editor","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_configuration_reference","title":"OpenHCS configuration reference","summary":"Expert map of GlobalPipelineConfig, generated lazy PipelineConfig overrides, step-local nested configs, ObjectState inheritance, and the processing, source, storage, materialization, viewer, analysis, and metadata config families.","source_path":"docs/source/guide_for_biologists/configuration_reference.rst","tags":["configuration","GlobalPipelineConfig","PipelineConfig","LazyConfig","ObjectState inheritance","ProcessingConfig","SourceBindingsConfig","DtypeConfig","VFSConfig","ZarrConfig","PathPlanningConfig","StepMaterializationConfig","SequentialProcessingConfig","NapariStreamingConfig","FijiStreamingConfig","AnalysisConsolidationConfig","ExperimentalAnalysisConfig"],"section_count":10},"section":{"section_id":"how-scopes-interact","title":"How scopes interact","level":2,"span":{"start_line":174,"end_line":188}},"line_number":185,"snippet":"``pipeline_config`` plus ``pipeline_steps``. In a running desktop session, apply","score":20,"matched_terms":["pipeline_config","pipeline_steps"]},{"document":{"document_id":"openhcs_image_sources","title":"Loading and naming image sources","summary":"Biologist-facing guide to loading CZI, OME-TIFF, OME-Zarr/NGFF, TIFF, PNG, and mixed image stores with named source bindings and exact well, site, channel, Z, and timepoint metadata.","source_path":"docs/source/guide_for_biologists/image_sources.rst","tags":["loading CZI","CZI","OME-TIFF","OME-Zarr","NGFF","TIFF","PNG","mixed image stores","named source bindings","named channels","component metadata","well site channel Z timepoint","source provenance"],"section_count":7},"section":{"section_id":"executable-code-mode-declarations","title":"Executable code-mode declarations","level":2,"span":{"start_line":180,"end_line":293}},"line_number":192,"snippet":"Choose one as ``pipeline_config`` and keep the ``pipeline_steps`` assignment in","score":20,"matched_terms":["pipeline_config","pipeline_steps"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_60","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution build_pipeline"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_60","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution build_pipeline"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"PipelineDemoContribution build_pipeline\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 705,\n      \"snippet\": \"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution\",\n      \"score\": 10,\n      \"matched_terms\": [\n        \"pipelinedemocontribution\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"PipelineDemoContribution build_pipeline","hits":[{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":705,"snippet":"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution","score":10,"matched_terms":["pipelinedemocontribution"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_61","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution pipeline_factory"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_61","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution pipeline_factory"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"PipelineDemoContribution pipeline_factory\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 705,\n      \"snippet\": \"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution\",\n      \"score\": 10,\n      \"matched_terms\": [\n        \"pipelinedemocontribution\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"PipelineDemoContribution pipeline_factory","hits":[{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":705,"snippet":"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution","score":10,"matched_terms":["pipelinedemocontribution"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_62","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution config_builder"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_62","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution config_builder"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"PipelineDemoContribution config_builder\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 705,\n      \"snippet\": \"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution\",\n      \"score\": 10,\n      \"matched_terms\": [\n        \"pipelinedemocontribution\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"PipelineDemoContribution config_builder","hits":[{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":705,"snippet":"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution","score":10,"matched_terms":["pipelinedemocontribution"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_63","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution demo_id title"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_63","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"PipelineDemoContribution demo_id title"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"PipelineDemoContribution demo_id title\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 705,\n      \"snippet\": \"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution\",\n      \"score\": 280,\n      \"matched_terms\": [\n        \"pipelinedemocontribution\",\n        \"demo_id\",\n        \"title\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"master-multi-plate-lab-meeting-showcase\",\n        \"title\": \"Master multi-plate lab-meeting showcase\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 98,\n          \"end_line\": 167\n        }\n      },\n      \"line_number\": 163,\n      \"snippet\": \"path, pipeline config, steps, title, stable demo id, and optional preparation\",\n      \"score\": 10,\n      \"matched_terms\": [\n        \"title\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_streaming_boundary_and_wrappers\",\n        \"title\": \"OpenHCS streaming boundary and wrappers\",\n        \"summary\": \"Canonical streaming boundary for Napari and Fiji adapters, typed payload axes, viewer process reuse, ZMQRuntime lifecycle, and runtime wrappers.\",\n        \"source_path\": \"docs/source/architecture/streaming_boundary_and_wrappers.rst\",\n        \"tags\": [\n          \"streaming\",\n          \"Napari\",\n          \"Fiji\",\n          \"ZMQRuntime\",\n          \"viewer\",\n          \"payload\"\n        ],\n        \"section_count\": 7\n      },\n      \"section\": {\n        \"section_id\": \"compiled-streaming-path\",\n        \"title\": \"Compiled streaming path\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 28,\n          \"end_line\": 77\n        }\n      },\n      \"line_number\": 76,\n      \"snippet\": \"recreate its projection key with filenames, titles, or local tuple conventions.\",\n      \"score\": 10,\n      \"matched_terms\": [\n        \"title\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"PipelineDemoContribution demo_id title","hits":[{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":705,"snippet":"from openhcs.processing.presets.demo_contribution import PipelineDemoContribution","score":280,"matched_terms":["pipelinedemocontribution","demo_id","title"]},{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"master-multi-plate-lab-meeting-showcase","title":"Master multi-plate lab-meeting showcase","level":2,"span":{"start_line":98,"end_line":167}},"line_number":163,"snippet":"path, pipeline config, steps, title, stable demo id, and optional preparation","score":10,"matched_terms":["title"]},{"document":{"document_id":"openhcs_streaming_boundary_and_wrappers","title":"OpenHCS streaming boundary and wrappers","summary":"Canonical streaming boundary for Napari and Fiji adapters, typed payload axes, viewer process reuse, ZMQRuntime lifecycle, and runtime wrappers.","source_path":"docs/source/architecture/streaming_boundary_and_wrappers.rst","tags":["streaming","Napari","Fiji","ZMQRuntime","viewer","payload"],"section_count":7},"section":{"section_id":"compiled-streaming-path","title":"Compiled streaming path","level":2,"span":{"start_line":28,"end_line":77}},"line_number":76,"snippet":"recreate its projection key with filenames, titles, or local tuple conventions.","score":10,"matched_terms":["title"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_64","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.config\npipeline_steps = contribution.steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_64","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.config\npipeline_steps = contribution.steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'config'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'config'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_65","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline\npipeline_steps = contribution.steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_65","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline\npipeline_steps = contribution.steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'pipeline'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'pipeline'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_66","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_66","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'steps'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'steps'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_67","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.config\npipeline_steps = contribution.pipeline_steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_67","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.config\npipeline_steps = contribution.pipeline_steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'config'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'config'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_68","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.function_steps\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_68","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.function_steps\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'function_steps'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'function_steps'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_69","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.step_list\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_69","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.step_list\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'step_list'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'step_list'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_70","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_70","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'pipeline'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'pipeline'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_71","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline_document\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_71","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","source":"from pathlib import Path\nfrom openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth import neuroncyto_ii_crossover_demo_contribution\ncontribution = neuroncyto_ii_crossover_demo_contribution(session_root=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13\"))\npipeline_config = contribution.pipeline_config\npipeline_steps = contribution.pipeline_document\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"window_code_document:pipeline_editor\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"'PipelineDemoContribution' object has no attribute 'pipeline_document'\",\n      \"hint\": null,\n      \"exception_type\": \"AttributeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"window_code_document:pipeline_editor","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"'PipelineDemoContribution' object has no attribute 'pipeline_document'","hint":null,"exception_type":"AttributeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_72","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_complete_examples","section_id":"master-multi-plate-lab-meeting-showcase","max_chars":16000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_72","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_complete_examples","section_id":"master-multi-plate-lab-meeting-showcase","max_chars":16000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"document\": {\n    \"document_id\": \"openhcs_complete_examples\",\n    \"title\": \"OpenHCS complete examples\",\n    \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n    \"source_path\": \"docs/source/guides/complete_examples.rst\",\n    \"tags\": [\n      \"complete examples\",\n      \"working examples\",\n      \"FunctionStep\",\n      \"dictionary pattern\",\n      \"GPU\",\n      \"zarr\",\n      \"stitching\",\n      \"cell counting\",\n      \"neurite tracing\",\n      \"production examples\",\n      \"cell analysis\",\n      \"current examples\",\n      \"large dataset\",\n      \"orchestrator\"\n    ],\n    \"section_count\": 9\n  },\n  \"sections\": [\n    {\n      \"section_id\": \"current-examples\",\n      \"title\": \"Current examples\",\n      \"level\": 1,\n      \"span\": {\n        \"start_line\": 1,\n        \"end_line\": 182\n      }\n    },\n    {\n      \"section_id\": \"thirty-complete-imported-pipelines\",\n      \"title\": \"Thirty complete imported pipelines\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 9,\n        \"end_line\": 23\n      }\n    },\n    {\n      \"section_id\": \"minimal-declaration\",\n      \"title\": \"Minimal declaration\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 24,\n        \"end_line\": 46\n      }\n    },\n    {\n      \"section_id\": \"compilation\",\n      \"title\": \"Compilation\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 47,\n        \"end_line\": 59\n      }\n    },\n    {\n      \"section_id\": \"typed-native-presets\",\n      \"title\": \"Typed native presets\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 60,\n        \"end_line\": 69\n      }\n    },\n    {\n      \"section_id\": \"loose-opera-phenix-neurite-outgrowth\",\n      \"title\": \"Loose Opera Phenix neurite outgrowth\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 70,\n        \"end_line\": 97\n      }\n    },\n    {\n      \"section_id\": \"master-multi-plate-lab-meeting-showcase\",\n      \"title\": \"Master multi-plate lab-meeting showcase\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 98,\n        \"end_line\": 167\n      }\n    },\n    {\n      \"section_id\": \"cellprofiler-import\",\n      \"title\": \"CellProfiler import\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 168,\n        \"end_line\": 175\n      }\n    },\n    {\n      \"section_id\": \"avoid-obsolete-examples\",\n      \"title\": \"Avoid obsolete examples\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 176,\n        \"end_line\": 182\n      }\n    }\n  ],\n  \"content\": \"Master multi-plate lab-meeting showcase\\n---------------------------------------\\n\\n``scripts/master_multi_plate_demo.py`` composes every declaration returned by\\n``scripts.mcp_assay_showcase.scenario_blueprints`` into one Plate Manager\\ndocument. It generates the bounded plates, registers every row in the running\\ndesktop UI, then selects and initializes, compiles, and runs each plate in\\nsequence. Each plate has a deterministic dedicated Napari endpoint beginning at\\nport 5900. Its Napari window is framed with the exact scope accent projected by\\nthe running Plate Manager, so the viewer can be matched to its plate and config\\nwindows without a second color map.\\n\\nFirst inspect the complete inventory and generated document without touching a\\nrunning UI:\\n\\n.. code-block:: bash\\n\\n   .venv/bin/python scripts/master_multi_plate_demo.py --dry-run\\n\\nFor the live showcase, start the OpenHCS desktop UI and pass its bridge\\ndescriptor explicitly:\\n\\n.. code-block:: bash\\n\\n   .venv/bin/python scripts/master_multi_plate_demo.py \\\\\\n       --descriptor-file-path /path/to/running-ui-bridge.json\\n\\nThe complete built-in inventory contains seven assay stories. The runner checks\\neach data and control endpoint before launch and reports a collision; it does\\nnot silently move a plate to another port. A compile or runtime failure is\\nrecorded for that plate and the next plate still runs. The summary and every MCP\\ncommand response are written under ``mcp_outputs/master_multi_plate_demo``.\\n\\nAdditional demos join only through an explicit contributor factory. For the\\nNeuronCyto II crossover example, point to the separately downloaded official\\narchive and name its preset-owned contributor:\\n\\n.. code-block:: bash\\n\\n   export OPENHCS_NEURONCYTO_II_TEST_ARCHIVE=/path/to/Testing\\\\ image.zip\\n   .venv/bin/python scripts/master_multi_plate_demo.py \\\\\\n       --descriptor-file-path /path/to/running-ui-bridge.json \\\\\\n       --contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution\\n\\nFor the varied eight-plate lab-meeting sequence from a source checkout,\\nexplicitly retain five curated built-ins, add the two repository-only\\nOfficial30 stories, and add NeuronCyto II:\\n\\n.. code-block:: bash\\n\\n   export OPENHCS_NEURONCYTO_II_TEST_ARCHIVE=/path/to/Testing\\\\ image.zip\\n   .venv/bin/python scripts/master_multi_plate_demo.py \\\\\\n       --descriptor-file-path /path/to/running-ui-bridge.json \\\\\\n       --exclude-demo primary_object_segmentation \\\\\\n       --exclude-demo nuclear_morphology \\\\\\n       --contributor benchmark.demos.official30_lab_meeting:official30_lab_meeting_demo_contributions \\\\\\n       --contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution\\n\\nThat source-checkout-only composition uses ports 5900 through 5907: five\\ncurated built-in assays, Comet and wound-closure from Official30, and\\nNeuronCyto II. The benchmark package and Official30 manifest are not installed\\nwith the OpenHCS wheel. The exclusions and contributors are command-line\\nchoices, not a hidden alternate inventory.\\n\\nContributor factories receive ``session_root=Path`` and return a declared plate\\npath, pipeline config, steps, title, stable demo id, and optional preparation\\ncallable.\\nThe master still owns port assignment, UI registration, viewer launch, and\\nsequential execution; contributors do not duplicate that machinery.\\n\",\n  \"selected_section_id\": \"master-multi-plate-lab-meeting-showcase\",\n  \"truncated\": false,\n  \"max_chars\": 16000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"sections":[{"section_id":"current-examples","title":"Current examples","level":1,"span":{"start_line":1,"end_line":182}},{"section_id":"thirty-complete-imported-pipelines","title":"Thirty complete imported pipelines","level":2,"span":{"start_line":9,"end_line":23}},{"section_id":"minimal-declaration","title":"Minimal declaration","level":2,"span":{"start_line":24,"end_line":46}},{"section_id":"compilation","title":"Compilation","level":2,"span":{"start_line":47,"end_line":59}},{"section_id":"typed-native-presets","title":"Typed native presets","level":2,"span":{"start_line":60,"end_line":69}},{"section_id":"loose-opera-phenix-neurite-outgrowth","title":"Loose Opera Phenix neurite outgrowth","level":2,"span":{"start_line":70,"end_line":97}},{"section_id":"master-multi-plate-lab-meeting-showcase","title":"Master multi-plate lab-meeting showcase","level":2,"span":{"start_line":98,"end_line":167}},{"section_id":"cellprofiler-import","title":"CellProfiler import","level":2,"span":{"start_line":168,"end_line":175}},{"section_id":"avoid-obsolete-examples","title":"Avoid obsolete examples","level":2,"span":{"start_line":176,"end_line":182}}],"content":"Master multi-plate lab-meeting showcase\n---------------------------------------\n\n``scripts/master_multi_plate_demo.py`` composes every declaration returned by\n``scripts.mcp_assay_showcase.scenario_blueprints`` into one Plate Manager\ndocument. It generates the bounded plates, registers every row in the running\ndesktop UI, then selects and initializes, compiles, and runs each plate in\nsequence. Each plate has a deterministic dedicated Napari endpoint beginning at\nport 5900. Its Napari window is framed with the exact scope accent projected by\nthe running Plate Manager, so the viewer can be matched to its plate and config\nwindows without a second color map.\n\nFirst inspect the complete inventory and generated document without touching a\nrunning UI:\n\n.. code-block:: bash\n\n   .venv/bin/python scripts/master_multi_plate_demo.py --dry-run\n\nFor the live showcase, start the OpenHCS desktop UI and pass its bridge\ndescriptor explicitly:\n\n.. code-block:: bash\n\n   .venv/bin/python scripts/master_multi_plate_demo.py \\\n       --descriptor-file-path /path/to/running-ui-bridge.json\n\nThe complete built-in inventory contains seven assay stories. The runner checks\neach data and control endpoint before launch and reports a collision; it does\nnot silently move a plate to another port. A compile or runtime failure is\nrecorded for that plate and the next plate still runs. The summary and every MCP\ncommand response are written under ``mcp_outputs/master_multi_plate_demo``.\n\nAdditional demos join only through an explicit contributor factory. For the\nNeuronCyto II crossover example, point to the separately downloaded official\narchive and name its preset-owned contributor:\n\n.. code-block:: bash\n\n   export OPENHCS_NEURONCYTO_II_TEST_ARCHIVE=/path/to/Testing\\ image.zip\n   .venv/bin/python scripts/master_multi_plate_demo.py \\\n       --descriptor-file-path /path/to/running-ui-bridge.json \\\n       --contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution\n\nFor the varied eight-plate lab-meeting sequence from a source checkout,\nexplicitly retain five curated built-ins, add the two repository-only\nOfficial30 stories, and add NeuronCyto II:\n\n.. code-block:: bash\n\n   export OPENHCS_NEURONCYTO_II_TEST_ARCHIVE=/path/to/Testing\\ image.zip\n   .venv/bin/python scripts/master_multi_plate_demo.py \\\n       --descriptor-file-path /path/to/running-ui-bridge.json \\\n       --exclude-demo primary_object_segmentation \\\n       --exclude-demo nuclear_morphology \\\n       --contributor benchmark.demos.official30_lab_meeting:official30_lab_meeting_demo_contributions \\\n       --contributor openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution\n\nThat source-checkout-only composition uses ports 5900 through 5907: five\ncurated built-in assays, Comet and wound-closure from Official30, and\nNeuronCyto II. The benchmark package and Official30 manifest are not installed\nwith the OpenHCS wheel. The exclusions and contributors are command-line\nchoices, not a hidden alternate inventory.\n\nContributor factories receive ``session_root=Path`` and return a declared plate\npath, pipeline config, steps, title, stable demo id, and optional preparation\ncallable.\nThe master still owns port assignment, UI registration, viewer launch, and\nsequential execution; contributors do not duplicate that machinery.\n","selected_section_id":"master-multi-plate-lab-meeting-showcase","truncated":false,"max_chars":16000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_73","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_internal_symbol","arguments":{"symbol_id":"openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_73","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_internal_symbol","arguments":{"symbol_id":"openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_describe_internal_symbol\",\n  \"errors\": [\n    {\n      \"code\": \"architecture_symbol_not_curated\",\n      \"message\": \"'openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution' is not a symbol_id in OpenHCS's curated architecture namespace. Arbitrary Python import paths are not accepted.\",\n      \"hint\": \"Call openhcs_list_architecture_topics to discover the curated topics, then call openhcs_explain_architecture with a returned topic_id to inspect its symbol_ids.\",\n      \"exception_type\": \"ArchitectureSymbolNotCuratedError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_describe_internal_symbol","errors":[{"code":"architecture_symbol_not_curated","message":"'openhcs.processing.presets.pipelines.neuroncyto_ii_crossover_neurite_outgrowth:neuroncyto_ii_crossover_demo_contribution' is not a symbol_id in OpenHCS's curated architecture namespace. Arbitrary Python import paths are not accepted.","hint":"Call openhcs_list_architecture_topics to discover the curated topics, then call openhcs_explain_architecture with a returned topic_id to inspect its symbol_ids.","exception_type":"ArchitectureSymbolNotCuratedError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_74","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_function","arguments":{"function_id":"openhcs:processors_numpy_processor_percentile_normalize","compact_signature":false,"max_doc_chars":8000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_74","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_describe_function","arguments":{"function_id":"openhcs:processors_numpy_processor_percentile_normalize","compact_signature":false,"max_doc_chars":8000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"entry\": {\n    \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.percentile_normalize\",\n    \"function_id\": \"openhcs:processors_numpy_processor_percentile_normalize\",\n    \"name\": \"percentile_normalize\",\n    \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n    \"library\": \"openhcs\",\n    \"signature\": \"percentile_normalize(low_percentile=1.0, high_percentile=99.0, target_min=0.0, target_max=65535.0, *, enabled=True) -> numpy.ndarray\",\n    \"summary\": \"Normalize each plane independently using percentile-based contrast stretching.\",\n    \"backend_tags\": [\n      \"openhcs\",\n      \"processors\",\n      \"numpy_processor\"\n    ]\n  },\n  \"parameters\": [\n    {\n      \"name\": \"image\",\n      \"annotation\": \"ndarray\",\n      \"default_repr\": null,\n      \"required\": false,\n      \"supplied_by\": \"runtime_primary_input\",\n      \"description\": \"Supplied by OpenHCS from the FunctionStep input image payload; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"low_percentile\",\n      \"annotation\": \"typing.Annotated[float, 'Percentile used as the input-range lower endpoint (0 to 100).']\",\n      \"default_repr\": \"1.0\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Percentile used as the input-range lower endpoint (0 to 100).\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"high_percentile\",\n      \"annotation\": \"typing.Annotated[float, 'Percentile used as the input-range upper endpoint (0 to 100).']\",\n      \"default_repr\": \"99.0\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Percentile used as the input-range upper endpoint (0 to 100).\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"target_min\",\n      \"annotation\": \"typing.Annotated[float, \\\"Output intensity assigned to the normalized range's lower endpoint.\\\"]\",\n      \"default_repr\": \"0.0\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Output intensity assigned to the normalized range's lower endpoint.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"target_max\",\n      \"annotation\": \"typing.Annotated[float, \\\"Output intensity assigned to the normalized range's upper endpoint.\\\"]\",\n      \"default_repr\": \"65535.0\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Output intensity assigned to the normalized range's upper endpoint.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"slice_by_slice\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"False\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_parameter\",\n      \"description\": \"bool, optional\\nAdded by the numpy memory decorator. Process 3D arrays slice-by-slice.\\nDefaults to False. Prevents cross-slice contamination. Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"dtype_config\",\n      \"annotation\": \"LazyDtypeConfig\",\n      \"default_repr\": \"LazyDtypeConfig(default_dtype_conversion=<DtypeConversion.NATIVE_OUTPUT: 'native'>)\",\n      \"required\": false,\n      \"supplied_by\": \"runtime_parameter\",\n      \"description\": \"Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    },\n    {\n      \"name\": \"enabled\",\n      \"annotation\": \"bool\",\n      \"default_repr\": \"True\",\n      \"required\": false,\n      \"supplied_by\": \"agent\",\n      \"description\": \"Run this callable or configuration when enabled; skip it when disabled.\",\n      \"enum_import_path\": null,\n      \"enum_members\": [],\n      \"enum_values\": []\n    }\n  ],\n  \"doc\": \"Normalize each plane independently using percentile-based contrast stretching.\\n\\nThe first transported array axis is the declared plane axis, which may be\\nZ, channel, time, or another ``variable_components`` axis. Each plane gets\\nits own percentile endpoints.\\n\\nUse when:\\n    Per-plane contrast must be made comparable for visualization or a\\n    downstream segmentation operation.\\nAvoid when:\\n    Absolute intensity or intensity differences between planes are the\\n    measurement of interest; independent scaling removes those differences.\\nValidate:\\n    Inspect representative raw/normalized pairs for clipping, amplified\\n    noise, and loss of dim structures before using the result downstream.\\n\\nReturns:\\n    Normalized 3D NumPy array of shape (N, Y, X).\\n\\n\\nAdditional Parameters\\n---------------------\\n    slice_by_slice : bool, optional\\n        Added by the numpy memory decorator. Process 3D arrays slice-by-slice.\\n        Defaults to False. Prevents cross-slice contamination.\",\n  \"runtime_contract\": {\n    \"callable_kind\": \"regular\",\n    \"processing_contract\": \"FLEXIBLE\",\n    \"declared_processing_contract\": \"FLEXIBLE\",\n    \"runtime_bound_parameters\": [\n      \"slice_by_slice\"\n    ],\n    \"required_variable_components\": [],\n    \"artifact_inputs\": [],\n    \"artifact_outputs\": [],\n    \"cellprofiler_module\": null,\n    \"source_binding_rule\": null,\n    \"materialization_rule\": null,\n    \"measurement_rule\": null,\n    \"pattern_compatibility_rule\": \"Regular OpenHCS callables may participate in standard FunctionStep callable, tuple, list, or dict patterns subject to compiler validation. Dictionary keys are normalized group identities selected by group_by, may intentionally cover only a subset of available component values, and omit groups that should not be invoked; compilation rejects keys absent from the available component domain.\"\n  },\n  \"doc_truncated\": false,\n  \"doc_chars\": 977,\n  \"max_doc_chars\": 8000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","entry":{"import_path":"openhcs.processing.backends.processors.numpy_processor.percentile_normalize","function_id":"openhcs:processors_numpy_processor_percentile_normalize","name":"percentile_normalize","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"percentile_normalize(low_percentile=1.0, high_percentile=99.0, target_min=0.0, target_max=65535.0, *, enabled=True) -> numpy.ndarray","summary":"Normalize each plane independently using percentile-based contrast stretching.","backend_tags":["openhcs","processors","numpy_processor"]},"parameters":[{"name":"image","annotation":"ndarray","default_repr":null,"required":false,"supplied_by":"runtime_primary_input","description":"Supplied by OpenHCS from the FunctionStep input image payload; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"low_percentile","annotation":"typing.Annotated[float, 'Percentile used as the input-range lower endpoint (0 to 100).']","default_repr":"1.0","required":false,"supplied_by":"agent","description":"Percentile used as the input-range lower endpoint (0 to 100).","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"high_percentile","annotation":"typing.Annotated[float, 'Percentile used as the input-range upper endpoint (0 to 100).']","default_repr":"99.0","required":false,"supplied_by":"agent","description":"Percentile used as the input-range upper endpoint (0 to 100).","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"target_min","annotation":"typing.Annotated[float, \"Output intensity assigned to the normalized range's lower endpoint.\"]","default_repr":"0.0","required":false,"supplied_by":"agent","description":"Output intensity assigned to the normalized range's lower endpoint.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"target_max","annotation":"typing.Annotated[float, \"Output intensity assigned to the normalized range's upper endpoint.\"]","default_repr":"65535.0","required":false,"supplied_by":"agent","description":"Output intensity assigned to the normalized range's upper endpoint.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"slice_by_slice","annotation":"bool","default_repr":"False","required":false,"supplied_by":"runtime_parameter","description":"bool, optional\nAdded by the numpy memory decorator. Process 3D arrays slice-by-slice.\nDefaults to False. Prevents cross-slice contamination. Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"dtype_config","annotation":"LazyDtypeConfig","default_repr":"LazyDtypeConfig(default_dtype_conversion=<DtypeConversion.NATIVE_OUTPUT: 'native'>)","required":false,"supplied_by":"runtime_parameter","description":"Supplied by OpenHCS runtime execution infrastructure; do not pass this as a function kwarg.","enum_import_path":null,"enum_members":[],"enum_values":[]},{"name":"enabled","annotation":"bool","default_repr":"True","required":false,"supplied_by":"agent","description":"Run this callable or configuration when enabled; skip it when disabled.","enum_import_path":null,"enum_members":[],"enum_values":[]}],"doc":"Normalize each plane independently using percentile-based contrast stretching.\n\nThe first transported array axis is the declared plane axis, which may be\nZ, channel, time, or another ``variable_components`` axis. Each plane gets\nits own percentile endpoints.\n\nUse when:\n    Per-plane contrast must be made comparable for visualization or a\n    downstream segmentation operation.\nAvoid when:\n    Absolute intensity or intensity differences between planes are the\n    measurement of interest; independent scaling removes those differences.\nValidate:\n    Inspect representative raw/normalized pairs for clipping, amplified\n    noise, and loss of dim structures before using the result downstream.\n\nReturns:\n    Normalized 3D NumPy array of shape (N, Y, X).\n\n\nAdditional Parameters\n---------------------\n    slice_by_slice : bool, optional\n        Added by the numpy memory decorator. Process 3D arrays slice-by-slice.\n        Defaults to False. Prevents cross-slice contamination.","runtime_contract":{"callable_kind":"regular","processing_contract":"FLEXIBLE","declared_processing_contract":"FLEXIBLE","runtime_bound_parameters":["slice_by_slice"],"required_variable_components":[],"artifact_inputs":[],"artifact_outputs":[],"cellprofiler_module":null,"source_binding_rule":null,"materialization_rule":null,"measurement_rule":null,"pattern_compatibility_rule":"Regular OpenHCS callables may participate in standard FunctionStep callable, tuple, list, or dict patterns subject to compiler validation. Dictionary keys are normalized group identities selected by group_by, may intentionally cover only a subset of available component values, and omit groups that should not be invoked; compilation rejects keys absent from the available component domain."},"doc_truncated":false,"doc_chars":977,"max_doc_chars":8000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_75","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_code_ui_editing","max_chars":20000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_75","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_knowledge_document","arguments":{"document_id":"openhcs_code_ui_editing","max_chars":20000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"document\": {\n    \"document_id\": \"openhcs_code_ui_editing\",\n    \"title\": \"OpenHCS code and UI editing\",\n    \"summary\": \"User workflow for selecting the owning Code document, clean versus resolved source, revision-safe validation and apply, dirty markers, save behavior, snapshots, and recovery.\",\n    \"source_path\": \"docs/source/user_guide/code_ui_editing.rst\",\n    \"tags\": [\n      \"code mode\",\n      \"UI editing\",\n      \"PipelineDocument\",\n      \"clean source\",\n      \"resolved source\",\n      \"revision token\",\n      \"dirty markers\",\n      \"snapshots\",\n      \"undo\"\n    ],\n    \"section_count\": 3\n  },\n  \"sections\": [\n    {\n      \"section_id\": \"code-and-ui-editing\",\n      \"title\": \"Code and UI editing\",\n      \"level\": 1,\n      \"span\": {\n        \"start_line\": 1,\n        \"end_line\": 59\n      }\n    },\n    {\n      \"section_id\": \"clean-and-resolved-views\",\n      \"title\": \"Clean and resolved views\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 23,\n        \"end_line\": 30\n      }\n    },\n    {\n      \"section_id\": \"safe-apply-and-recovery\",\n      \"title\": \"Safe apply and recovery\",\n      \"level\": 2,\n      \"span\": {\n        \"start_line\": 31,\n        \"end_line\": 59\n      }\n    }\n  ],\n  \"content\": \"Code and UI editing\\n===================\\n\\nThe desktop forms and generated Python are two projections of the same live\\nObjectState-backed declarations. Pipeline code contains ``PipelineConfig`` and\\n``FunctionStep`` values; it is not a separate GUI model.\\n\\nUse the code view attached to the relevant window or scope. A typical round\\ntrip is:\\n\\n1. edit a pipeline or configuration in the form;\\n2. open its code projection and inspect the generated declarations;\\n3. edit the code and apply it;\\n4. resolve any validation error before the live state is replaced;\\n5. compile again before execution.\\n\\nChoose the document that owns the edited object. Pipeline Editor projects one\\ncomplete ``PipelineDocument``; a step editor projects one ``FunctionStep``; a\\nconfiguration window projects its typed config; Plate Manager projects the\\nmulti-plate aggregate. The available Code controls and MCP document catalog are\\ndiscovered from those nominal owners rather than a copied button list.\\n\\nClean and resolved views\\n------------------------\\n\\nA clean document keeps inherited/default lazy fields sparse, which is normally\\nthe best form to edit and share. A resolved view includes effective inherited\\nvalues for inspection. Do not paste a resolved document back merely to change\\none field: that can turn inherited values into explicit overrides.\\n\\nSafe apply and recovery\\n-----------------------\\n\\nCode-document reads return a revision token. Validate the edited source without\\nmutation, review the intended change, then apply against a freshly read token.\\nIf the UI changed in the meantime, re-read and reapply the edit rather than\\noverwriting the newer state. Apply returns snapshot/revision facts that support\\naudit and undo; branches and time travel should be inspected before editing a\\nnon-head state.\\n\\nDirty markers remain meaningful after a code edit: ``*`` marks unsaved state,\\n``_`` marks a value that differs from its default, and an inherited value can\\nhave a resolved value even while its raw lazy field is ``None``. Use the owning\\nwindow's explicit save/commit action where persistence is required.\\n\\nFor an attached agent, the safe sequence is read, explain, obtain approval,\\nre-read, validate, apply with the fresh revision, retain the receipt, then poll\\nthe relevant state surface. Small field-level ObjectState mutations have a\\nrequest token but no base-revision guard; use them only after a fresh field read\\nand verify immediately afterward. Prefer the code document for atomic related\\nchanges.\\n\\npycodify owns generic Python source serialization and import/collision handling.\\nOpenHCS owns the mapping between UI scope identities, pipeline declarations,\\nand code documents. Applying code is therefore a validated state transition,\\nnot arbitrary execution inside the widget.\\n\\nSee :doc:`../architecture/code_ui_interconversion` and the pycodify package\\ndocumentation for the two sides of the boundary.\",\n  \"selected_section_id\": null,\n  \"truncated\": false,\n  \"max_chars\": 20000\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"document":{"document_id":"openhcs_code_ui_editing","title":"OpenHCS code and UI editing","summary":"User workflow for selecting the owning Code document, clean versus resolved source, revision-safe validation and apply, dirty markers, save behavior, snapshots, and recovery.","source_path":"docs/source/user_guide/code_ui_editing.rst","tags":["code mode","UI editing","PipelineDocument","clean source","resolved source","revision token","dirty markers","snapshots","undo"],"section_count":3},"sections":[{"section_id":"code-and-ui-editing","title":"Code and UI editing","level":1,"span":{"start_line":1,"end_line":59}},{"section_id":"clean-and-resolved-views","title":"Clean and resolved views","level":2,"span":{"start_line":23,"end_line":30}},{"section_id":"safe-apply-and-recovery","title":"Safe apply and recovery","level":2,"span":{"start_line":31,"end_line":59}}],"content":"Code and UI editing\n===================\n\nThe desktop forms and generated Python are two projections of the same live\nObjectState-backed declarations. Pipeline code contains ``PipelineConfig`` and\n``FunctionStep`` values; it is not a separate GUI model.\n\nUse the code view attached to the relevant window or scope. A typical round\ntrip is:\n\n1. edit a pipeline or configuration in the form;\n2. open its code projection and inspect the generated declarations;\n3. edit the code and apply it;\n4. resolve any validation error before the live state is replaced;\n5. compile again before execution.\n\nChoose the document that owns the edited object. Pipeline Editor projects one\ncomplete ``PipelineDocument``; a step editor projects one ``FunctionStep``; a\nconfiguration window projects its typed config; Plate Manager projects the\nmulti-plate aggregate. The available Code controls and MCP document catalog are\ndiscovered from those nominal owners rather than a copied button list.\n\nClean and resolved views\n------------------------\n\nA clean document keeps inherited/default lazy fields sparse, which is normally\nthe best form to edit and share. A resolved view includes effective inherited\nvalues for inspection. Do not paste a resolved document back merely to change\none field: that can turn inherited values into explicit overrides.\n\nSafe apply and recovery\n-----------------------\n\nCode-document reads return a revision token. Validate the edited source without\nmutation, review the intended change, then apply against a freshly read token.\nIf the UI changed in the meantime, re-read and reapply the edit rather than\noverwriting the newer state. Apply returns snapshot/revision facts that support\naudit and undo; branches and time travel should be inspected before editing a\nnon-head state.\n\nDirty markers remain meaningful after a code edit: ``*`` marks unsaved state,\n``_`` marks a value that differs from its default, and an inherited value can\nhave a resolved value even while its raw lazy field is ``None``. Use the owning\nwindow's explicit save/commit action where persistence is required.\n\nFor an attached agent, the safe sequence is read, explain, obtain approval,\nre-read, validate, apply with the fresh revision, retain the receipt, then poll\nthe relevant state surface. Small field-level ObjectState mutations have a\nrequest token but no base-revision guard; use them only after a fresh field read\nand verify immediately afterward. Prefer the code document for atomic related\nchanges.\n\npycodify owns generic Python source serialization and import/collision handling.\nOpenHCS owns the mapping between UI scope identities, pipeline declarations,\nand code documents. Applying code is therefore a validated state transition,\nnot arbitrary execution inside the widget.\n\nSee :doc:`../architecture/code_ui_interconversion` and the pycodify package\ndocumentation for the two sides of the boundary.","selected_section_id":null,"truncated":false,"max_chars":20000}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_76","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"plate_paths per_plate_configs pipeline_data Plate manager orchestrator config"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_76","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_knowledge","arguments":{"query":"plate_paths per_plate_configs pipeline_data Plate manager orchestrator config"},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"query\": \"plate_paths per_plate_configs pipeline_data Plate manager orchestrator config\",\n  \"hits\": [\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_basic_interface\",\n        \"title\": \"OpenHCS basic interface\",\n        \"summary\": \"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\",\n        \"source_path\": \"docs/source/guide_for_biologists/basic_interface.rst\",\n        \"tags\": [\n          \"GUI\",\n          \"plate manager\",\n          \"pipeline editor\",\n          \"image browser\",\n          \"metadata\"\n        ],\n        \"section_count\": 8\n      },\n      \"section\": {\n        \"section_id\": \"plate-manager\",\n        \"title\": \"Plate Manager\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 33,\n          \"end_line\": 41\n        }\n      },\n      \"line_number\": 36,\n      \"snippet\": \"Plate Manager is the starting point for a dataset. Add a local or configured\",\n      \"score\": 50,\n      \"matched_terms\": [\n        \"plate\",\n        \"manager\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"master-multi-plate-lab-meeting-showcase\",\n        \"title\": \"Master multi-plate lab-meeting showcase\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 98,\n          \"end_line\": 167\n        }\n      },\n      \"line_number\": 107,\n      \"snippet\": \"the running Plate Manager, so the viewer can be matched to its plate and config\",\n      \"score\": 40,\n      \"matched_terms\": [\n        \"plate\",\n        \"manager\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_data_dimensions\",\n        \"title\": \"OpenHCS data dimensions\",\n        \"summary\": \"Plate, well, site, channel, Z-plane, and timepoint organization; variable components; group_by channel routing; and common data organization patterns.\",\n        \"source_path\": \"docs/source/concepts/data_dimensions.rst\",\n        \"tags\": [\n          \"plate layout\",\n          \"well\",\n          \"site\",\n          \"channel\",\n          \"fluorescence\",\n          \"variable components\",\n          \"group_by\"\n        ],\n        \"section_count\": 7\n      },\n      \"section\": {\n        \"section_id\": \"plate-and-execution-axis\",\n        \"title\": \"Plate and execution axis\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 8,\n          \"end_line\": 14\n        }\n      },\n      \"line_number\": 8,\n      \"snippet\": \"Plate and execution axis\",\n      \"score\": 40,\n      \"matched_terms\": [\n        \"plate\",\n        \"orchestrator\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_code_ui_interconversion\",\n        \"title\": \"OpenHCS code and UI interconversion\",\n        \"summary\": \"Live UI/code biconversion over ObjectState-backed UI objects: typed code documents, pycodified projections, revision-checked apply, snapshots, and real-time running-UI updates.\",\n        \"source_path\": \"docs/source/architecture/code_ui_interconversion.rst\",\n        \"tags\": [\n          \"ObjectState\",\n          \"GlobalPipelineConfig\",\n          \"code documents\",\n          \"live UI code\",\n          \"code mode\",\n          \"GUI\",\n          \"pycodify\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"code-documents\",\n        \"title\": \"Code Documents\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 54,\n          \"end_line\": 90\n        }\n      },\n      \"line_number\": 58,\n      \"snippet\": \"Plate Manager orchestrator document, for example, projects selected plate paths,\",\n      \"score\": 40,\n      \"matched_terms\": [\n        \"plate\",\n        \"manager\",\n        \"orchestrator\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-mfd-specs-py\",\n        \"title\": \"openhcs/processing/presets/mfd_specs.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 180,\n          \"end_line\": 563\n        }\n      },\n      \"line_number\": 235,\n      \"snippet\": \"MFD_WHOLE_DEVICE_TEMPLATE_PATH = (\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"plate_paths\",\n        \"plate\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 620,\n          \"end_line\": 1110\n        }\n      },\n      \"line_number\": 723,\n      \"snippet\": \"plate_path: Path\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"plate_paths\",\n        \"plate\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_example_corpus_map\",\n        \"title\": \"OpenHCS example corpus map\",\n        \"summary\": \"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.\",\n        \"source_path\": \"docs/source/guides/example_corpus_map.rst\",\n        \"tags\": [\n          \"CellProfiler examples\",\n          \"CellProfiler translation\",\n          \"CellProfiler mental model\",\n          \"cppipe\",\n          \"native examples\",\n          \"official30\",\n          \"ExampleHuman\",\n          \"ExampleFly\",\n          \"OpenHCS Python\",\n          \"benchmark recipes\",\n          \"MFD preset\",\n          \"current examples\",\n          \"nuclei segmentation\",\n          \"illumination correction\",\n          \"colocalization\",\n          \"translocation\",\n          \"quality control\",\n          \"neurite outgrowth\",\n          \"recipe\",\n          \"recipes\",\n          \"pipeline recipes\"\n        ],\n        \"section_count\": 15\n      },\n      \"section\": {\n        \"section_id\": \"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py\",\n        \"title\": \"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 1111,\n          \"end_line\": 1233\n        }\n      },\n      \"line_number\": 1206,\n      \"snippet\": \"plate_path=Path(\\\"path/to/loose_operaphenix_export\\\"),\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"plate_paths\",\n        \"plate\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_complete_examples\",\n        \"title\": \"OpenHCS complete examples\",\n        \"summary\": \"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.\",\n        \"source_path\": \"docs/source/guides/complete_examples.rst\",\n        \"tags\": [\n          \"complete examples\",\n          \"working examples\",\n          \"FunctionStep\",\n          \"dictionary pattern\",\n          \"GPU\",\n          \"zarr\",\n          \"stitching\",\n          \"cell counting\",\n          \"neurite tracing\",\n          \"production examples\",\n          \"cell analysis\",\n          \"current examples\",\n          \"large dataset\",\n          \"orchestrator\"\n        ],\n        \"section_count\": 9\n      },\n      \"section\": {\n        \"section_id\": \"compilation\",\n        \"title\": \"Compilation\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 47,\n          \"end_line\": 59\n        }\n      },\n      \"line_number\": 50,\n      \"snippet\": \"Create a ``PipelineOrchestrator`` for an absolute plate directory, initialize\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"plate\",\n        \"orchestrator\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_basic_interface\",\n        \"title\": \"OpenHCS basic interface\",\n        \"summary\": \"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\",\n        \"source_path\": \"docs/source/guide_for_biologists/basic_interface.rst\",\n        \"tags\": [\n          \"GUI\",\n          \"plate manager\",\n          \"pipeline editor\",\n          \"image browser\",\n          \"metadata\"\n        ],\n        \"section_count\": 8\n      },\n      \"section\": null,\n      \"line_number\": null,\n      \"snippet\": \"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"plate\",\n        \"manager\",\n        \"config\"\n      ]\n    },\n    {\n      \"document\": {\n        \"document_id\": \"openhcs_basic_interface\",\n        \"title\": \"OpenHCS basic interface\",\n        \"summary\": \"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.\",\n        \"source_path\": \"docs/source/guide_for_biologists/basic_interface.rst\",\n        \"tags\": [\n          \"GUI\",\n          \"plate manager\",\n          \"pipeline editor\",\n          \"image browser\",\n          \"metadata\"\n        ],\n        \"section_count\": 8\n      },\n      \"section\": {\n        \"section_id\": \"interface-map\",\n        \"title\": \"Interface map\",\n        \"level\": 2,\n        \"span\": {\n          \"start_line\": 8,\n          \"end_line\": 32\n        }\n      },\n      \"line_number\": 16,\n      \"snippet\": \"|- Plate Manager          datasets, selection, init/compile/run\",\n      \"score\": 30,\n      \"matched_terms\": [\n        \"plate\",\n        \"manager\",\n        \"config\"\n      ]\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"query":"plate_paths per_plate_configs pipeline_data Plate manager orchestrator config","hits":[{"document":{"document_id":"openhcs_basic_interface","title":"OpenHCS basic interface","summary":"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.","source_path":"docs/source/guide_for_biologists/basic_interface.rst","tags":["GUI","plate manager","pipeline editor","image browser","metadata"],"section_count":8},"section":{"section_id":"plate-manager","title":"Plate Manager","level":2,"span":{"start_line":33,"end_line":41}},"line_number":36,"snippet":"Plate Manager is the starting point for a dataset. Add a local or configured","score":50,"matched_terms":["plate","manager","config"]},{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"master-multi-plate-lab-meeting-showcase","title":"Master multi-plate lab-meeting showcase","level":2,"span":{"start_line":98,"end_line":167}},"line_number":107,"snippet":"the running Plate Manager, so the viewer can be matched to its plate and config","score":40,"matched_terms":["plate","manager","config"]},{"document":{"document_id":"openhcs_data_dimensions","title":"OpenHCS data dimensions","summary":"Plate, well, site, channel, Z-plane, and timepoint organization; variable components; group_by channel routing; and common data organization patterns.","source_path":"docs/source/concepts/data_dimensions.rst","tags":["plate layout","well","site","channel","fluorescence","variable components","group_by"],"section_count":7},"section":{"section_id":"plate-and-execution-axis","title":"Plate and execution axis","level":2,"span":{"start_line":8,"end_line":14}},"line_number":8,"snippet":"Plate and execution axis","score":40,"matched_terms":["plate","orchestrator","config"]},{"document":{"document_id":"openhcs_code_ui_interconversion","title":"OpenHCS code and UI interconversion","summary":"Live UI/code biconversion over ObjectState-backed UI objects: typed code documents, pycodified projections, revision-checked apply, snapshots, and real-time running-UI updates.","source_path":"docs/source/architecture/code_ui_interconversion.rst","tags":["ObjectState","GlobalPipelineConfig","code documents","live UI code","code mode","GUI","pycodify"],"section_count":9},"section":{"section_id":"code-documents","title":"Code Documents","level":2,"span":{"start_line":54,"end_line":90}},"line_number":58,"snippet":"Plate Manager orchestrator document, for example, projects selected plate paths,","score":40,"matched_terms":["plate","manager","orchestrator","config"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-mfd-specs-py","title":"openhcs/processing/presets/mfd_specs.py","level":2,"span":{"start_line":180,"end_line":563}},"line_number":235,"snippet":"MFD_WHOLE_DEVICE_TEMPLATE_PATH = (","score":30,"matched_terms":["plate_paths","plate","config"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth.py","level":2,"span":{"start_line":620,"end_line":1110}},"line_number":723,"snippet":"plate_path: Path","score":30,"matched_terms":["plate_paths","plate","config"]},{"document":{"document_id":"openhcs_example_corpus_map","title":"OpenHCS example corpus map","summary":"Practical recipe map and CellProfiler-to-OpenHCS translation guide for the source-backed Official30 recipes, lazily generated public OpenHCS Python, the typed MFD preset authority, and the boundary between current examples and migration evidence.","source_path":"docs/source/guides/example_corpus_map.rst","tags":["CellProfiler examples","CellProfiler translation","CellProfiler mental model","cppipe","native examples","official30","ExampleHuman","ExampleFly","OpenHCS Python","benchmark recipes","MFD preset","current examples","nuclei segmentation","illumination correction","colocalization","translocation","quality control","neurite outgrowth","recipe","recipes","pipeline recipes"],"section_count":15},"section":{"section_id":"openhcs-processing-presets-pipelines-loose-operaphenix-neurite-outgrowth-metaxpress-py","title":"openhcs/processing/presets/pipelines/loose_operaphenix_neurite_outgrowth_metaxpress.py","level":2,"span":{"start_line":1111,"end_line":1233}},"line_number":1206,"snippet":"plate_path=Path(\"path/to/loose_operaphenix_export\"),","score":30,"matched_terms":["plate_paths","plate","config"]},{"document":{"document_id":"openhcs_complete_examples","title":"OpenHCS complete examples","summary":"Complete working OpenHCS examples covering configuration, function chains, dictionary channel routing, stitching, analysis, GPU processing, zarr, and orchestrator execution.","source_path":"docs/source/guides/complete_examples.rst","tags":["complete examples","working examples","FunctionStep","dictionary pattern","GPU","zarr","stitching","cell counting","neurite tracing","production examples","cell analysis","current examples","large dataset","orchestrator"],"section_count":9},"section":{"section_id":"compilation","title":"Compilation","level":2,"span":{"start_line":47,"end_line":59}},"line_number":50,"snippet":"Create a ``PipelineOrchestrator`` for an absolute plate directory, initialize","score":30,"matched_terms":["plate","orchestrator","config"]},{"document":{"document_id":"openhcs_basic_interface","title":"OpenHCS basic interface","summary":"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.","source_path":"docs/source/guide_for_biologists/basic_interface.rst","tags":["GUI","plate manager","pipeline editor","image browser","metadata"],"section_count":8},"section":null,"line_number":null,"snippet":"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.","score":30,"matched_terms":["plate","manager","config"]},{"document":{"document_id":"openhcs_basic_interface","title":"OpenHCS basic interface","summary":"Biologist-facing guide to the main window, Plate Manager, Pipeline Editor, image browser, metadata viewer, and global configuration.","source_path":"docs/source/guide_for_biologists/basic_interface.rst","tags":["GUI","plate manager","pipeline editor","image browser","metadata"],"section_count":8},"section":{"section_id":"interface-map","title":"Interface map","level":2,"span":{"start_line":8,"end_line":32}},"line_number":16,"snippet":"|- Plate Manager          datasets, selection, init/compile/run","score":30,"matched_terms":["plate","manager","config"]}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_77","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, SourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_path = Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")\noutput_root = Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\")\n\ndef bind_plane(alias, filename, channel):\n    return NamedSourceBinding(\n        alias=alias,\n        selector=SourceSelector(filters=(SourceFilterClause(\n            subject=SourceFilterSubject.FILE,\n            match_type=SourceFilterMatchType.EQUALS,\n            value=filename,\n        ),)),\n        component_identity=(\n            ComponentSelector(AllComponents.WELL, \"1\"),\n            ComponentSelector(AllComponents.SITE, \"1\"),\n            ComponentSelector(AllComponents.CHANNEL, str(channel)),\n            ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n            ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n        ),\n    )\n\npipeline_config = PipelineConfig(\n    materialization_results_path=output_root / \"results\",\n    materialize_runtime_artifacts=True,\n    path_planning_config=LazyPathPlanningConfig(\n        well_filter=0,\n        global_output_folder=output_root,\n    ),\n    source_bindings_config=SourceBindingsConfig(bindings=(\n        bind_plane(\"W1_neuron_neurite\", \"1_w1.tif\", 1),\n        bind_plane(\"W2_soma_nuclear\", \"1_w2.tif\", 2),\n    )),\n)\n\npipeline_steps = [\n    FunctionStep(\n        name=\"Enhanced neuronal signal\",\n        func=(percentile_normalize, dict(\n            low_percentile=1.0, high_percentile=99.8,\n            target_min=0.0, target_max=255.0,\n        )),\n        processing_config=LazyProcessingConfig(\n            variable_components=(AllComponents.CHANNEL,),\n        ),\n        step_materialization_config=LazyStepMaterializationConfig(\n            enabled=True, global_output_folder=output_root, sub_dir=\"review_images\",\n        ),\n        napari_streaming_config=LazyNapariStreamingConfig(\n            enabled=True, persistent=True, port=5613, colormap=\"magma\",\n        ),\n    ),\n    FunctionStep(\n        name=\"Per-neuron morphology and topology\",\n        func=(neurite_outgrowth_metaxpress, dict(\n            neurite_channel_index=0,\n            cell_body=MetaXpressCellBodySettings(\n                approximate_max_width=36.0, minimum_area=45.0,\n                intensity_above_local_background=20.0, channel_index=0,\n            ),\n            outgrowth=MetaXpressOutgrowthSettings(\n                maximum_width=6.0,\n                intensity_above_local_background=8.0,\n                minimum_cell_growth_to_log_as_significant=8.0,\n            ),\n            use_nuclear_stain=True,\n            nuclear_stain=MetaXpressNuclearSettings(\n                channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                intensity_above_local_background=18.0,\n            ),\n        )),\n        processing_config=LazyProcessingConfig(\n            variable_components=(AllComponents.CHANNEL,),\n        ),\n        napari_streaming_config=LazyNapariStreamingConfig(\n            enabled=True, persistent=True, port=5613, colormap=\"magma\",\n        ),\n    ),\n]\n\nplate_paths = [plate_path]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {plate_path: pipeline_config}\npipeline_data = {plate_path: pipeline_steps}\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_77","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, SourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_path = Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")\noutput_root = Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\")\n\ndef bind_plane(alias, filename, channel):\n    return NamedSourceBinding(\n        alias=alias,\n        selector=SourceSelector(filters=(SourceFilterClause(\n            subject=SourceFilterSubject.FILE,\n            match_type=SourceFilterMatchType.EQUALS,\n            value=filename,\n        ),)),\n        component_identity=(\n            ComponentSelector(AllComponents.WELL, \"1\"),\n            ComponentSelector(AllComponents.SITE, \"1\"),\n            ComponentSelector(AllComponents.CHANNEL, str(channel)),\n            ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n            ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n        ),\n    )\n\npipeline_config = PipelineConfig(\n    materialization_results_path=output_root / \"results\",\n    materialize_runtime_artifacts=True,\n    path_planning_config=LazyPathPlanningConfig(\n        well_filter=0,\n        global_output_folder=output_root,\n    ),\n    source_bindings_config=SourceBindingsConfig(bindings=(\n        bind_plane(\"W1_neuron_neurite\", \"1_w1.tif\", 1),\n        bind_plane(\"W2_soma_nuclear\", \"1_w2.tif\", 2),\n    )),\n)\n\npipeline_steps = [\n    FunctionStep(\n        name=\"Enhanced neuronal signal\",\n        func=(percentile_normalize, dict(\n            low_percentile=1.0, high_percentile=99.8,\n            target_min=0.0, target_max=255.0,\n        )),\n        processing_config=LazyProcessingConfig(\n            variable_components=(AllComponents.CHANNEL,),\n        ),\n        step_materialization_config=LazyStepMaterializationConfig(\n            enabled=True, global_output_folder=output_root, sub_dir=\"review_images\",\n        ),\n        napari_streaming_config=LazyNapariStreamingConfig(\n            enabled=True, persistent=True, port=5613, colormap=\"magma\",\n        ),\n    ),\n    FunctionStep(\n        name=\"Per-neuron morphology and topology\",\n        func=(neurite_outgrowth_metaxpress, dict(\n            neurite_channel_index=0,\n            cell_body=MetaXpressCellBodySettings(\n                approximate_max_width=36.0, minimum_area=45.0,\n                intensity_above_local_background=20.0, channel_index=0,\n            ),\n            outgrowth=MetaXpressOutgrowthSettings(\n                maximum_width=6.0,\n                intensity_above_local_background=8.0,\n                minimum_cell_growth_to_log_as_significant=8.0,\n            ),\n            use_nuclear_stain=True,\n            nuclear_stain=MetaXpressNuclearSettings(\n                channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                intensity_above_local_background=18.0,\n            ),\n        )),\n        processing_config=LazyProcessingConfig(\n            variable_components=(AllComponents.CHANNEL,),\n        ),\n        napari_streaming_config=LazyNapariStreamingConfig(\n            enabled=True, persistent=True, port=5613, colormap=\"magma\",\n        ),\n    ),\n]\n\nplate_paths = [plate_path]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {plate_path: pipeline_config}\npipeline_data = {plate_path: pipeline_steps}\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"unsafe_statement\",\n      \"message\": \"Unsupported source construct: FunctionDef\",\n      \"hint\": null,\n      \"exception_type\": null,\n      \"path\": null\n    },\n    {\n      \"code\": \"unexpected_assignment\",\n      \"message\": \"Unexpected assignment target: pipeline_config\",\n      \"hint\": null,\n      \"exception_type\": null,\n      \"path\": null\n    },\n    {\n      \"code\": \"unexpected_assignment\",\n      \"message\": \"Unexpected assignment target: pipeline_steps\",\n      \"hint\": null,\n      \"exception_type\": null,\n      \"path\": null\n    },\n    {\n      \"code\": \"unknown_name\",\n      \"message\": \"Name is not imported by the document: pipeline_config\",\n      \"hint\": null,\n      \"exception_type\": null,\n      \"path\": null\n    },\n    {\n      \"code\": \"unknown_name\",\n      \"message\": \"Name is not imported by the document: pipeline_steps\",\n      \"hint\": null,\n      \"exception_type\": null,\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"unsafe_statement","message":"Unsupported source construct: FunctionDef","hint":null,"exception_type":null,"path":null},{"code":"unexpected_assignment","message":"Unexpected assignment target: pipeline_config","hint":null,"exception_type":null,"path":null},{"code":"unexpected_assignment","message":"Unexpected assignment target: pipeline_steps","hint":null,"exception_type":null,"path":null},{"code":"unknown_name","message":"Name is not imported by the document: pipeline_config","hint":null,"exception_type":null,"path":null},{"code":"unknown_name","message":"Name is not imported by the document: pipeline_steps","hint":null,"exception_type":null,"path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_78","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, SourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=SourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_78","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, SourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=SourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"PipelineConfig.source_bindings_config must be LazySourceBindingsConfig; got SourceBindingsConfig.\",\n      \"hint\": null,\n      \"exception_type\": \"TypeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"PipelineConfig.source_bindings_config must be LazySourceBindingsConfig; got SourceBindingsConfig.","hint":null,"exception_type":"TypeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_79","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_79","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=(AllComponents.CHANNEL,),\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"LazyProcessingConfig.variable_components must match typing.Annotated[typing.List[openhcs.constants.constants.VariableComponents], abbreviation('vars')] | NoneType; got tuple.\",\n      \"hint\": null,\n      \"exception_type\": \"TypeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"LazyProcessingConfig.variable_components must match typing.Annotated[typing.List[openhcs.constants.constants.VariableComponents], abbreviation('vars')] | NoneType; got tuple.","hint":null,"exception_type":"TypeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_80","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[AllComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[AllComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_80","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[AllComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[AllComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": false,\n  \"normalized_scope_ids\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_validation_failed\",\n      \"message\": \"LazyProcessingConfig.variable_components must match typing.Annotated[typing.List[openhcs.constants.constants.VariableComponents], abbreviation('vars')] | NoneType; got list.\",\n      \"hint\": null,\n      \"exception_type\": \"TypeError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","valid":false,"normalized_scope_ids":[],"errors":[{"code":"ui_code_document_validation_failed","message":"LazyProcessingConfig.variable_components must match typing.Annotated[typing.List[openhcs.constants.constants.VariableComponents], abbreviation('vars')] | NoneType; got list.","hint":null,"exception_type":"TypeError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_81","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents, VariableComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_81","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_validate_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents, VariableComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"valid\": true,\n  \"normalized_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","valid":true,"normalized_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_82","type":"agent_message","text":"The compact workflow now validates as a typed desktop document: exact Source Bindings, per-plane percentile normalization (the W1 context layer is deliberately named “Enhanced neuronal signal”), followed by the registered MetaXpress neurite engine. That engine segments nuclei and cell bodies, assigns outgrowth to neuron identities, emits per-image/per-neuron measurements, four label artifacts, and a rooted spatial graph whose materializers provide ROI paths and SWC. I’m applying it to the live Plate Manager now, then I’ll initialize and inspect the projected axes before compile/run."}}
{"type":"item.started","item":{"id":"item_83","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"all","clean":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_83","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"all","clean":true},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": null,\n  \"current_revision_token\": \"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"plate_manager.orchestrator_config\"\n    },\n    \"title\": \"Plate manager orchestrator config\",\n    \"readable\": true,\n    \"writable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 0\n  },\n  \"source\": \"# Edit this orchestrator configuration and save to apply changes\\n\\nfrom openhcs.core.config import GlobalPipelineConfig\\n\\nplate_paths = []\\n\\nglobal_config = GlobalPipelineConfig()\\n\\nper_plate_configs = {}\\n\\npipeline_data = {}\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 220,\n  \"sha256\": \"a23bd4158078dd4d75a0f0153ab6afac7eb1863be6e2610c9dfea0d3be3c9a0a\",\n  \"warnings\": [],\n  \"errors\": []\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","schema_version":"openhcs.agent.v1","summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"document_id":"plate_manager.orchestrator_config"},"title":"Plate manager orchestrator config","readable":true,"writable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0},"source":"# Edit this orchestrator configuration and save to apply changes\n\nfrom openhcs.core.config import GlobalPipelineConfig\n\nplate_paths = []\n\nglobal_config = GlobalPipelineConfig()\n\nper_plate_configs = {}\n\npipeline_data = {}","mime_type":"text/x-python","size_bytes":220,"sha256":"a23bd4158078dd4d75a0f0153ab6afac7eb1863be6e2610c9dfea0d3be3c9a0a","warnings":[],"errors":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_84","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_apply_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents, VariableComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n","require_confirmation":true,"snapshot_label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_84","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_apply_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents, VariableComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n","require_confirmation":true,"snapshot_label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"applied\": false,\n  \"base_revision_token\": \"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b\",\n  \"receipt\": {\n    \"request_token\": {\n      \"value\": null\n    },\n    \"bridge_operation_id\": \"46260318-206b-415c-a7b9-511170f4f32b\",\n    \"accepted\": true\n  },\n  \"outcome\": \"running\",\n  \"operation_id\": \"46260318-206b-415c-a7b9-511170f4f32b\",\n  \"new_revision_token\": null,\n  \"current_revision_token\": null,\n  \"current_snapshot\": null,\n  \"undo_snapshot\": null,\n  \"pre_apply_snapshot\": null,\n  \"post_apply_snapshot\": null,\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","applied":false,"base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","receipt":{"request_token":{"value":null},"bridge_operation_id":"46260318-206b-415c-a7b9-511170f4f32b","accepted":true},"outcome":"running","operation_id":"46260318-206b-415c-a7b9-511170f4f32b","new_revision_token":null,"current_revision_token":null,"current_snapshot":null,"undo_snapshot":null,"pre_apply_snapshot":null,"post_apply_snapshot":null,"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_85","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"46260318-206b-415c-a7b9-511170f4f32b","timeout_seconds":10,"poll_interval_seconds":0.2},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_85","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"46260318-206b-415c-a7b9-511170f4f32b","timeout_seconds":10,"poll_interval_seconds":0.2},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [\n    {\n      \"code\": \"confirmation_required\",\n      \"message\": \"UI confirmation is required.\",\n      \"hint\": null,\n      \"exception_type\": null,\n      \"path\": null\n    }\n  ],\n  \"warnings\": [],\n  \"status\": \"completed\",\n  \"started_at_unix\": 1785881037.712501,\n  \"identity\": {\n    \"operation_id\": \"46260318-206b-415c-a7b9-511170f4f32b\",\n    \"route\": {\n      \"operation_name\": \"apply_document\",\n      \"request_id\": null,\n      \"target_id\": \"plate_manager.orchestrator_config\"\n    }\n  },\n  \"completed_at_unix\": 1785881037.7255805,\n  \"outcome\": \"not_applied\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[{"code":"confirmation_required","message":"UI confirmation is required.","hint":null,"exception_type":null,"path":null}],"warnings":[],"status":"completed","started_at_unix":1785881037.712501,"identity":{"operation_id":"46260318-206b-415c-a7b9-511170f4f32b","route":{"operation_name":"apply_document","request_id":null,"target_id":"plate_manager.orchestrator_config"}},"completed_at_unix":1785881037.7255805,"outcome":"not_applied"}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_86","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_86","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": null,\n  \"current_revision_token\": \"cf094266b24ddafcacb697b646bbf94d6b76af0d1ae050651b62688c1d5d1d0e\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 0\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [],\n    \"current_snapshot\": null,\n    \"current_revision_token\": \"cf094266b24ddafcacb697b646bbf94d6b76af0d1ae050651b62688c1d5d1d0e\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 0\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 0,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": []\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"cf094266b24ddafcacb697b646bbf94d6b76af0d1ae050651b62688c1d5d1d0e","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"cf094266b24ddafcacb697b646bbf94d6b76af0d1ae050651b62688c1d5d1d0e","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0},"unchanged":false,"object_state_token":0,"manager_execution_state":"idle","rows":[]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_87","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"all","clean":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_87","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"all","clean":true},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": null,\n  \"current_revision_token\": \"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"plate_manager.orchestrator_config\"\n    },\n    \"title\": \"Plate manager orchestrator config\",\n    \"readable\": true,\n    \"writable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 0\n  },\n  \"source\": \"# Edit this orchestrator configuration and save to apply changes\\n\\nfrom openhcs.core.config import GlobalPipelineConfig\\n\\nplate_paths = []\\n\\nglobal_config = GlobalPipelineConfig()\\n\\nper_plate_configs = {}\\n\\npipeline_data = {}\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 220,\n  \"sha256\": \"a23bd4158078dd4d75a0f0153ab6afac7eb1863be6e2610c9dfea0d3be3c9a0a\",\n  \"warnings\": [],\n  \"errors\": []\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","schema_version":"openhcs.agent.v1","summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"document_id":"plate_manager.orchestrator_config"},"title":"Plate manager orchestrator config","readable":true,"writable":true,"supported_selection_modes":["selected","all"],"current_selection_count":0,"total_scope_count":0},"source":"# Edit this orchestrator configuration and save to apply changes\n\nfrom openhcs.core.config import GlobalPipelineConfig\n\nplate_paths = []\n\nglobal_config = GlobalPipelineConfig()\n\nper_plate_configs = {}\n\npipeline_data = {}","mime_type":"text/x-python","size_bytes":220,"sha256":"a23bd4158078dd4d75a0f0153ab6afac7eb1863be6e2610c9dfea0d3be3c9a0a","warnings":[],"errors":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_88","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_apply_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents, VariableComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n","require_confirmation":false,"snapshot_label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_88","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_apply_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","source":"from pathlib import Path\nfrom openhcs.constants.constants import AllComponents, VariableComponents\nfrom openhcs.core.config import (\n    GlobalPipelineConfig, LazyNapariStreamingConfig, LazyPathPlanningConfig,\n    LazyProcessingConfig, LazyStepMaterializationConfig, PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector, NamedSourceBinding, LazySourceBindingsConfig,\n    SourceFilterClause, SourceFilterMatchType, SourceFilterSubject, SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings, MetaXpressNuclearSettings, MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\n\nplate_paths = [Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\")]\nglobal_config = GlobalPipelineConfig()\nper_plate_configs = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): PipelineConfig(\n        materialization_results_path=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results\"),\n        materialize_runtime_artifacts=True,\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n        ),\n        source_bindings_config=LazySourceBindingsConfig(bindings=(\n            NamedSourceBinding(\n                alias=\"W1_neuron_neurite\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w1.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"1\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n            NamedSourceBinding(\n                alias=\"W2_soma_nuclear\",\n                selector=SourceSelector(filters=(SourceFilterClause(\n                    subject=SourceFilterSubject.FILE,\n                    match_type=SourceFilterMatchType.EQUALS,\n                    value=\"1_w2.tif\",\n                ),)),\n                component_identity=(\n                    ComponentSelector(AllComponents.WELL, \"1\"),\n                    ComponentSelector(AllComponents.SITE, \"1\"),\n                    ComponentSelector(AllComponents.CHANNEL, \"2\"),\n                    ComponentSelector(AllComponents.Z_INDEX, \"1\"),\n                    ComponentSelector(AllComponents.TIMEPOINT, \"1\"),\n                ),\n            ),\n        )),\n    )\n}\npipeline_data = {\n    Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"): [\n        FunctionStep(\n            name=\"Enhanced neuronal signal\",\n            func=(percentile_normalize, {\n                \"low_percentile\": 1.0, \"high_percentile\": 99.8,\n                \"target_min\": 0.0, \"target_max\": 255.0,\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                enabled=True,\n                global_output_folder=Path(\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\"),\n                sub_dir=\"review_images\",\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n        FunctionStep(\n            name=\"Per-neuron morphology and topology\",\n            func=(neurite_outgrowth_metaxpress, {\n                \"neurite_channel_index\": 0,\n                \"cell_body\": MetaXpressCellBodySettings(\n                    approximate_max_width=36.0, minimum_area=45.0,\n                    intensity_above_local_background=20.0, channel_index=0,\n                ),\n                \"outgrowth\": MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0,\n                ),\n                \"use_nuclear_stain\": True,\n                \"nuclear_stain\": MetaXpressNuclearSettings(\n                    channel_index=1, approx_min_width=5.0, approx_max_width=32.0,\n                    intensity_above_local_background=18.0,\n                ),\n            }),\n            processing_config=LazyProcessingConfig(\n                variable_components=[VariableComponents.CHANNEL],\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                enabled=True, persistent=True, port=5613, colormap=\"magma\",\n            ),\n        ),\n    ]\n}\n","require_confirmation":false,"snapshot_label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline"},"result":{"content":[{"type":"text","text":"{\n  \"document_id\": \"plate_manager.orchestrator_config\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"applied\": false,\n  \"base_revision_token\": \"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b\",\n  \"receipt\": {\n    \"request_token\": {\n      \"value\": null\n    },\n    \"bridge_operation_id\": \"03a9591e-0e8e-44f5-aa11-5c01d787eef8\",\n    \"accepted\": true\n  },\n  \"outcome\": \"running\",\n  \"operation_id\": \"03a9591e-0e8e-44f5-aa11-5c01d787eef8\",\n  \"new_revision_token\": null,\n  \"current_revision_token\": null,\n  \"current_snapshot\": null,\n  \"undo_snapshot\": null,\n  \"pre_apply_snapshot\": null,\n  \"post_apply_snapshot\": null,\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"document_id":"plate_manager.orchestrator_config","schema_version":"openhcs.agent.v1","applied":false,"base_revision_token":"3bc0e0acab00fc0c2bc74378c61b025fc9c3db5ce9529b8a3591581621e5831b","receipt":{"request_token":{"value":null},"bridge_operation_id":"03a9591e-0e8e-44f5-aa11-5c01d787eef8","accepted":true},"outcome":"running","operation_id":"03a9591e-0e8e-44f5-aa11-5c01d787eef8","new_revision_token":null,"current_revision_token":null,"current_snapshot":null,"undo_snapshot":null,"pre_apply_snapshot":null,"post_apply_snapshot":null,"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_89","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"03a9591e-0e8e-44f5-aa11-5c01d787eef8","timeout_seconds":10,"poll_interval_seconds":0.2},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_89","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"03a9591e-0e8e-44f5-aa11-5c01d787eef8","timeout_seconds":10,"poll_interval_seconds":0.2},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"status\": \"completed\",\n  \"started_at_unix\": 1785881052.3247933,\n  \"identity\": {\n    \"operation_id\": \"03a9591e-0e8e-44f5-aa11-5c01d787eef8\",\n    \"route\": {\n      \"operation_name\": \"apply_document\",\n      \"request_id\": null,\n      \"target_id\": \"plate_manager.orchestrator_config\"\n    }\n  },\n  \"completed_at_unix\": 1785881053.8232503,\n  \"outcome\": \"applied\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"status":"completed","started_at_unix":1785881052.3247933,"identity":{"operation_id":"03a9591e-0e8e-44f5-aa11-5c01d787eef8","route":{"operation_name":"apply_document","request_id":null,"target_id":"plate_manager.orchestrator_config"}},"completed_at_unix":1785881053.8232503,"outcome":"applied"}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_90","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_90","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"dd0c9a051dd90d22f3426ee257f92d9ea4097ba4de98d32465d1129d07b7f712\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"dd0c9a051dd90d22f3426ee257f92d9ea4097ba4de98d32465d1129d07b7f712\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": false,\n        \"compiled\": false,\n        \"init_pending\": false,\n        \"compile_pending\": false,\n        \"execution_active\": false,\n        \"status_prefix\": \"\",\n        \"orchestrator_state\": \"created\",\n        \"execution_id\": null,\n        \"terminal_status\": null,\n        \"runtime_state\": null,\n        \"runtime_percent\": null,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"dd0c9a051dd90d22f3426ee257f92d9ea4097ba4de98d32465d1129d07b7f712","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"dd0c9a051dd90d22f3426ee257f92d9ea4097ba4de98d32465d1129d07b7f712","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"idle","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":false,"compiled":false,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"","orchestrator_state":"created","execution_id":null,"terminal_status":null,"runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_91","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_91","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'add_step' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'auto_load_pipeline' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'code_pipeline' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Debug\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'edit_config' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"orchestrator_not_initialized\",\n        \"message\": \"Selected plate is not initialized; run init_plate before compile_plate. Next workflow: init_plate.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"orchestrator_not_initialized\",\n        \"message\": \"Selected plate is not initialized; run init_plate before run_plate. Next workflow: init_plate.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'view_metadata' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'add_step' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":false,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'auto_load_pipeline' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":false,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'code_pipeline' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Debug","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":true,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'edit_config' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":true,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":false,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":{"code":"orchestrator_not_initialized","message":"Selected plate is not initialized; run init_plate before compile_plate. Next workflow: init_plate.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":{"code":"orchestrator_not_initialized","message":"Selected plate is not initialized; run init_plate before run_plate. Next workflow: init_plate.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":false,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'view_metadata' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_92","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"init","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_92","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"init","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"Error executing tool openhcs_ui_selected_plate_workflow: 1 validation error for openhcs_ui_selected_plate_workflowArguments\nworkflow\n  Input should be 'init_plate', 'compile_plate' or 'run_plate' [type=enum, input_value='init', input_type=str]\n    For further information visit https://errors.pydantic.dev/2.13/v/enum"}],"structured_content":null},"error":null,"status":"failed"}}
{"type":"item.started","item":{"id":"item_93","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_93","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'add_step' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'auto_load_pipeline' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'code_pipeline' is disabled.\",\n        \"hint\": \"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Debug\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_initialization_required\",\n        \"message\": \"Debug controls require an initialized selected plate.\",\n        \"hint\": \"Run the selected-plate init workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'edit_config' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"orchestrator_not_initialized\",\n        \"message\": \"Selected plate is not initialized; run init_plate before compile_plate. Next workflow: init_plate.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"orchestrator_not_initialized\",\n        \"message\": \"Selected plate is not initialized; run init_plate before run_plate. Next workflow: init_plate.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"PlateManager action 'view_metadata' is disabled.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'add_step' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":false,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'auto_load_pipeline' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":false,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'code_pipeline' is disabled.","hint":"PipelineEditor actions require an initialized current plate. Inspect plate_manager.state, initialize the selected plate, then read window_code_document:pipeline_editor or widget-tree pipeline_editor.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Debug","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_initialization_required","message":"Debug controls require an initialized selected plate.","hint":"Run the selected-plate init workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"8a500880d9ceb43659571162b093d3d6d944fec2639d9bf5a45ec14561d691f9","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":true,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'edit_config' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":true,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":false,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":{"code":"orchestrator_not_initialized","message":"Selected plate is not initialized; run init_plate before compile_plate. Next workflow: init_plate.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":{"code":"orchestrator_not_initialized","message":"Selected plate is not initialized; run init_plate before run_plate. Next workflow: init_plate.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":false,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":{"code":"ui_action_disabled","message":"PlateManager action 'view_metadata' is disabled.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_94","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"init_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_94","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"init_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"workflow\": \"init_plate\",\n  \"action_result\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    \"status\": \"accepted\",\n    \"receipt\": {\n      \"request_token\": {\n        \"value\": null\n      },\n      \"bridge_operation_id\": \"b36c2cad-39a6-451e-9d26-aa02fd35d861\",\n      \"accepted\": true\n    },\n    \"target_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n    \"workflow_status_surface_ids\": [\n      \"plate_manager.state\"\n    ],\n    \"recommended_poll_interval_ms\": 500,\n    \"errors\": [],\n    \"warnings\": []\n  },\n  \"state_surface_id\": \"plate_manager.state\",\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","workflow":"init_plate","action_result":{"schema_version":"openhcs.agent.v1","identity":{"widget_id":"plate_manager","action_id":"init_plate"},"status":"accepted","receipt":{"request_token":{"value":null},"bridge_operation_id":"b36c2cad-39a6-451e-9d26-aa02fd35d861","accepted":true},"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","workflow_status_surface_ids":["plate_manager.state"],"recommended_poll_interval_ms":500,"errors":[],"warnings":[]},"state_surface_id":"plate_manager.state","errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_95","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"b36c2cad-39a6-451e-9d26-aa02fd35d861","timeout_seconds":10,"poll_interval_seconds":0.2},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_95","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"b36c2cad-39a6-451e-9d26-aa02fd35d861","timeout_seconds":10,"poll_interval_seconds":0.2},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"ui_action_dispatched\",\n      \"message\": \"PlateManager action 'init_plate' was dispatched as async work; poll plate_manager.state for workflow status.\",\n      \"hint\": null\n    }\n  ],\n  \"status\": \"completed\",\n  \"started_at_unix\": 1785881069.5359552,\n  \"identity\": {\n    \"operation_id\": \"b36c2cad-39a6-451e-9d26-aa02fd35d861\",\n    \"route\": {\n      \"operation_name\": \"invoke_action\",\n      \"request_id\": null,\n      \"target_id\": \"init_plate\"\n    }\n  },\n  \"completed_at_unix\": 1785881069.539122,\n  \"outcome\": \"accepted\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[{"code":"ui_action_dispatched","message":"PlateManager action 'init_plate' was dispatched as async work; poll plate_manager.state for workflow status.","hint":null}],"status":"completed","started_at_unix":1785881069.5359552,"identity":{"operation_id":"b36c2cad-39a6-451e-9d26-aa02fd35d861","route":{"operation_name":"invoke_action","request_id":null,"target_id":"init_plate"}},"completed_at_unix":1785881069.539122,"outcome":"accepted"}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_96","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_96","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": null,\n  \"current_revision_token\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [\n    {\n      \"code\": \"ui_bridge_timeout\",\n      \"message\": \"UI bridge operation 'get_state_surface' timed out after 750ms.\",\n      \"hint\": \"The running UI may be blocked or busy; retry after the UI event loop is responsive.\",\n      \"exception_type\": \"UiBridgeGatewayTimeoutError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"unknown\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Unavailable UI state surface\",\n    \"readable\": false,\n    \"supported_selection_modes\": [],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 0\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.unavailable_state_surface.v1\",\n  \"payload\": {}\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":null,"current_revision_token":null,"schema_version":"openhcs.agent.v1","errors":[{"code":"ui_bridge_timeout","message":"UI bridge operation 'get_state_surface' timed out after 750ms.","hint":"The running UI may be blocked or busy; retry after the UI event loop is responsive.","exception_type":"UiBridgeGatewayTimeoutError","path":null}],"warnings":[],"summary":{"widget_id":"unknown","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Unavailable UI state surface","readable":false,"supported_selection_modes":[],"current_selection_count":0,"total_scope_count":0},"unchanged":false,"payload_schema":"openhcs.ui.unavailable_state_surface.v1","payload":{}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_97","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_97","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"83a6edac3e71f014b64837c1704e8814e358b6e8129f1507ee0d3fb7cbc8b07c\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"83a6edac3e71f014b64837c1704e8814e358b6e8129f1507ee0d3fb7cbc8b07c\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": false,\n        \"init_pending\": false,\n        \"compile_pending\": false,\n        \"execution_active\": false,\n        \"status_prefix\": \"✓ Init\",\n        \"orchestrator_state\": \"ready\",\n        \"execution_id\": null,\n        \"terminal_status\": null,\n        \"runtime_state\": null,\n        \"runtime_percent\": null,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"83a6edac3e71f014b64837c1704e8814e358b6e8129f1507ee0d3fb7cbc8b07c","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"83a6edac3e71f014b64837c1704e8814e358b6e8129f1507ee0d3fb7cbc8b07c","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"idle","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":false,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✓ Init","orchestrator_state":"ready","execution_id":null,"terminal_status":null,"runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_98","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_inspect_selected_plate_images","arguments":{"target":"selected","max_files_to_parse":20,"max_sample_files":10,"max_component_values":20},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_98","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_inspect_selected_plate_images","arguments":{"target":"selected","max_files_to_parse":20,"max_sample_files":10,"max_component_values":20},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": false,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✓ Init\",\n    \"orchestrator_state\": \"ready\",\n    \"execution_id\": null,\n    \"terminal_status\": null,\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"selected\",\n  \"inspection\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"requested_microscope_type\": \"auto\",\n    \"status\": \"ok\",\n    \"confidence\": \"high\",\n    \"available_microscope_types\": [\n      \"bbbc021\",\n      \"bbbc038\",\n      \"bioformats\",\n      \"imagexpress\",\n      \"omero\",\n      \"openhcsdata\",\n      \"opera_phenix\",\n      \"source_bindings\"\n    ],\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"BioFormatsFilenameParser\",\n    \"metadata_handler_class\": \"OpenHCSMetadataHandler\",\n    \"root_dir\": \"\",\n    \"compatible_backends\": [\n      \"zarr\",\n      \"disk\"\n    ],\n    \"available_backends\": [\n      \"disk\"\n    ],\n    \"metadata_file_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/openhcs_metadata.json\",\n    \"grid_dimensions\": [\n      1,\n      1\n    ],\n    \"pixel_size\": 1.0,\n    \"image_files\": {\n      \"count\": 2,\n      \"sampled_files\": [\n        \"1_s001_w1_z001_t001.tif\",\n        \"1_s001_w2_z001_t001.tif\"\n      ],\n      \"sampled_records\": [\n        {\n          \"virtual_path\": \"1_s001_w1_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w1_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n          \"metadata\": {\n            \"filename\": \"1_s001_w1_z001_t001.tif\",\n            \"virtual_path\": \"1_s001_w1_z001_t001.tif\",\n            \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w1_z001_t001.tif\",\n            \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\",\n            \"type\": \"Image\",\n            \"OpenHCSOriginalSourceMetadata\": {\n              \"well\": \"1%5Fw1.tif\"\n            },\n            \"OpenHCSSourceFilterPaths\": {\n              \"0\": \"1_w1.tif\",\n              \"1\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif\"\n            },\n            \"well\": 1,\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"source_alias\": \"W1_neuron_neurite\",\n            \"extension\": \".tif\",\n            \"size\": \"625.1 KB\",\n            \"modified\": \"2026-08-04T17:56:53\"\n          }\n        },\n        {\n          \"virtual_path\": \"1_s001_w2_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w2_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n          \"metadata\": {\n            \"filename\": \"1_s001_w2_z001_t001.tif\",\n            \"virtual_path\": \"1_s001_w2_z001_t001.tif\",\n            \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w2_z001_t001.tif\",\n            \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\",\n            \"type\": \"Image\",\n            \"OpenHCSOriginalSourceMetadata\": {\n              \"well\": \"1%5Fw2.tif\",\n              \"channel\": \"1\"\n            },\n            \"OpenHCSSourceFilterPaths\": {\n              \"0\": \"1_w2.tif\",\n              \"1\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif\"\n            },\n            \"well\": 1,\n            \"site\": 1,\n            \"channel\": 2,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"source_alias\": \"W2_soma_nuclear\",\n            \"extension\": \".tif\",\n            \"size\": \"625.1 KB\",\n            \"modified\": \"2026-08-04T17:56:53\"\n          }\n        }\n      ],\n      \"truncated_file_count\": 0\n    },\n    \"result_files\": {\n      \"count\": 0,\n      \"scanned_file_count\": 0,\n      \"sampled_files\": [],\n      \"sampled_records\": [],\n      \"truncated_file_count\": 0\n    },\n    \"parse_summary\": {\n      \"attempted_file_count\": 2,\n      \"skipped_file_count\": 0,\n      \"parsed_file_count\": 2,\n      \"failed_file_count\": 0,\n      \"failure_samples\": [],\n      \"truncated_failure_count\": 0\n    },\n    \"components\": [\n      {\n        \"component\": \"site\",\n        \"source\": \"metadata_and_parsed_filenames\",\n        \"count\": 1,\n        \"values\": [\n          {\n            \"key\": \"1\",\n            \"label\": null,\n            \"declared_in_metadata\": true,\n            \"observed_in_filenames\": true\n          }\n        ],\n        \"truncated_value_count\": 0\n      },\n      {\n        \"component\": \"channel\",\n        \"source\": \"metadata_and_parsed_filenames\",\n        \"count\": 2,\n        \"values\": [\n          {\n            \"key\": \"1\",\n            \"label\": \"W1_neuron_neurite\",\n            \"declared_in_metadata\": true,\n            \"observed_in_filenames\": true\n          },\n          {\n            \"key\": \"2\",\n            \"label\": \"W2_soma_nuclear\",\n            \"declared_in_metadata\": true,\n            \"observed_in_filenames\": true\n          }\n        ],\n        \"truncated_value_count\": 0\n      },\n      {\n        \"component\": \"z_index\",\n        \"source\": \"metadata_and_parsed_filenames\",\n        \"count\": 1,\n        \"values\": [\n          {\n            \"key\": \"1\",\n            \"label\": null,\n            \"declared_in_metadata\": true,\n            \"observed_in_filenames\": true\n          }\n        ],\n        \"truncated_value_count\": 0\n      },\n      {\n        \"component\": \"timepoint\",\n        \"source\": \"metadata_and_parsed_filenames\",\n        \"count\": 1,\n        \"values\": [\n          {\n            \"key\": \"1\",\n            \"label\": null,\n            \"declared_in_metadata\": true,\n            \"observed_in_filenames\": true\n          }\n        ],\n        \"truncated_value_count\": 0\n      },\n      {\n        \"component\": \"well\",\n        \"source\": \"metadata_and_parsed_filenames\",\n        \"count\": 1,\n        \"values\": [\n          {\n            \"key\": \"1\",\n            \"label\": null,\n            \"declared_in_metadata\": true,\n            \"observed_in_filenames\": true\n          }\n        ],\n        \"truncated_value_count\": 0\n      }\n    ],\n    \"source_diagnostics\": [],\n    \"format_specific_handler_candidates\": [],\n    \"workspace_preparation\": {\n      \"read_only_inspection\": true,\n      \"required_before_execution\": false,\n      \"operation\": \"none\",\n      \"reason\": \"OpenHCS metadata is already present; read-only inspection did not need workspace preparation.\"\n    },\n    \"workflow_advice\": {\n      \"workflow_scope\": \"diagnostic\",\n      \"ingestion_route\": \"detected_handler\",\n      \"ingestion_owner\": \"openhcsdata\",\n      \"source_binding_role\": \"not_projected_by_handler\",\n      \"ui_code_document_id\": \"plate_manager.orchestrator_config\",\n      \"ui_operation\": \"init\",\n      \"knowledge_query\": \"source model CZI Bio-Formats source bindings\",\n      \"probable_native_ingestion_owners\": [],\n      \"message\": \"Keep the detected openhcsdata handler as the ingestion owner. For a visible workflow, add the plate directory through the PlateManager code document and initialize with auto-detection. Use for a workspace already prepared by OpenHCS and carrying its metadata document. The recorded workspace metadata, not raw vendor filename resemblance, owns parser and backend selection. This handler does not project declared source bindings.\"\n    }\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":false,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✓ Init","orchestrator_state":"ready","execution_id":null,"terminal_status":null,"runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"selected","inspection":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","requested_microscope_type":"auto","status":"ok","confidence":"high","available_microscope_types":["bbbc021","bbbc038","bioformats","imagexpress","omero","openhcsdata","opera_phenix","source_bindings"],"detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"BioFormatsFilenameParser","metadata_handler_class":"OpenHCSMetadataHandler","root_dir":"","compatible_backends":["zarr","disk"],"available_backends":["disk"],"metadata_file_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/openhcs_metadata.json","grid_dimensions":[1,1],"pixel_size":1.0,"image_files":{"count":2,"sampled_files":["1_s001_w1_z001_t001.tif","1_s001_w2_z001_t001.tif"],"sampled_records":[{"virtual_path":"1_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","metadata":{"filename":"1_s001_w1_z001_t001.tif","virtual_path":"1_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif","type":"Image","OpenHCSOriginalSourceMetadata":{"well":"1%5Fw1.tif"},"OpenHCSSourceFilterPaths":{"0":"1_w1.tif","1":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w1.tif"},"well":1,"site":1,"channel":1,"z_index":1,"timepoint":1,"source_alias":"W1_neuron_neurite","extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"}},{"virtual_path":"1_s001_w2_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w2_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","metadata":{"filename":"1_s001_w2_z001_t001.tif","virtual_path":"1_s001_w2_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_s001_w2_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif","type":"Image","OpenHCSOriginalSourceMetadata":{"well":"1%5Fw2.tif","channel":"1"},"OpenHCSSourceFilterPaths":{"0":"1_w2.tif","1":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate/1_w2.tif"},"well":1,"site":1,"channel":2,"z_index":1,"timepoint":1,"source_alias":"W2_soma_nuclear","extension":".tif","size":"625.1 KB","modified":"2026-08-04T17:56:53"}}],"truncated_file_count":0},"result_files":{"count":0,"scanned_file_count":0,"sampled_files":[],"sampled_records":[],"truncated_file_count":0},"parse_summary":{"attempted_file_count":2,"skipped_file_count":0,"parsed_file_count":2,"failed_file_count":0,"failure_samples":[],"truncated_failure_count":0},"components":[{"component":"site","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"channel","source":"metadata_and_parsed_filenames","count":2,"values":[{"key":"1","label":"W1_neuron_neurite","declared_in_metadata":true,"observed_in_filenames":true},{"key":"2","label":"W2_soma_nuclear","declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"z_index","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"timepoint","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0},{"component":"well","source":"metadata_and_parsed_filenames","count":1,"values":[{"key":"1","label":null,"declared_in_metadata":true,"observed_in_filenames":true}],"truncated_value_count":0}],"source_diagnostics":[],"format_specific_handler_candidates":[],"workspace_preparation":{"read_only_inspection":true,"required_before_execution":false,"operation":"none","reason":"OpenHCS metadata is already present; read-only inspection did not need workspace preparation."},"workflow_advice":{"workflow_scope":"diagnostic","ingestion_route":"detected_handler","ingestion_owner":"openhcsdata","source_binding_role":"not_projected_by_handler","ui_code_document_id":"plate_manager.orchestrator_config","ui_operation":"init","knowledge_query":"source model CZI Bio-Formats source bindings","probable_native_ingestion_owners":[],"message":"Keep the detected openhcsdata handler as the ingestion owner. For a visible workflow, add the plate directory through the PlateManager code document and initialize with auto-detection. Use for a workspace already prepared by OpenHCS and carrying its metadata document. The recorded workspace metadata, not raw vendor filename resemblance, owns parser and backend selection. This handler does not project declared source bindings."}}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_99","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_99","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Debug\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_compile_required\",\n        \"message\": \"Debug controls require a compiled selected plate.\",\n        \"hint\": \"Run the selected-plate compile workflow before invoking debug controls.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"orchestrator_state_not_runnable\",\n        \"message\": \"Selected plate is not in a runnable orchestrator state (ready); run compile_plate before run_plate. Next workflow: compile_plate.\",\n        \"hint\": \"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":true,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Debug","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_compile_required","message":"Debug controls require a compiled selected plate.","hint":"Run the selected-plate compile workflow before invoking debug controls.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"4c68d15c4566d12b7ef8c8ba92af49fcdcbca39fe48e100859bc96245f534c35","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":true,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":true,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":true,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":true,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":{"code":"orchestrator_state_not_runnable","message":"Selected plate is not in a runnable orchestrator state (ready); run compile_plate before run_plate. Next workflow: compile_plate.","hint":"Inspect openhcs_ui_list_actions and plate_manager.state for the current selection and workflow preconditions before invoking this action.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":true,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_100","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"compile_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_100","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"compile_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"workflow\": \"compile_plate\",\n  \"action_result\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    \"status\": \"accepted\",\n    \"receipt\": {\n      \"request_token\": {\n        \"value\": null\n      },\n      \"bridge_operation_id\": \"c34a1490-e3c0-4208-bd90-870a9cb03a7f\",\n      \"accepted\": true\n    },\n    \"target_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n    \"workflow_status_surface_ids\": [\n      \"plate_manager.state\"\n    ],\n    \"recommended_poll_interval_ms\": 500,\n    \"errors\": [],\n    \"warnings\": []\n  },\n  \"state_surface_id\": \"plate_manager.state\",\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","workflow":"compile_plate","action_result":{"schema_version":"openhcs.agent.v1","identity":{"widget_id":"plate_manager","action_id":"compile_plate"},"status":"accepted","receipt":{"request_token":{"value":null},"bridge_operation_id":"c34a1490-e3c0-4208-bd90-870a9cb03a7f","accepted":true},"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","workflow_status_surface_ids":["plate_manager.state"],"recommended_poll_interval_ms":500,"errors":[],"warnings":[]},"state_surface_id":"plate_manager.state","errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_101","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"c34a1490-e3c0-4208-bd90-870a9cb03a7f","timeout_seconds":10,"poll_interval_seconds":0.2},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_101","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"c34a1490-e3c0-4208-bd90-870a9cb03a7f","timeout_seconds":10,"poll_interval_seconds":0.2},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"ui_action_dispatched\",\n      \"message\": \"PlateManager action 'compile_plate' was dispatched as async work; poll plate_manager.state for workflow status.\",\n      \"hint\": null\n    }\n  ],\n  \"status\": \"completed\",\n  \"started_at_unix\": 1785881089.9258747,\n  \"identity\": {\n    \"operation_id\": \"c34a1490-e3c0-4208-bd90-870a9cb03a7f\",\n    \"route\": {\n      \"operation_name\": \"invoke_action\",\n      \"request_id\": null,\n      \"target_id\": \"compile_plate\"\n    }\n  },\n  \"completed_at_unix\": 1785881089.935436,\n  \"outcome\": \"accepted\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[{"code":"ui_action_dispatched","message":"PlateManager action 'compile_plate' was dispatched as async work; poll plate_manager.state for workflow status.","hint":null}],"status":"completed","started_at_unix":1785881089.9258747,"identity":{"operation_id":"c34a1490-e3c0-4208-bd90-870a9cb03a7f","route":{"operation_name":"invoke_action","request_id":null,"target_id":"compile_plate"}},"completed_at_unix":1785881089.935436,"outcome":"accepted"}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_102","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_102","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"b94b99a837a939dedb72644728376c5a31eb2923aeb5b2f67cc6549b6960b7a2\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"b94b99a837a939dedb72644728376c5a31eb2923aeb5b2f67cc6549b6960b7a2\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": false,\n        \"init_pending\": false,\n        \"compile_pending\": true,\n        \"execution_active\": false,\n        \"status_prefix\": \"⏳ Compile\",\n        \"orchestrator_state\": \"ready\",\n        \"execution_id\": \"c2c6f504-0591-41e2-a6a2-c6c8b7e48a71\",\n        \"terminal_status\": null,\n        \"runtime_state\": null,\n        \"runtime_percent\": null,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"b94b99a837a939dedb72644728376c5a31eb2923aeb5b2f67cc6549b6960b7a2","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"b94b99a837a939dedb72644728376c5a31eb2923aeb5b2f67cc6549b6960b7a2","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"idle","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":false,"init_pending":false,"compile_pending":true,"execution_active":false,"status_prefix":"⏳ Compile","orchestrator_state":"ready","execution_id":"c2c6f504-0591-41e2-a6a2-c6c8b7e48a71","terminal_status":null,"runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_103","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_103","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"78d7835e814c244ae248691c9730ec3fe3c81af4b427425130fceac5b03fd6d4\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"78d7835e814c244ae248691c9730ec3fe3c81af4b427425130fceac5b03fd6d4\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": false,\n        \"init_pending\": false,\n        \"compile_pending\": true,\n        \"execution_active\": true,\n        \"status_prefix\": \"⏳ Compiling 0.0%\",\n        \"orchestrator_state\": \"ready\",\n        \"execution_id\": \"c2c6f504-0591-41e2-a6a2-c6c8b7e48a71\",\n        \"terminal_status\": null,\n        \"runtime_state\": \"compiling\",\n        \"runtime_percent\": 0.0,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"78d7835e814c244ae248691c9730ec3fe3c81af4b427425130fceac5b03fd6d4","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"78d7835e814c244ae248691c9730ec3fe3c81af4b427425130fceac5b03fd6d4","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"idle","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":false,"init_pending":false,"compile_pending":true,"execution_active":true,"status_prefix":"⏳ Compiling 0.0%","orchestrator_state":"ready","execution_id":"c2c6f504-0591-41e2-a6a2-c6c8b7e48a71","terminal_status":null,"runtime_state":"compiling","runtime_percent":0.0,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_104","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_104","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"5eb224fe6639ca1cbb4f3a5d81c825f726f817f2faafd2d6a85afe5c9bf10a9e\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"5eb224fe6639ca1cbb4f3a5d81c825f726f817f2faafd2d6a85afe5c9bf10a9e\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": true,\n        \"init_pending\": false,\n        \"compile_pending\": false,\n        \"execution_active\": false,\n        \"status_prefix\": \"✓ Compiled\",\n        \"orchestrator_state\": \"compiled\",\n        \"execution_id\": null,\n        \"terminal_status\": null,\n        \"runtime_state\": null,\n        \"runtime_percent\": null,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"5eb224fe6639ca1cbb4f3a5d81c825f726f817f2faafd2d6a85afe5c9bf10a9e","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"5eb224fe6639ca1cbb4f3a5d81c825f726f817f2faafd2d6a85afe5c9bf10a9e","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"idle","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✓ Compiled","orchestrator_state":"compiled","execution_id":null,"terminal_status":null,"runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_105","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_105","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Inspect Runtime requires an active debug session.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Inspect Runtime'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Start Debug\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_pause_boundary_required\",\n        \"message\": \"Run to Pause requires at least one debug-pause step.\",\n        \"hint\": \"Enable debug_pause on a pipeline step before invoking Run to Pause.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Stop debug session requires an active or pending debug execution.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Stop debug session'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Restart requires an active debug session.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Restart'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":true,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_session_required","message":"Inspect Runtime requires an active debug session.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Inspect Runtime'.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Start Debug","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_pause_boundary_required","message":"Run to Pause requires at least one debug-pause step.","hint":"Enable debug_pause on a pipeline step before invoking Run to Pause.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_session_required","message":"Stop debug session requires an active or pending debug execution.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Stop debug session'.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_session_required","message":"Restart requires an active debug session.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Restart'.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":true,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":true,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":true,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":true,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":true,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_106","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"run_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_106","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_selected_plate_workflow","arguments":{"workflow":"run_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"workflow\": \"run_plate\",\n  \"action_result\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    \"status\": \"accepted\",\n    \"receipt\": {\n      \"request_token\": {\n        \"value\": null\n      },\n      \"bridge_operation_id\": \"2d8e4a02-c913-479b-b241-d993ce4ac23b\",\n      \"accepted\": true\n    },\n    \"target_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n    \"workflow_status_surface_ids\": [\n      \"plate_manager.state\"\n    ],\n    \"recommended_poll_interval_ms\": 500,\n    \"errors\": [],\n    \"warnings\": []\n  },\n  \"state_surface_id\": \"plate_manager.state\",\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","workflow":"run_plate","action_result":{"schema_version":"openhcs.agent.v1","identity":{"widget_id":"plate_manager","action_id":"run_plate"},"status":"accepted","receipt":{"request_token":{"value":null},"bridge_operation_id":"2d8e4a02-c913-479b-b241-d993ce4ac23b","accepted":true},"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","workflow_status_surface_ids":["plate_manager.state"],"recommended_poll_interval_ms":500,"errors":[],"warnings":[]},"state_surface_id":"plate_manager.state","errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_107","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"2d8e4a02-c913-479b-b241-d993ce4ac23b","timeout_seconds":10,"poll_interval_seconds":0.2},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_107","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_wait_for_operation_receipt","arguments":{"operation_id":"2d8e4a02-c913-479b-b241-d993ce4ac23b","timeout_seconds":10,"poll_interval_seconds":0.2},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"ui_action_dispatched\",\n      \"message\": \"PlateManager action 'run_plate' was dispatched as async work; poll plate_manager.state for workflow status.\",\n      \"hint\": null\n    }\n  ],\n  \"status\": \"completed\",\n  \"started_at_unix\": 1785881106.3880613,\n  \"identity\": {\n    \"operation_id\": \"2d8e4a02-c913-479b-b241-d993ce4ac23b\",\n    \"route\": {\n      \"operation_name\": \"invoke_action\",\n      \"request_id\": null,\n      \"target_id\": \"run_plate\"\n    }\n  },\n  \"completed_at_unix\": 1785881106.3892174,\n  \"outcome\": \"accepted\"\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[{"code":"ui_action_dispatched","message":"PlateManager action 'run_plate' was dispatched as async work; poll plate_manager.state for workflow status.","hint":null}],"status":"completed","started_at_unix":1785881106.3880613,"identity":{"operation_id":"2d8e4a02-c913-479b-b241-d993ce4ac23b","route":{"operation_name":"invoke_action","request_id":null,"target_id":"run_plate"}},"completed_at_unix":1785881106.3892174,"outcome":"accepted"}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_108","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_108","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"running\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": true,\n        \"init_pending\": false,\n        \"compile_pending\": false,\n        \"execution_active\": true,\n        \"status_prefix\": \"⚙️ Executing 50.0%\",\n        \"orchestrator_state\": \"executing\",\n        \"execution_id\": \"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa\",\n        \"terminal_status\": null,\n        \"runtime_state\": \"executing\",\n        \"runtime_percent\": 50.0,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"running","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":true,"status_prefix":"⚙️ Executing 50.0%","orchestrator_state":"executing","execution_id":"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa","terminal_status":null,"runtime_state":"executing","runtime_percent":50.0,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_109","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"ui_live_overview.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_109","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"ui_live_overview.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"bc35fd95806fba699aa3ecc41681589fb54b1acec2486ea3d8a0c69bd3c64012\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"main_window\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"ui_live_overview.state\"\n    },\n    \"title\": \"UI live overview\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"all\"\n    ],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.live_overview_state.v1\",\n  \"payload\": {\n    \"selection_mode\": null,\n    \"selected_scope_ids\": [],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"bc35fd95806fba699aa3ecc41681589fb54b1acec2486ea3d8a0c69bd3c64012\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"main_window\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"ui_live_overview.state\"\n      },\n      \"title\": \"UI live overview\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"all\"\n      ],\n      \"current_selection_count\": 0,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"sections\": [\n      {\n        \"section_id\": \"pipeline_debug_toolbar.session\",\n        \"title\": \"Pipeline debug session state\",\n        \"summary\": \"pending_execution\",\n        \"metrics\": [\n          {\n            \"key\": \"phase\",\n            \"label\": \"phase\",\n            \"value\": \"pending_execution\"\n          },\n          {\n            \"key\": \"compiled\",\n            \"label\": \"compiled\",\n            \"value\": \"True\"\n          },\n          {\n            \"key\": \"actions\",\n            \"label\": \"actions\",\n            \"value\": \"7\"\n          },\n          {\n            \"key\": \"disabled\",\n            \"label\": \"disabled\",\n            \"value\": \"6\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"Inspect Runtime\",\n            \"status\": \"debug_execution_pending\",\n            \"detail\": \"A debug execution is queued or running, but no paused debug session is available yet.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Start Debug\",\n            \"status\": \"debug_execution_pending\",\n            \"detail\": \"A debug execution is queued or running, but no paused debug session is available yet.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Step\",\n            \"status\": \"debug_execution_pending\",\n            \"detail\": \"A debug execution is queued or running, but no paused debug session is available yet.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Run to Pause\",\n            \"status\": \"debug_execution_pending\",\n            \"detail\": \"A debug execution is queued or running, but no paused debug session is available yet.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Choose source group\",\n            \"status\": \"debug_execution_pending\",\n            \"detail\": \"A debug execution is queued or running, but no paused debug session is available yet.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          },\n          {\n            \"label\": \"Restart\",\n            \"status\": \"debug_execution_pending\",\n            \"detail\": \"A debug execution is queued or running, but no paused debug session is available yet.\",\n            \"severity\": \"info\",\n            \"source_surface_id\": \"pipeline_debug_toolbar.session\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"pipeline_debug_toolbar\"\n          }\n        ]\n      },\n      {\n        \"section_id\": \"plate_manager.state\",\n        \"title\": \"Plate manager state\",\n        \"summary\": \"running\",\n        \"metrics\": [\n          {\n            \"key\": \"plates\",\n            \"label\": \"plates\",\n            \"value\": \"1\"\n          },\n          {\n            \"key\": \"selected\",\n            \"label\": \"selected\",\n            \"value\": \"1\"\n          },\n          {\n            \"key\": \"active\",\n            \"label\": \"active\",\n            \"value\": \"1\"\n          },\n          {\n            \"key\": \"queued\",\n            \"label\": \"queued\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"plate\",\n            \"status\": \"⚙️ Executing 50.0%\",\n            \"detail\": \"initialized=True compiled=True active=True progress=50.0%\",\n            \"severity\": \"warning\",\n            \"source_surface_id\": \"plate_manager.state\",\n            \"source_window_id\": null,\n            \"source_widget_id\": \"plate_manager\"\n          }\n        ]\n      },\n      {\n        \"section_id\": \"plate_manager.live_measurements\",\n        \"title\": \"Live measurement results\",\n        \"summary\": \"No live measurement results yet\",\n        \"metrics\": [\n          {\n            \"key\": \"tables\",\n            \"label\": \"tables\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"rows\",\n            \"label\": \"rows\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"executions\",\n            \"label\": \"executions\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      },\n      {\n        \"section_id\": \"qt_top_level.windows\",\n        \"title\": \"Qt top-level windows\",\n        \"summary\": \"0 windows\",\n        \"metrics\": [\n          {\n            \"key\": \"windows\",\n            \"label\": \"windows\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"visible\",\n            \"label\": \"visible\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"error_dialogs\",\n            \"label\": \"error dialogs\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      },\n      {\n        \"section_id\": \"main_window.windows\",\n        \"title\": \"Main window windows\",\n        \"summary\": \"8 windows\",\n        \"metrics\": [\n          {\n            \"key\": \"windows\",\n            \"label\": \"windows\",\n            \"value\": \"8\"\n          },\n          {\n            \"key\": \"visible\",\n            \"label\": \"visible\",\n            \"value\": \"4\"\n          },\n          {\n            \"key\": \"error_dialogs\",\n            \"label\": \"error dialogs\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"System Monitor\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"system_monitor\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Plate Manager\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"plate_manager\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"ZMQ Server Manager\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"zmq_server_manager\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Pipeline Editor\",\n            \"status\": \"embedded\",\n            \"detail\": \"visible=True focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"pipeline_editor\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Image Browser\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"image_browser\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Log Viewer\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"log_viewer\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"OpenHCS Knowledge Base\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"knowledge_base\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"About OpenHCS\",\n            \"status\": \"managed\",\n            \"detail\": \"visible=False focusable=True\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"about_openhcs\",\n            \"source_widget_id\": null\n          }\n        ]\n      },\n      {\n        \"section_id\": \"zmq_server_manager\",\n        \"title\": \"ZMQ Server Manager\",\n        \"summary\": \"2 servers\",\n        \"metrics\": [\n          {\n            \"key\": \"servers\",\n            \"label\": \"servers\",\n            \"value\": \"2\"\n          },\n          {\n            \"key\": \"ready\",\n            \"label\": \"ready\",\n            \"value\": \"2\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"Port 7888 - OpenHCSUiBridgeServer\",\n            \"status\": \"✅\",\n            \"detail\": \"\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"zmq_server_manager\",\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"Port 7813 - Execution Server\",\n            \"status\": \"⚙️ 1 executing\",\n            \"detail\": \"Avg: 50.0% | 1 plates\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": \"zmq_server_manager\",\n            \"source_widget_id\": null\n          }\n        ]\n      },\n      {\n        \"section_id\": \"ui-bridge-operations\",\n        \"title\": \"UI bridge operations\",\n        \"summary\": \"0 running, 0 failed, 5 completed\",\n        \"metrics\": [\n          {\n            \"key\": \"running\",\n            \"label\": \"Running\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"failed\",\n            \"label\": \"Failed\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"completed\",\n            \"label\": \"Completed\",\n            \"value\": \"5\"\n          }\n        ],\n        \"items\": [\n          {\n            \"label\": \"invoke_action\",\n            \"status\": \"completed\",\n            \"detail\": \"run_plate (2d8e4a02-c913-479b-b241-d993ce4ac23b)\",\n            \"severity\": \"warning\",\n            \"source_surface_id\": null,\n            \"source_window_id\": null,\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"invoke_action\",\n            \"status\": \"completed\",\n            \"detail\": \"compile_plate (c34a1490-e3c0-4208-bd90-870a9cb03a7f)\",\n            \"severity\": \"warning\",\n            \"source_surface_id\": null,\n            \"source_window_id\": null,\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"invoke_action\",\n            \"status\": \"completed\",\n            \"detail\": \"init_plate (b36c2cad-39a6-451e-9d26-aa02fd35d861)\",\n            \"severity\": \"warning\",\n            \"source_surface_id\": null,\n            \"source_window_id\": null,\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"apply_document\",\n            \"status\": \"completed\",\n            \"detail\": \"plate_manager.orchestrator_config (03a9591e-0e8e-44f5-aa11-5c01d787eef8)\",\n            \"severity\": \"info\",\n            \"source_surface_id\": null,\n            \"source_window_id\": null,\n            \"source_widget_id\": null\n          },\n          {\n            \"label\": \"apply_document\",\n            \"status\": \"completed\",\n            \"detail\": \"plate_manager.orchestrator_config (46260318-206b-415c-a7b9-511170f4f32b)\",\n            \"severity\": \"error\",\n            \"source_surface_id\": null,\n            \"source_window_id\": null,\n            \"source_widget_id\": null\n          }\n        ]\n      },\n      {\n        \"section_id\": \"viewer-sessions\",\n        \"title\": \"Viewer sessions\",\n        \"summary\": \"0 viewers\",\n        \"metrics\": [\n          {\n            \"key\": \"viewers\",\n            \"label\": \"viewers\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"healthy\",\n            \"label\": \"healthy\",\n            \"value\": \"0\"\n          },\n          {\n            \"key\": \"queued_images\",\n            \"label\": \"queued images\",\n            \"value\": \"0\"\n          }\n        ],\n        \"items\": []\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":[],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"bc35fd95806fba699aa3ecc41681589fb54b1acec2486ea3d8a0c69bd3c64012","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"main_window","schema_version":"openhcs.agent.v1","identity":{"surface_id":"ui_live_overview.state"},"title":"UI live overview","readable":true,"supported_selection_modes":["all"],"current_selection_count":0,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.live_overview_state.v1","payload":{"selection_mode":null,"selected_scope_ids":[],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"bc35fd95806fba699aa3ecc41681589fb54b1acec2486ea3d8a0c69bd3c64012","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"main_window","schema_version":"openhcs.agent.v1","identity":{"surface_id":"ui_live_overview.state"},"title":"UI live overview","readable":true,"supported_selection_modes":["all"],"current_selection_count":0,"total_scope_count":1},"unchanged":false,"object_state_token":6,"sections":[{"section_id":"pipeline_debug_toolbar.session","title":"Pipeline debug session state","summary":"pending_execution","metrics":[{"key":"phase","label":"phase","value":"pending_execution"},{"key":"compiled","label":"compiled","value":"True"},{"key":"actions","label":"actions","value":"7"},{"key":"disabled","label":"disabled","value":"6"}],"items":[{"label":"Inspect Runtime","status":"debug_execution_pending","detail":"A debug execution is queued or running, but no paused debug session is available yet.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Start Debug","status":"debug_execution_pending","detail":"A debug execution is queued or running, but no paused debug session is available yet.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Step","status":"debug_execution_pending","detail":"A debug execution is queued or running, but no paused debug session is available yet.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Run to Pause","status":"debug_execution_pending","detail":"A debug execution is queued or running, but no paused debug session is available yet.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Choose source group","status":"debug_execution_pending","detail":"A debug execution is queued or running, but no paused debug session is available yet.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"},{"label":"Restart","status":"debug_execution_pending","detail":"A debug execution is queued or running, but no paused debug session is available yet.","severity":"info","source_surface_id":"pipeline_debug_toolbar.session","source_window_id":null,"source_widget_id":"pipeline_debug_toolbar"}]},{"section_id":"plate_manager.state","title":"Plate manager state","summary":"running","metrics":[{"key":"plates","label":"plates","value":"1"},{"key":"selected","label":"selected","value":"1"},{"key":"active","label":"active","value":"1"},{"key":"queued","label":"queued","value":"0"}],"items":[{"label":"plate","status":"⚙️ Executing 50.0%","detail":"initialized=True compiled=True active=True progress=50.0%","severity":"warning","source_surface_id":"plate_manager.state","source_window_id":null,"source_widget_id":"plate_manager"}]},{"section_id":"plate_manager.live_measurements","title":"Live measurement results","summary":"No live measurement results yet","metrics":[{"key":"tables","label":"tables","value":"0"},{"key":"rows","label":"rows","value":"0"},{"key":"executions","label":"executions","value":"0"}],"items":[]},{"section_id":"qt_top_level.windows","title":"Qt top-level windows","summary":"0 windows","metrics":[{"key":"windows","label":"windows","value":"0"},{"key":"visible","label":"visible","value":"0"},{"key":"error_dialogs","label":"error dialogs","value":"0"}],"items":[]},{"section_id":"main_window.windows","title":"Main window windows","summary":"8 windows","metrics":[{"key":"windows","label":"windows","value":"8"},{"key":"visible","label":"visible","value":"4"},{"key":"error_dialogs","label":"error dialogs","value":"0"}],"items":[{"label":"System Monitor","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"system_monitor","source_widget_id":null},{"label":"Plate Manager","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"plate_manager","source_widget_id":null},{"label":"ZMQ Server Manager","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"zmq_server_manager","source_widget_id":null},{"label":"Pipeline Editor","status":"embedded","detail":"visible=True focusable=True","severity":"info","source_surface_id":null,"source_window_id":"pipeline_editor","source_widget_id":null},{"label":"Image Browser","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"image_browser","source_widget_id":null},{"label":"Log Viewer","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"log_viewer","source_widget_id":null},{"label":"OpenHCS Knowledge Base","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"knowledge_base","source_widget_id":null},{"label":"About OpenHCS","status":"managed","detail":"visible=False focusable=True","severity":"info","source_surface_id":null,"source_window_id":"about_openhcs","source_widget_id":null}]},{"section_id":"zmq_server_manager","title":"ZMQ Server Manager","summary":"2 servers","metrics":[{"key":"servers","label":"servers","value":"2"},{"key":"ready","label":"ready","value":"2"}],"items":[{"label":"Port 7888 - OpenHCSUiBridgeServer","status":"✅","detail":"","severity":"info","source_surface_id":null,"source_window_id":"zmq_server_manager","source_widget_id":null},{"label":"Port 7813 - Execution Server","status":"⚙️ 1 executing","detail":"Avg: 50.0% | 1 plates","severity":"info","source_surface_id":null,"source_window_id":"zmq_server_manager","source_widget_id":null}]},{"section_id":"ui-bridge-operations","title":"UI bridge operations","summary":"0 running, 0 failed, 5 completed","metrics":[{"key":"running","label":"Running","value":"0"},{"key":"failed","label":"Failed","value":"0"},{"key":"completed","label":"Completed","value":"5"}],"items":[{"label":"invoke_action","status":"completed","detail":"run_plate (2d8e4a02-c913-479b-b241-d993ce4ac23b)","severity":"warning","source_surface_id":null,"source_window_id":null,"source_widget_id":null},{"label":"invoke_action","status":"completed","detail":"compile_plate (c34a1490-e3c0-4208-bd90-870a9cb03a7f)","severity":"warning","source_surface_id":null,"source_window_id":null,"source_widget_id":null},{"label":"invoke_action","status":"completed","detail":"init_plate (b36c2cad-39a6-451e-9d26-aa02fd35d861)","severity":"warning","source_surface_id":null,"source_window_id":null,"source_widget_id":null},{"label":"apply_document","status":"completed","detail":"plate_manager.orchestrator_config (03a9591e-0e8e-44f5-aa11-5c01d787eef8)","severity":"info","source_surface_id":null,"source_window_id":null,"source_widget_id":null},{"label":"apply_document","status":"completed","detail":"plate_manager.orchestrator_config (46260318-206b-415c-a7b9-511170f4f32b)","severity":"error","source_surface_id":null,"source_window_id":null,"source_widget_id":null}]},{"section_id":"viewer-sessions","title":"Viewer sessions","summary":"0 viewers","metrics":[{"key":"viewers","label":"viewers","value":"0"},{"key":"healthy","label":"healthy","value":"0"},{"key":"queued_images","label":"queued images","value":"0"}],"items":[]}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_110","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_110","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"running\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": true,\n        \"init_pending\": false,\n        \"compile_pending\": false,\n        \"execution_active\": true,\n        \"status_prefix\": \"⚙️ Executing 50.0%\",\n        \"orchestrator_state\": \"executing\",\n        \"execution_id\": \"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa\",\n        \"terminal_status\": null,\n        \"runtime_state\": \"executing\",\n        \"runtime_percent\": 50.0,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"edb4305b88cc32f3d833539743645d4f82a85917fe104c91481ab717b9c31972","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"running","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":true,"status_prefix":"⚙️ Executing 50.0%","orchestrator_state":"executing","execution_id":"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa","terminal_status":null,"runtime_state":"executing","runtime_percent":50.0,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_111","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_111","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.state","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"9e3685a3fb49cb842c57098dbd154bed9dcd6de0a049b365c865557af4678a9a\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.state\"\n    },\n    \"title\": \"Plate manager state\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.plate_manager_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"9e3685a3fb49cb842c57098dbd154bed9dcd6de0a049b365c865557af4678a9a\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.state\"\n      },\n      \"title\": \"Plate manager state\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"manager_execution_state\": \"idle\",\n    \"rows\": [\n      {\n        \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"name\": \"plate\",\n        \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"cppipe_path\": null,\n        \"selected\": true,\n        \"initialized\": true,\n        \"compiled\": true,\n        \"init_pending\": false,\n        \"compile_pending\": false,\n        \"execution_active\": false,\n        \"status_prefix\": \"✅ Complete\",\n        \"orchestrator_state\": \"completed\",\n        \"execution_id\": null,\n        \"terminal_status\": \"complete\",\n        \"runtime_state\": null,\n        \"runtime_percent\": null,\n        \"queue_position\": null,\n        \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n        \"source_plate_scope_id\": null,\n        \"source_plate_root\": null,\n        \"debug_phase\": null,\n        \"debug_session_id\": null,\n        \"scope_accent_color\": \"#008039\"\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"9e3685a3fb49cb842c57098dbd154bed9dcd6de0a049b365c865557af4678a9a","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"payload_schema":"openhcs.ui.plate_manager_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"9e3685a3fb49cb842c57098dbd154bed9dcd6de0a049b365c865557af4678a9a","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.state"},"title":"Plate manager state","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"unchanged":false,"object_state_token":6,"manager_execution_state":"idle","rows":[{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_112","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.live_measurements","selection_mode":"all"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_112","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_state_surface","arguments":{"surface_id":"plate_manager.live_measurements","selection_mode":"all"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"all\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"201962063e22260aa9dcaf7db83d16a16eb651332e41714f6f6ec7ff691942a9\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"surface_id\": \"plate_manager.live_measurements\"\n    },\n    \"title\": \"Live measurement results\",\n    \"readable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 2,\n    \"total_scope_count\": 2\n  },\n  \"unchanged\": false,\n  \"payload_schema\": \"openhcs.ui.live_measurements_state.v1\",\n  \"payload\": {\n    \"selection_mode\": \"all\",\n    \"selected_scope_ids\": [\n      \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n    ],\n    \"current_snapshot\": {\n      \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"index\": 1,\n      \"branch\": \"main\",\n      \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n      \"timestamp_unix\": 1785881053.8182206,\n      \"timestamp\": \"2026-08-04T18:04:13.818\",\n      \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n      \"num_states\": 9,\n      \"is_current\": true,\n      \"is_head\": true,\n      \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n    },\n    \"current_revision_token\": \"201962063e22260aa9dcaf7db83d16a16eb651332e41714f6f6ec7ff691942a9\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"summary\": {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"identity\": {\n        \"surface_id\": \"plate_manager.live_measurements\"\n      },\n      \"title\": \"Live measurement results\",\n      \"readable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 2,\n      \"total_scope_count\": 2\n    },\n    \"unchanged\": false,\n    \"object_state_token\": 6,\n    \"retained_entry_count\": 2,\n    \"visible_entry_count\": 2,\n    \"total_row_count\": 10,\n    \"latest_sequence_id\": 1,\n    \"entries\": [\n      {\n        \"sequence_id\": 1,\n        \"execution_id\": \"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa\",\n        \"plate_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"axis_id\": \"1\",\n        \"step_name\": \"Per-neuron morphology and topology\",\n        \"preview\": {\n          \"address\": {\n            \"key\": {\n              \"name\": \"neurite_outgrowth_cells\",\n              \"artifact_type\": \"measurements\",\n              \"scope\": {\n                \"axis_id\": \"1\",\n                \"component\": null,\n                \"value\": null,\n                \"fixed_component_values\": [\n                  [\n                    \"site\",\n                    \"1\"\n                  ],\n                  [\n                    \"z_index\",\n                    \"1\"\n                  ],\n                  [\n                    \"timepoint\",\n                    \"1\"\n                  ]\n                ]\n              },\n              \"semantic_id\": \"('measurement_subject:object:neurons:cell', None, None)\"\n            },\n            \"location\": {\n              \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results/1_neurite_outgrowth_cells_step1.pkl\",\n              \"backend\": \"memory\"\n            },\n            \"value_type\": \"MeasurementTable\"\n          },\n          \"columns\": [\n            \"slice_index\",\n            \"cell\",\n            \"total_outgrowth_um\",\n            \"processes\",\n            \"mean_process_length_um\",\n            \"median_process_length_um\",\n            \"max_process_length_um\",\n            \"branches\",\n            \"straightness\",\n            \"cell_body_area_um2\",\n            \"mean_outgrowth_intensity\",\n            \"significant_growth\",\n            \"object_name\",\n            \"site\",\n            \"channel\",\n            \"z_index\",\n            \"timepoint\",\n            \"well\",\n            \"source_image_name\"\n          ],\n          \"rows\": [\n            {\n              \"slice_index\": 0,\n              \"cell\": 1,\n              \"total_outgrowth_um\": 36.0,\n              \"processes\": 5,\n              \"mean_process_length_um\": 7.2,\n              \"median_process_length_um\": 36.0,\n              \"max_process_length_um\": 36.0,\n              \"branches\": 0,\n              \"straightness\": 0.9001140173634129,\n              \"cell_body_area_um2\": 560.0,\n              \"mean_outgrowth_intensity\": 147.63636363636363,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 2,\n              \"total_outgrowth_um\": 198.0,\n              \"processes\": 5,\n              \"mean_process_length_um\": 39.6,\n              \"median_process_length_um\": 99.0,\n              \"max_process_length_um\": 99.46718210374803,\n              \"branches\": 0,\n              \"straightness\": 0.9446275401573239,\n              \"cell_body_area_um2\": 1054.0,\n              \"mean_outgrowth_intensity\": 104.11075268817204,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 3,\n              \"total_outgrowth_um\": 304.0,\n              \"processes\": 11,\n              \"mean_process_length_um\": 27.636363636363637,\n              \"median_process_length_um\": 108.58628696685729,\n              \"max_process_length_um\": 142.83431524993114,\n              \"branches\": 0,\n              \"straightness\": 0.9087708436523467,\n              \"cell_body_area_um2\": 1303.0,\n              \"mean_outgrowth_intensity\": 84.3830258302583,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 4,\n              \"total_outgrowth_um\": 191.0,\n              \"processes\": 8,\n              \"mean_process_length_um\": 23.875,\n              \"median_process_length_um\": 95.5,\n              \"max_process_length_um\": 120.50854888512922,\n              \"branches\": 0,\n              \"straightness\": 0.905776250358495,\n              \"cell_body_area_um2\": 927.0,\n              \"mean_outgrowth_intensity\": 104.7080291970803,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 5,\n              \"total_outgrowth_um\": 217.0,\n              \"processes\": 2,\n              \"mean_process_length_um\": 108.5,\n              \"median_process_length_um\": 108.5,\n              \"max_process_length_um\": 163.39833257643272,\n              \"branches\": 6,\n              \"straightness\": 0.9411274916587445,\n              \"cell_body_area_um2\": 908.0,\n              \"mean_outgrowth_intensity\": 132.70716510903426,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 6,\n              \"total_outgrowth_um\": 291.0,\n              \"processes\": 5,\n              \"mean_process_length_um\": 58.2,\n              \"median_process_length_um\": 127.02521815712572,\n              \"max_process_length_um\": 128.0483183042508,\n              \"branches\": 0,\n              \"straightness\": 0.911772474440707,\n              \"cell_body_area_um2\": 1179.0,\n              \"mean_outgrowth_intensity\": 125.34565499351491,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 7,\n              \"total_outgrowth_um\": 460.0,\n              \"processes\": 4,\n              \"mean_process_length_um\": 115.0,\n              \"median_process_length_um\": 230.0,\n              \"max_process_length_um\": 282.43657386284605,\n              \"branches\": 2,\n              \"straightness\": 0.8386077242010708,\n              \"cell_body_area_um2\": 1052.0,\n              \"mean_outgrowth_intensity\": 130.06031210459722,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 8,\n              \"total_outgrowth_um\": 114.0,\n              \"processes\": 3,\n              \"mean_process_length_um\": 38.0,\n              \"median_process_length_um\": 114.0,\n              \"max_process_length_um\": 114.0,\n              \"branches\": 0,\n              \"straightness\": 0.9065225818912629,\n              \"cell_body_area_um2\": 656.0,\n              \"mean_outgrowth_intensity\": 147.79014598540147,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": 0,\n              \"cell\": 9,\n              \"total_outgrowth_um\": 171.0,\n              \"processes\": 4,\n              \"mean_process_length_um\": 42.75,\n              \"median_process_length_um\": 85.5,\n              \"max_process_length_um\": 98.63205567039203,\n              \"branches\": 0,\n              \"straightness\": 0.8548343932966074,\n              \"cell_body_area_um2\": 623.0,\n              \"mean_outgrowth_intensity\": 74.01011804384486,\n              \"significant_growth\": true,\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            }\n          ],\n          \"row_count\": 9,\n          \"truncated_rows\": false,\n          \"truncated_columns\": false,\n          \"materialized_locations\": [\n            {\n              \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv\",\n              \"backend\": \"disk\"\n            }\n          ],\n          \"object_name\": \"neurons\",\n          \"source_image_name\": null\n        },\n        \"truncated_preview_group\": false\n      },\n      {\n        \"sequence_id\": 0,\n        \"execution_id\": \"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa\",\n        \"plate_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n        \"axis_id\": \"1\",\n        \"step_name\": \"Per-neuron morphology and topology\",\n        \"preview\": {\n          \"address\": {\n            \"key\": {\n              \"name\": \"neurite_outgrowth_summary\",\n              \"artifact_type\": \"measurements\",\n              \"scope\": {\n                \"axis_id\": \"1\",\n                \"component\": null,\n                \"value\": null,\n                \"fixed_component_values\": [\n                  [\n                    \"site\",\n                    \"1\"\n                  ],\n                  [\n                    \"z_index\",\n                    \"1\"\n                  ],\n                  [\n                    \"timepoint\",\n                    \"1\"\n                  ]\n                ]\n              },\n              \"semantic_id\": \"('measurement_subject:artifact::', None, None)\"\n            },\n            \"location\": {\n              \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results/1_neurite_outgrowth_summary_step1.pkl\",\n              \"backend\": \"memory\"\n            },\n            \"value_type\": \"MeasurementTable\"\n          },\n          \"columns\": [\n            \"neurite_channel_index\",\n            \"cell_body_channel_index\",\n            \"nuclear_channel_index\",\n            \"number_of_cells\",\n            \"total_outgrowth_um\",\n            \"mean_outgrowth_per_cell_um\",\n            \"total_processes\",\n            \"mean_processes_per_cell\",\n            \"total_branches\",\n            \"mean_branches_per_cell\",\n            \"total_cell_body_area_um2\",\n            \"mean_cell_body_area_um2\",\n            \"straightness\",\n            \"cells_significant_growth\",\n            \"percent_cells_significant_growth\",\n            \"mean_outgrowth_average_intensity\",\n            \"resolved_crossovers\",\n            \"site\",\n            \"z_index\",\n            \"timepoint\",\n            \"well\"\n          ],\n          \"rows\": [\n            {\n              \"neurite_channel_index\": 0,\n              \"cell_body_channel_index\": 0,\n              \"nuclear_channel_index\": 1,\n              \"number_of_cells\": 9,\n              \"total_outgrowth_um\": 1982.0,\n              \"mean_outgrowth_per_cell_um\": 220.22222222222223,\n              \"total_processes\": 47,\n              \"mean_processes_per_cell\": 5.222222222222222,\n              \"total_branches\": 8,\n              \"mean_branches_per_cell\": 0.8888888888888888,\n              \"total_cell_body_area_um2\": 8262.0,\n              \"mean_cell_body_area_um2\": 918.0,\n              \"straightness\": 0.9013503685577745,\n              \"cells_significant_growth\": 9,\n              \"percent_cells_significant_growth\": 100.0,\n              \"mean_outgrowth_average_intensity\": 115.82753794811067,\n              \"resolved_crossovers\": 0,\n              \"site\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\"\n            }\n          ],\n          \"row_count\": 1,\n          \"truncated_rows\": false,\n          \"truncated_columns\": false,\n          \"materialized_locations\": [\n            {\n              \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv\",\n              \"backend\": \"disk\"\n            }\n          ],\n          \"object_name\": null,\n          \"source_image_name\": null\n        },\n        \"truncated_preview_group\": false\n      }\n    ]\n  }\n}"}],"structured_content":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"201962063e22260aa9dcaf7db83d16a16eb651332e41714f6f6ec7ff691942a9","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.live_measurements"},"title":"Live measurement results","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":2,"total_scope_count":2},"unchanged":false,"payload_schema":"openhcs.ui.live_measurements_state.v1","payload":{"selection_mode":"all","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"201962063e22260aa9dcaf7db83d16a16eb651332e41714f6f6ec7ff691942a9","schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"surface_id":"plate_manager.live_measurements"},"title":"Live measurement results","readable":true,"supported_selection_modes":["selected","all"],"current_selection_count":2,"total_scope_count":2},"unchanged":false,"object_state_token":6,"retained_entry_count":2,"visible_entry_count":2,"total_row_count":10,"latest_sequence_id":1,"entries":[{"sequence_id":1,"execution_id":"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa","plate_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","axis_id":"1","step_name":"Per-neuron morphology and topology","preview":{"address":{"key":{"name":"neurite_outgrowth_cells","artifact_type":"measurements","scope":{"axis_id":"1","component":null,"value":null,"fixed_component_values":[["site","1"],["z_index","1"],["timepoint","1"]]},"semantic_id":"('measurement_subject:object:neurons:cell', None, None)"},"location":{"path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results/1_neurite_outgrowth_cells_step1.pkl","backend":"memory"},"value_type":"MeasurementTable"},"columns":["slice_index","cell","total_outgrowth_um","processes","mean_process_length_um","median_process_length_um","max_process_length_um","branches","straightness","cell_body_area_um2","mean_outgrowth_intensity","significant_growth","object_name","site","channel","z_index","timepoint","well","source_image_name"],"rows":[{"slice_index":0,"cell":1,"total_outgrowth_um":36.0,"processes":5,"mean_process_length_um":7.2,"median_process_length_um":36.0,"max_process_length_um":36.0,"branches":0,"straightness":0.9001140173634129,"cell_body_area_um2":560.0,"mean_outgrowth_intensity":147.63636363636363,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":2,"total_outgrowth_um":198.0,"processes":5,"mean_process_length_um":39.6,"median_process_length_um":99.0,"max_process_length_um":99.46718210374803,"branches":0,"straightness":0.9446275401573239,"cell_body_area_um2":1054.0,"mean_outgrowth_intensity":104.11075268817204,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":3,"total_outgrowth_um":304.0,"processes":11,"mean_process_length_um":27.636363636363637,"median_process_length_um":108.58628696685729,"max_process_length_um":142.83431524993114,"branches":0,"straightness":0.9087708436523467,"cell_body_area_um2":1303.0,"mean_outgrowth_intensity":84.3830258302583,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":4,"total_outgrowth_um":191.0,"processes":8,"mean_process_length_um":23.875,"median_process_length_um":95.5,"max_process_length_um":120.50854888512922,"branches":0,"straightness":0.905776250358495,"cell_body_area_um2":927.0,"mean_outgrowth_intensity":104.7080291970803,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":5,"total_outgrowth_um":217.0,"processes":2,"mean_process_length_um":108.5,"median_process_length_um":108.5,"max_process_length_um":163.39833257643272,"branches":6,"straightness":0.9411274916587445,"cell_body_area_um2":908.0,"mean_outgrowth_intensity":132.70716510903426,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":6,"total_outgrowth_um":291.0,"processes":5,"mean_process_length_um":58.2,"median_process_length_um":127.02521815712572,"max_process_length_um":128.0483183042508,"branches":0,"straightness":0.911772474440707,"cell_body_area_um2":1179.0,"mean_outgrowth_intensity":125.34565499351491,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":7,"total_outgrowth_um":460.0,"processes":4,"mean_process_length_um":115.0,"median_process_length_um":230.0,"max_process_length_um":282.43657386284605,"branches":2,"straightness":0.8386077242010708,"cell_body_area_um2":1052.0,"mean_outgrowth_intensity":130.06031210459722,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":8,"total_outgrowth_um":114.0,"processes":3,"mean_process_length_um":38.0,"median_process_length_um":114.0,"max_process_length_um":114.0,"branches":0,"straightness":0.9065225818912629,"cell_body_area_um2":656.0,"mean_outgrowth_intensity":147.79014598540147,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":0,"cell":9,"total_outgrowth_um":171.0,"processes":4,"mean_process_length_um":42.75,"median_process_length_um":85.5,"max_process_length_um":98.63205567039203,"branches":0,"straightness":0.8548343932966074,"cell_body_area_um2":623.0,"mean_outgrowth_intensity":74.01011804384486,"significant_growth":true,"object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"}],"row_count":9,"truncated_rows":false,"truncated_columns":false,"materialized_locations":[{"path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv","backend":"disk"}],"object_name":"neurons","source_image_name":null},"truncated_preview_group":false},{"sequence_id":0,"execution_id":"5eb099f1-9f1d-411a-8ea5-e9d9cb8279fa","plate_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","axis_id":"1","step_name":"Per-neuron morphology and topology","preview":{"address":{"key":{"name":"neurite_outgrowth_summary","artifact_type":"measurements","scope":{"axis_id":"1","component":null,"value":null,"fixed_component_values":[["site","1"],["z_index","1"],["timepoint","1"]]},"semantic_id":"('measurement_subject:artifact::', None, None)"},"location":{"path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/results/1_neurite_outgrowth_summary_step1.pkl","backend":"memory"},"value_type":"MeasurementTable"},"columns":["neurite_channel_index","cell_body_channel_index","nuclear_channel_index","number_of_cells","total_outgrowth_um","mean_outgrowth_per_cell_um","total_processes","mean_processes_per_cell","total_branches","mean_branches_per_cell","total_cell_body_area_um2","mean_cell_body_area_um2","straightness","cells_significant_growth","percent_cells_significant_growth","mean_outgrowth_average_intensity","resolved_crossovers","site","z_index","timepoint","well"],"rows":[{"neurite_channel_index":0,"cell_body_channel_index":0,"nuclear_channel_index":1,"number_of_cells":9,"total_outgrowth_um":1982.0,"mean_outgrowth_per_cell_um":220.22222222222223,"total_processes":47,"mean_processes_per_cell":5.222222222222222,"total_branches":8,"mean_branches_per_cell":0.8888888888888888,"total_cell_body_area_um2":8262.0,"mean_cell_body_area_um2":918.0,"straightness":0.9013503685577745,"cells_significant_growth":9,"percent_cells_significant_growth":100.0,"mean_outgrowth_average_intensity":115.82753794811067,"resolved_crossovers":0,"site":"1","z_index":"1","timepoint":"1","well":"1"}],"row_count":1,"truncated_rows":false,"truncated_columns":false,"materialized_locations":[{"path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv","backend":"disk"}],"object_name":null,"source_image_name":null},"truncated_preview_group":false}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_113","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","limit":100,"include_previews":true,"max_preview_lines":20},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_113","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","limit":100,"include_previews":true,"max_preview_lines":20},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 14,\n    \"returned_count\": 14,\n    \"offset\": 0,\n    \"limit\": 100,\n    \"truncated_count\": 0,\n    \"records\": [\n      {\n        \"kind\": \"image\",\n        \"key\": \"review_images/1_s001_w1_z001_t001.tif\",\n        \"metadata\": {\n          \"filename\": \"review_images/1_s001_w1_z001_t001.tif\",\n          \"virtual_path\": \"review_images/1_s001_w1_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n          \"type\": \"Image\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".tif\",\n          \"size\": \"625.2 KB\",\n          \"modified\": \"2026-08-04T18:05:10\"\n        },\n        \"virtual_path\": \"review_images/1_s001_w1_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n        \"relative_path\": null,\n        \"full_path\": null,\n        \"file_format\": null,\n        \"preview\": null\n      },\n      {\n        \"kind\": \"image\",\n        \"key\": \"review_images/1_s001_w2_z001_t001.tif\",\n        \"metadata\": {\n          \"filename\": \"review_images/1_s001_w2_z001_t001.tif\",\n          \"virtual_path\": \"review_images/1_s001_w2_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n          \"type\": \"Image\",\n          \"site\": 1,\n          \"channel\": 2,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".tif\",\n          \"size\": \"625.2 KB\",\n          \"modified\": \"2026-08-04T18:05:10\"\n        },\n        \"virtual_path\": \"review_images/1_s001_w2_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n        \"relative_path\": null,\n        \"full_path\": null,\n        \"file_format\": null,\n        \"preview\": null\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"10.9 KB\",\n          \"modified\": \"2026-08-04T18:05:17\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": 9,\n          \"roi_member_count\": 9,\n          \"roi_duplicate_member_count\": 0,\n          \"roi_area_min\": 560.0,\n          \"roi_area_max\": 1303.0,\n          \"roi_area_mean\": 918.0,\n          \"roi_examples\": [\n            {\n              \"shape_count\": 1,\n              \"label\": 1,\n              \"area\": 560.0,\n              \"bbox\": [\n                26,\n                36,\n                54,\n                79\n              ],\n              \"centroid\": [\n                41.38392857142857,\n                62.125\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 1054.0,\n              \"bbox\": [\n                120,\n                189,\n                173,\n                260\n              ],\n              \"centroid\": [\n                144.74573055028463,\n                221.7371916508539\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 1303.0,\n              \"bbox\": [\n                217,\n                617,\n                267,\n                682\n              ],\n              \"centroid\": [\n                246.13584036838066,\n                648.5095932463546\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 927.0,\n              \"bbox\": [\n                381,\n                414,\n                408,\n                486\n              ],\n              \"centroid\": [\n                395.24811218985974,\n                453.4994606256742\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 908.0,\n              \"bbox\": [\n                444,\n                209,\n                499,\n                256\n              ],\n              \"centroid\": [\n                473.24118942731275,\n                233.8513215859031\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 1179.0,\n              \"bbox\": [\n                473,\n                595,\n                546,\n                664\n              ],\n              \"centroid\": [\n                514.0347752332485,\n                624.9228159457167\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 1052.0,\n              \"bbox\": [\n                495,\n                383,\n                565,\n                424\n              ],\n              \"centroid\": [\n                526.9153992395437,\n                401.09790874524714\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 8,\n              \"area\": 656.0,\n              \"bbox\": [\n                648,\n                341,\n                692,\n                375\n              ],\n              \"centroid\": [\n                667.4862804878048,\n                355.0076219512195\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 9,\n              \"area\": 623.0,\n              \"bbox\": [\n                668,\n                349,\n                707,\n                393\n              ],\n              \"centroid\": [\n                685.9871589085072,\n                371.51043338683786\n              ]\n            }\n          ],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"16.8 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".graph.roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": 25,\n          \"roi_member_count\": 25,\n          \"roi_duplicate_member_count\": 0,\n          \"roi_area_min\": 0.0,\n          \"roi_area_max\": 0.0,\n          \"roi_area_mean\": 0.0,\n          \"roi_examples\": [\n            {\n              \"shape_count\": 1,\n              \"label\": 1,\n              \"area\": 0.0,\n              \"centroid\": [\n                50.86486486486486,\n                18.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 0.0,\n              \"centroid\": [\n                68.5,\n                166.39423076923077\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 0.0,\n              \"centroid\": [\n                207.46391752577318,\n                306.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 0.0,\n              \"centroid\": [\n                155.16296296296295,\n                577.5333333333333\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 0.0,\n              \"centroid\": [\n                255.94117647058823,\n                740.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 0.0,\n              \"centroid\": [\n                271.68518518518516,\n                590.5\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 0.0,\n              \"centroid\": [\n                360.47058823529414,\n                382.19117647058823\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 0.0,\n              \"centroid\": [\n                412.6746031746032,\n                547.5\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                436.0,\n                261.4117647058824\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                427.5,\n                266.5\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                413.39473684210526,\n                284.39473684210526\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                531.7536231884058,\n                185.15942028985506\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                566.0,\n                159.33333333333334\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                609.1875,\n                120.5\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 0.0,\n              \"centroid\": [\n                398.2236842105263,\n                676.0065789473684\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 0.0,\n              \"centroid\": [\n                497.83673469387753,\n                688.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 0.0,\n              \"centroid\": [\n                567.3128834355829,\n                516.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 0.0,\n              \"centroid\": [\n                333.9789156626506,\n                374.4457831325301\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 0.0,\n              \"centroid\": [\n                576.5,\n                426.9166666666667\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 0.0,\n              \"centroid\": [\n                589.6666666666666,\n                433.1666666666667\n              ]\n            }\n          ],\n          \"truncated\": true,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"197.1 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": \"file exceeds max preview bytes (65536)\"\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"39.9 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": 9,\n          \"roi_member_count\": 25,\n          \"roi_duplicate_member_count\": 16,\n          \"roi_area_min\": 767.0,\n          \"roi_area_max\": 2860.0,\n          \"roi_area_mean\": 1990.2222222222222,\n          \"roi_examples\": [\n            {\n              \"shape_count\": 1,\n              \"label\": 1,\n              \"area\": 767.0,\n              \"bbox\": [\n                26,\n                0,\n                60,\n                79\n              ],\n              \"centroid\": [\n                44.04823989569752,\n                49.82007822685789\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 1998.0,\n              \"bbox\": [\n                16,\n                134,\n                248,\n                369\n              ],\n              \"centroid\": [\n                145.3818818818819,\n                231.70020020020021\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 2753.0,\n              \"bbox\": [\n                93,\n                526,\n                277,\n                800\n              ],\n              \"centroid\": [\n                230.70577551761716,\n                654.2459135488558\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 2720.0,\n              \"bbox\": [\n                196,\n                336,\n                428,\n                610\n              ],\n              \"centroid\": [\n                362.19117647058823,\n                447.45\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 1978.0,\n              \"bbox\": [\n                392,\n                83,\n                655,\n                308\n              ],\n              \"centroid\": [\n                505.05460060667343,\n                207.232052578362\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 2654.0,\n              \"bbox\": [\n                322,\n                478,\n                583,\n                713\n              ],\n              \"centroid\": [\n                503.0734740015072,\n                613.8944988696308\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 2860.0,\n              \"bbox\": [\n                371,\n                338,\n                733,\n                551\n              ],\n              \"centroid\": [\n                538.5874125874126,\n                412.679020979021\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 8,\n              \"area\": 1191.0,\n              \"bbox\": [\n                558,\n                298,\n                692,\n                375\n              ],\n              \"centroid\": [\n                639.455919395466,\n                341.12258606213265\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 9,\n              \"area\": 991.0,\n              \"bbox\": [\n                668,\n                338,\n                757,\n                459\n              ],\n              \"centroid\": [\n                699.4843592330978,\n                381.32694248234105\n              ]\n            }\n          ],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"7.3 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n          \"site\": 1,\n          \"channel\": 2,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": 10,\n          \"roi_member_count\": 10,\n          \"roi_duplicate_member_count\": 0,\n          \"roi_area_min\": 199.0,\n          \"roi_area_max\": 798.0,\n          \"roi_area_mean\": 561.5,\n          \"roi_examples\": [\n            {\n              \"shape_count\": 1,\n              \"label\": 1,\n              \"area\": 592.0,\n              \"bbox\": [\n                22,\n                54,\n                57,\n                81\n              ],\n              \"centroid\": [\n                40.5,\n                66.91385135135135\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 697.0,\n              \"bbox\": [\n                135,\n                204,\n                164,\n                244\n              ],\n              \"centroid\": [\n                148.89383070301292,\n                224.7058823529412\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 762.0,\n              \"bbox\": [\n                233,\n                631,\n                265,\n                664\n              ],\n              \"centroid\": [\n                249.50787401574803,\n                645.9566929133858\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 642.0,\n              \"bbox\": [\n                386,\n                429,\n                409,\n                468\n              ],\n              \"centroid\": [\n                396.64018691588785,\n                448.92367601246104\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 651.0,\n              \"bbox\": [\n                459,\n                219,\n                489,\n                251\n              ],\n              \"centroid\": [\n                474.0245775729647,\n                235.50384024577573\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 798.0,\n              \"bbox\": [\n                491,\n                608,\n                532,\n                647\n              ],\n              \"centroid\": [\n                511.8070175438597,\n                627.3408521303259\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 688.0,\n              \"bbox\": [\n                512,\n                389,\n                549,\n                418\n              ],\n              \"centroid\": [\n                529.6816860465116,\n                402.6031976744186\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 8,\n              \"area\": 199.0,\n              \"bbox\": [\n                677,\n                349,\n                694,\n                366\n              ],\n              \"centroid\": [\n                684.7587939698492,\n                357.8643216080402\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 9,\n              \"area\": 276.0,\n              \"bbox\": [\n                663,\n                347,\n                677,\n                372\n              ],\n              \"centroid\": [\n                669.7065217391304,\n                358.3876811594203\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 10,\n              \"area\": 310.0,\n              \"bbox\": [\n                671,\n                365,\n                695,\n                381\n              ],\n              \"centroid\": [\n                682.9580645161291,\n                372.3741935483871\n              ]\n            }\n          ],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt\",\n          \"type\": \"TEXT\",\n          \"size\": \"262 B\",\n          \"modified\": \"2026-08-04T18:05:17\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt\",\n        \"file_format\": \"TEXT\",\n        \"preview\": {\n          \"text_lines\": [\n            \"Segmentation ROIs: 9 cells\",\n            \"Spatial dimensions: 2D\",\n            \"Projected source planes: 2\",\n            \"ROI files:\",\n            \"- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\"\n          ],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv\",\n          \"type\": \"CSV\",\n          \"size\": \"1.4 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv\",\n        \"file_format\": \"CSV\",\n        \"preview\": {\n          \"text_lines\": [\n            \"slice_index,cell,total_outgrowth_um,processes,mean_process_length_um,median_process_length_um,max_process_length_um,branches,straightness,cell_body_area_um2,mean_outgrowth_intensity,significant_growth,object_name,site,channel,z_index,timepoint,well,source_image_name\",\n            \"0,1,36.0,5,7.2,36.0,36.0,0,0.9001140173634129,560.0,147.63636363636363,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,2,198.0,5,39.6,99.0,99.46718210374803,0,0.9446275401573239,1054.0,104.11075268817204,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,3,304.0,11,27.636363636363637,108.58628696685729,142.83431524993114,0,0.9087708436523467,1303.0,84.3830258302583,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,4,191.0,8,23.875,95.5,120.50854888512922,0,0.905776250358495,927.0,104.7080291970803,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,5,217.0,2,108.5,108.5,163.39833257643272,6,0.9411274916587445,908.0,132.70716510903426,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,6,291.0,5,58.2,127.02521815712572,128.0483183042508,0,0.911772474440707,1179.0,125.34565499351491,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,7,460.0,4,115.0,230.0,282.43657386284605,2,0.8386077242010708,1052.0,130.06031210459722,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,8,114.0,3,38.0,114.0,114.0,0,0.9065225818912629,656.0,147.79014598540147,True,neurons,1,1,1,1,1,W1_neuron_neurite\",\n            \"0,9,171.0,4,42.75,85.5,98.63205567039203,0,0.8548343932966074,623.0,74.01011804384486,True,neurons,1,1,1,1,1,W1_neuron_neurite\"\n          ],\n          \"csv_columns\": [\n            \"slice_index\",\n            \"cell\",\n            \"total_outgrowth_um\",\n            \"processes\",\n            \"mean_process_length_um\",\n            \"median_process_length_um\",\n            \"max_process_length_um\",\n            \"branches\",\n            \"straightness\",\n            \"cell_body_area_um2\",\n            \"mean_outgrowth_intensity\",\n            \"significant_growth\",\n            \"object_name\",\n            \"site\",\n            \"channel\",\n            \"z_index\",\n            \"timepoint\",\n            \"well\",\n            \"source_image_name\"\n          ],\n          \"csv_rows\": [\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"1\",\n              \"total_outgrowth_um\": \"36.0\",\n              \"processes\": \"5\",\n              \"mean_process_length_um\": \"7.2\",\n              \"median_process_length_um\": \"36.0\",\n              \"max_process_length_um\": \"36.0\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.9001140173634129\",\n              \"cell_body_area_um2\": \"560.0\",\n              \"mean_outgrowth_intensity\": \"147.63636363636363\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"2\",\n              \"total_outgrowth_um\": \"198.0\",\n              \"processes\": \"5\",\n              \"mean_process_length_um\": \"39.6\",\n              \"median_process_length_um\": \"99.0\",\n              \"max_process_length_um\": \"99.46718210374803\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.9446275401573239\",\n              \"cell_body_area_um2\": \"1054.0\",\n              \"mean_outgrowth_intensity\": \"104.11075268817204\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"3\",\n              \"total_outgrowth_um\": \"304.0\",\n              \"processes\": \"11\",\n              \"mean_process_length_um\": \"27.636363636363637\",\n              \"median_process_length_um\": \"108.58628696685729\",\n              \"max_process_length_um\": \"142.83431524993114\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.9087708436523467\",\n              \"cell_body_area_um2\": \"1303.0\",\n              \"mean_outgrowth_intensity\": \"84.3830258302583\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"4\",\n              \"total_outgrowth_um\": \"191.0\",\n              \"processes\": \"8\",\n              \"mean_process_length_um\": \"23.875\",\n              \"median_process_length_um\": \"95.5\",\n              \"max_process_length_um\": \"120.50854888512922\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.905776250358495\",\n              \"cell_body_area_um2\": \"927.0\",\n              \"mean_outgrowth_intensity\": \"104.7080291970803\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"5\",\n              \"total_outgrowth_um\": \"217.0\",\n              \"processes\": \"2\",\n              \"mean_process_length_um\": \"108.5\",\n              \"median_process_length_um\": \"108.5\",\n              \"max_process_length_um\": \"163.39833257643272\",\n              \"branches\": \"6\",\n              \"straightness\": \"0.9411274916587445\",\n              \"cell_body_area_um2\": \"908.0\",\n              \"mean_outgrowth_intensity\": \"132.70716510903426\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"6\",\n              \"total_outgrowth_um\": \"291.0\",\n              \"processes\": \"5\",\n              \"mean_process_length_um\": \"58.2\",\n              \"median_process_length_um\": \"127.02521815712572\",\n              \"max_process_length_um\": \"128.0483183042508\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.911772474440707\",\n              \"cell_body_area_um2\": \"1179.0\",\n              \"mean_outgrowth_intensity\": \"125.34565499351491\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"7\",\n              \"total_outgrowth_um\": \"460.0\",\n              \"processes\": \"4\",\n              \"mean_process_length_um\": \"115.0\",\n              \"median_process_length_um\": \"230.0\",\n              \"max_process_length_um\": \"282.43657386284605\",\n              \"branches\": \"2\",\n              \"straightness\": \"0.8386077242010708\",\n              \"cell_body_area_um2\": \"1052.0\",\n              \"mean_outgrowth_intensity\": \"130.06031210459722\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"8\",\n              \"total_outgrowth_um\": \"114.0\",\n              \"processes\": \"3\",\n              \"mean_process_length_um\": \"38.0\",\n              \"median_process_length_um\": \"114.0\",\n              \"max_process_length_um\": \"114.0\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.9065225818912629\",\n              \"cell_body_area_um2\": \"656.0\",\n              \"mean_outgrowth_intensity\": \"147.79014598540147\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            },\n            {\n              \"slice_index\": \"0\",\n              \"cell\": \"9\",\n              \"total_outgrowth_um\": \"171.0\",\n              \"processes\": \"4\",\n              \"mean_process_length_um\": \"42.75\",\n              \"median_process_length_um\": \"85.5\",\n              \"max_process_length_um\": \"98.63205567039203\",\n              \"branches\": \"0\",\n              \"straightness\": \"0.8548343932966074\",\n              \"cell_body_area_um2\": \"623.0\",\n              \"mean_outgrowth_intensity\": \"74.01011804384486\",\n              \"significant_growth\": \"True\",\n              \"object_name\": \"neurons\",\n              \"site\": \"1\",\n              \"channel\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\",\n              \"source_image_name\": \"W1_neuron_neurite\"\n            }\n          ],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt\",\n          \"type\": \"TEXT\",\n          \"size\": \"268 B\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt\",\n        \"file_format\": \"TEXT\",\n        \"preview\": {\n          \"text_lines\": [\n            \"Segmentation ROIs: 9 cells\",\n            \"Spatial dimensions: 2D\",\n            \"Projected source planes: 2\",\n            \"ROI files:\",\n            \"- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\"\n          ],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv\",\n          \"type\": \"CSV\",\n          \"size\": \"556 B\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv\",\n        \"file_format\": \"CSV\",\n        \"preview\": {\n          \"text_lines\": [\n            \"neurite_channel_index,cell_body_channel_index,nuclear_channel_index,number_of_cells,total_outgrowth_um,mean_outgrowth_per_cell_um,total_processes,mean_processes_per_cell,total_branches,mean_branches_per_cell,total_cell_body_area_um2,mean_cell_body_area_um2,straightness,cells_significant_growth,percent_cells_significant_growth,mean_outgrowth_average_intensity,resolved_crossovers,site,z_index,timepoint,well\",\n            \"0,0,1,9,1982.0,220.22222222222223,47,5.222222222222222,8,0.8888888888888888,8262.0,918.0,0.9013503685577745,9,100.0,115.82753794811067,0,1,1,1,1\"\n          ],\n          \"csv_columns\": [\n            \"neurite_channel_index\",\n            \"cell_body_channel_index\",\n            \"nuclear_channel_index\",\n            \"number_of_cells\",\n            \"total_outgrowth_um\",\n            \"mean_outgrowth_per_cell_um\",\n            \"total_processes\",\n            \"mean_processes_per_cell\",\n            \"total_branches\",\n            \"mean_branches_per_cell\",\n            \"total_cell_body_area_um2\",\n            \"mean_cell_body_area_um2\",\n            \"straightness\",\n            \"cells_significant_growth\",\n            \"percent_cells_significant_growth\",\n            \"mean_outgrowth_average_intensity\",\n            \"resolved_crossovers\",\n            \"site\",\n            \"z_index\",\n            \"timepoint\",\n            \"well\"\n          ],\n          \"csv_rows\": [\n            {\n              \"neurite_channel_index\": \"0\",\n              \"cell_body_channel_index\": \"0\",\n              \"nuclear_channel_index\": \"1\",\n              \"number_of_cells\": \"9\",\n              \"total_outgrowth_um\": \"1982.0\",\n              \"mean_outgrowth_per_cell_um\": \"220.22222222222223\",\n              \"total_processes\": \"47\",\n              \"mean_processes_per_cell\": \"5.222222222222222\",\n              \"total_branches\": \"8\",\n              \"mean_branches_per_cell\": \"0.8888888888888888\",\n              \"total_cell_body_area_um2\": \"8262.0\",\n              \"mean_cell_body_area_um2\": \"918.0\",\n              \"straightness\": \"0.9013503685577745\",\n              \"cells_significant_growth\": \"9\",\n              \"percent_cells_significant_growth\": \"100.0\",\n              \"mean_outgrowth_average_intensity\": \"115.82753794811067\",\n              \"resolved_crossovers\": \"0\",\n              \"site\": \"1\",\n              \"z_index\": \"1\",\n              \"timepoint\": \"1\",\n              \"well\": \"1\"\n            }\n          ],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n          \"type\": \"TEXT\",\n          \"size\": \"258 B\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n        \"file_format\": \"TEXT\",\n        \"preview\": {\n          \"text_lines\": [\n            \"Segmentation ROIs: 9 cells\",\n            \"Spatial dimensions: 2D\",\n            \"Projected source planes: 2\",\n            \"ROI files:\",\n            \"- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\"\n          ],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt\",\n          \"type\": \"TEXT\",\n          \"size\": \"258 B\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt\",\n        \"file_format\": \"TEXT\",\n        \"preview\": {\n          \"text_lines\": [\n            \"Segmentation ROIs: 10 cells\",\n            \"Spatial dimensions: 2D\",\n            \"Projected source planes: 2\",\n            \"ROI files:\",\n            \"- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\"\n          ],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/metaxpress_style_summary.csv\",\n        \"metadata\": {\n          \"filename\": \"images_results/metaxpress_style_summary.csv\",\n          \"type\": \"CSV\",\n          \"size\": \"1.9 KB\",\n          \"modified\": \"2026-08-04T18:05:19\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/metaxpress_style_summary.csv\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/metaxpress_style_summary.csv\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/metaxpress_style_summary.csv\",\n        \"file_format\": \"CSV\",\n        \"preview\": {\n          \"text_lines\": [\n            \"Barcode,OpenHCS-images_results,,,,,,,,,,,,,,,,\",\n            \"Plate Name,images_results,,,,,,,,,,,,,,,,\",\n            \"Plate ID,26918,,,,,,,,,,,,,,,,\",\n            \"Description,Consolidated analysis results from OpenHCS pipeline: 1 wells analyzed,,,,,,,,,,,,,,,,\",\n            \"Acquisition User,OpenHCS,,,,,,,,,,,,,,,,\",\n            \"Z Step,1.0,,,,,,,,,,,,,,,,\",\n            \"Well,Mean Branches (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Cell (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Mean Outgrowth Intensity (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Processes (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Significant Growth (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Straightness (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Number of Objects (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"1,0.8888888888888888,5.0,918.0,131.70281407252554,116.75017417647412,51.19570707070707,111.56794501377588,5.222222222222222,1.0,0.9013503685577747,220.22222222222223,9,8262.0,1185.32532665273,460.7613636363636,1004.111505123983,1982.0\"\n          ],\n          \"csv_columns\": [\n            \"Well\",\n            \"Mean Branches (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Cell (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Mean Outgrowth Intensity (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Processes (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Significant Growth (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Straightness (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Mean Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Number of Objects (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Total Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Total Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Total Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Total Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\",\n            \"Total Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\"\n          ],\n          \"csv_rows\": [\n            {\n              \"Well\": \"1\",\n              \"Mean Branches (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"0.8888888888888888\",\n              \"Mean Cell (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"5.0\",\n              \"Mean Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"918.0\",\n              \"Mean Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"131.70281407252554\",\n              \"Mean Mean Outgrowth Intensity (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"116.75017417647412\",\n              \"Mean Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"51.19570707070707\",\n              \"Mean Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"111.56794501377588\",\n              \"Mean Processes (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"5.222222222222222\",\n              \"Mean Significant Growth (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"1.0\",\n              \"Mean Straightness (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"0.9013503685577747\",\n              \"Mean Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"220.22222222222223\",\n              \"Number of Objects (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"9\",\n              \"Total Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"8262.0\",\n              \"Total Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"1185.32532665273\",\n              \"Total Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"460.7613636363636\",\n              \"Total Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"1004.111505123983\",\n              \"Total Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)\": \"1982.0\"\n            }\n          ],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      }\n    ]\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":14,"returned_count":14,"offset":0,"limit":100,"truncated_count":0,"records":[{"kind":"image","key":"review_images/1_s001_w1_z001_t001.tif","metadata":{"filename":"review_images/1_s001_w1_z001_t001.tif","virtual_path":"review_images/1_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","type":"Image","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".tif","size":"625.2 KB","modified":"2026-08-04T18:05:10"},"virtual_path":"review_images/1_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","relative_path":null,"full_path":null,"file_format":null,"preview":null},{"kind":"image","key":"review_images/1_s001_w2_z001_t001.tif","metadata":{"filename":"review_images/1_s001_w2_z001_t001.tif","virtual_path":"review_images/1_s001_w2_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","type":"Image","site":1,"channel":2,"z_index":1,"timepoint":1,"well":1,"extension":".tif","size":"625.2 KB","modified":"2026-08-04T18:05:10"},"virtual_path":"review_images/1_s001_w2_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","relative_path":null,"full_path":null,"file_format":null,"preview":null},{"kind":"result","key":"images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","type":"ROI","size":"10.9 KB","modified":"2026-08-04T18:05:17","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":9,"roi_member_count":9,"roi_duplicate_member_count":0,"roi_area_min":560.0,"roi_area_max":1303.0,"roi_area_mean":918.0,"roi_examples":[{"shape_count":1,"label":1,"area":560.0,"bbox":[26,36,54,79],"centroid":[41.38392857142857,62.125]},{"shape_count":1,"label":2,"area":1054.0,"bbox":[120,189,173,260],"centroid":[144.74573055028463,221.7371916508539]},{"shape_count":1,"label":3,"area":1303.0,"bbox":[217,617,267,682],"centroid":[246.13584036838066,648.5095932463546]},{"shape_count":1,"label":4,"area":927.0,"bbox":[381,414,408,486],"centroid":[395.24811218985974,453.4994606256742]},{"shape_count":1,"label":5,"area":908.0,"bbox":[444,209,499,256],"centroid":[473.24118942731275,233.8513215859031]},{"shape_count":1,"label":6,"area":1179.0,"bbox":[473,595,546,664],"centroid":[514.0347752332485,624.9228159457167]},{"shape_count":1,"label":7,"area":1052.0,"bbox":[495,383,565,424],"centroid":[526.9153992395437,401.09790874524714]},{"shape_count":1,"label":8,"area":656.0,"bbox":[648,341,692,375],"centroid":[667.4862804878048,355.0076219512195]},{"shape_count":1,"label":9,"area":623.0,"bbox":[668,349,707,393],"centroid":[685.9871589085072,371.51043338683786]}],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","type":"ROI","size":"16.8 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".graph.roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":25,"roi_member_count":25,"roi_duplicate_member_count":0,"roi_area_min":0.0,"roi_area_max":0.0,"roi_area_mean":0.0,"roi_examples":[{"shape_count":1,"label":1,"area":0.0,"centroid":[50.86486486486486,18.0]},{"shape_count":1,"label":2,"area":0.0,"centroid":[68.5,166.39423076923077]},{"shape_count":1,"label":2,"area":0.0,"centroid":[207.46391752577318,306.0]},{"shape_count":1,"label":3,"area":0.0,"centroid":[155.16296296296295,577.5333333333333]},{"shape_count":1,"label":3,"area":0.0,"centroid":[255.94117647058823,740.0]},{"shape_count":1,"label":3,"area":0.0,"centroid":[271.68518518518516,590.5]},{"shape_count":1,"label":4,"area":0.0,"centroid":[360.47058823529414,382.19117647058823]},{"shape_count":1,"label":4,"area":0.0,"centroid":[412.6746031746032,547.5]},{"shape_count":1,"label":5,"area":0.0,"centroid":[436.0,261.4117647058824]},{"shape_count":1,"label":5,"area":0.0,"centroid":[427.5,266.5]},{"shape_count":1,"label":5,"area":0.0,"centroid":[413.39473684210526,284.39473684210526]},{"shape_count":1,"label":5,"area":0.0,"centroid":[531.7536231884058,185.15942028985506]},{"shape_count":1,"label":5,"area":0.0,"centroid":[566.0,159.33333333333334]},{"shape_count":1,"label":5,"area":0.0,"centroid":[609.1875,120.5]},{"shape_count":1,"label":6,"area":0.0,"centroid":[398.2236842105263,676.0065789473684]},{"shape_count":1,"label":6,"area":0.0,"centroid":[497.83673469387753,688.0]},{"shape_count":1,"label":6,"area":0.0,"centroid":[567.3128834355829,516.0]},{"shape_count":1,"label":7,"area":0.0,"centroid":[333.9789156626506,374.4457831325301]},{"shape_count":1,"label":7,"area":0.0,"centroid":[576.5,426.9166666666667]},{"shape_count":1,"label":7,"area":0.0,"centroid":[589.6666666666666,433.1666666666667]}],"truncated":true,"omitted_reason":null}},{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","type":"ROI","size":"197.1 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":"file exceeds max preview bytes (65536)"}},{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","type":"ROI","size":"39.9 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":9,"roi_member_count":25,"roi_duplicate_member_count":16,"roi_area_min":767.0,"roi_area_max":2860.0,"roi_area_mean":1990.2222222222222,"roi_examples":[{"shape_count":1,"label":1,"area":767.0,"bbox":[26,0,60,79],"centroid":[44.04823989569752,49.82007822685789]},{"shape_count":1,"label":2,"area":1998.0,"bbox":[16,134,248,369],"centroid":[145.3818818818819,231.70020020020021]},{"shape_count":1,"label":3,"area":2753.0,"bbox":[93,526,277,800],"centroid":[230.70577551761716,654.2459135488558]},{"shape_count":1,"label":4,"area":2720.0,"bbox":[196,336,428,610],"centroid":[362.19117647058823,447.45]},{"shape_count":1,"label":5,"area":1978.0,"bbox":[392,83,655,308],"centroid":[505.05460060667343,207.232052578362]},{"shape_count":1,"label":6,"area":2654.0,"bbox":[322,478,583,713],"centroid":[503.0734740015072,613.8944988696308]},{"shape_count":1,"label":7,"area":2860.0,"bbox":[371,338,733,551],"centroid":[538.5874125874126,412.679020979021]},{"shape_count":1,"label":8,"area":1191.0,"bbox":[558,298,692,375],"centroid":[639.455919395466,341.12258606213265]},{"shape_count":1,"label":9,"area":991.0,"bbox":[668,338,757,459],"centroid":[699.4843592330978,381.32694248234105]}],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","metadata":{"filename":"images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","type":"ROI","size":"7.3 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","site":1,"channel":2,"z_index":1,"timepoint":1,"well":1,"extension":".roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":10,"roi_member_count":10,"roi_duplicate_member_count":0,"roi_area_min":199.0,"roi_area_max":798.0,"roi_area_mean":561.5,"roi_examples":[{"shape_count":1,"label":1,"area":592.0,"bbox":[22,54,57,81],"centroid":[40.5,66.91385135135135]},{"shape_count":1,"label":2,"area":697.0,"bbox":[135,204,164,244],"centroid":[148.89383070301292,224.7058823529412]},{"shape_count":1,"label":3,"area":762.0,"bbox":[233,631,265,664],"centroid":[249.50787401574803,645.9566929133858]},{"shape_count":1,"label":4,"area":642.0,"bbox":[386,429,409,468],"centroid":[396.64018691588785,448.92367601246104]},{"shape_count":1,"label":5,"area":651.0,"bbox":[459,219,489,251],"centroid":[474.0245775729647,235.50384024577573]},{"shape_count":1,"label":6,"area":798.0,"bbox":[491,608,532,647],"centroid":[511.8070175438597,627.3408521303259]},{"shape_count":1,"label":7,"area":688.0,"bbox":[512,389,549,418],"centroid":[529.6816860465116,402.6031976744186]},{"shape_count":1,"label":8,"area":199.0,"bbox":[677,349,694,366],"centroid":[684.7587939698492,357.8643216080402]},{"shape_count":1,"label":9,"area":276.0,"bbox":[663,347,677,372],"centroid":[669.7065217391304,358.3876811594203]},{"shape_count":1,"label":10,"area":310.0,"bbox":[671,365,695,381],"centroid":[682.9580645161291,372.3741935483871]}],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt","type":"TEXT","size":"262 B","modified":"2026-08-04T18:05:17","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_cell_bodies_step1_segmentation_summary.txt","file_format":"TEXT","preview":{"text_lines":["Segmentation ROIs: 9 cells","Spatial dimensions: 2D","Projected source planes: 2","ROI files:","- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip"],"csv_columns":[],"csv_rows":[],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv","type":"CSV","size":"1.4 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv","file_format":"CSV","preview":{"text_lines":["slice_index,cell,total_outgrowth_um,processes,mean_process_length_um,median_process_length_um,max_process_length_um,branches,straightness,cell_body_area_um2,mean_outgrowth_intensity,significant_growth,object_name,site,channel,z_index,timepoint,well,source_image_name","0,1,36.0,5,7.2,36.0,36.0,0,0.9001140173634129,560.0,147.63636363636363,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,2,198.0,5,39.6,99.0,99.46718210374803,0,0.9446275401573239,1054.0,104.11075268817204,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,3,304.0,11,27.636363636363637,108.58628696685729,142.83431524993114,0,0.9087708436523467,1303.0,84.3830258302583,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,4,191.0,8,23.875,95.5,120.50854888512922,0,0.905776250358495,927.0,104.7080291970803,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,5,217.0,2,108.5,108.5,163.39833257643272,6,0.9411274916587445,908.0,132.70716510903426,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,6,291.0,5,58.2,127.02521815712572,128.0483183042508,0,0.911772474440707,1179.0,125.34565499351491,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,7,460.0,4,115.0,230.0,282.43657386284605,2,0.8386077242010708,1052.0,130.06031210459722,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,8,114.0,3,38.0,114.0,114.0,0,0.9065225818912629,656.0,147.79014598540147,True,neurons,1,1,1,1,1,W1_neuron_neurite","0,9,171.0,4,42.75,85.5,98.63205567039203,0,0.8548343932966074,623.0,74.01011804384486,True,neurons,1,1,1,1,1,W1_neuron_neurite"],"csv_columns":["slice_index","cell","total_outgrowth_um","processes","mean_process_length_um","median_process_length_um","max_process_length_um","branches","straightness","cell_body_area_um2","mean_outgrowth_intensity","significant_growth","object_name","site","channel","z_index","timepoint","well","source_image_name"],"csv_rows":[{"slice_index":"0","cell":"1","total_outgrowth_um":"36.0","processes":"5","mean_process_length_um":"7.2","median_process_length_um":"36.0","max_process_length_um":"36.0","branches":"0","straightness":"0.9001140173634129","cell_body_area_um2":"560.0","mean_outgrowth_intensity":"147.63636363636363","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"2","total_outgrowth_um":"198.0","processes":"5","mean_process_length_um":"39.6","median_process_length_um":"99.0","max_process_length_um":"99.46718210374803","branches":"0","straightness":"0.9446275401573239","cell_body_area_um2":"1054.0","mean_outgrowth_intensity":"104.11075268817204","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"3","total_outgrowth_um":"304.0","processes":"11","mean_process_length_um":"27.636363636363637","median_process_length_um":"108.58628696685729","max_process_length_um":"142.83431524993114","branches":"0","straightness":"0.9087708436523467","cell_body_area_um2":"1303.0","mean_outgrowth_intensity":"84.3830258302583","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"4","total_outgrowth_um":"191.0","processes":"8","mean_process_length_um":"23.875","median_process_length_um":"95.5","max_process_length_um":"120.50854888512922","branches":"0","straightness":"0.905776250358495","cell_body_area_um2":"927.0","mean_outgrowth_intensity":"104.7080291970803","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"5","total_outgrowth_um":"217.0","processes":"2","mean_process_length_um":"108.5","median_process_length_um":"108.5","max_process_length_um":"163.39833257643272","branches":"6","straightness":"0.9411274916587445","cell_body_area_um2":"908.0","mean_outgrowth_intensity":"132.70716510903426","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"6","total_outgrowth_um":"291.0","processes":"5","mean_process_length_um":"58.2","median_process_length_um":"127.02521815712572","max_process_length_um":"128.0483183042508","branches":"0","straightness":"0.911772474440707","cell_body_area_um2":"1179.0","mean_outgrowth_intensity":"125.34565499351491","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"7","total_outgrowth_um":"460.0","processes":"4","mean_process_length_um":"115.0","median_process_length_um":"230.0","max_process_length_um":"282.43657386284605","branches":"2","straightness":"0.8386077242010708","cell_body_area_um2":"1052.0","mean_outgrowth_intensity":"130.06031210459722","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"8","total_outgrowth_um":"114.0","processes":"3","mean_process_length_um":"38.0","median_process_length_um":"114.0","max_process_length_um":"114.0","branches":"0","straightness":"0.9065225818912629","cell_body_area_um2":"656.0","mean_outgrowth_intensity":"147.79014598540147","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"},{"slice_index":"0","cell":"9","total_outgrowth_um":"171.0","processes":"4","mean_process_length_um":"42.75","median_process_length_um":"85.5","max_process_length_um":"98.63205567039203","branches":"0","straightness":"0.8548343932966074","cell_body_area_um2":"623.0","mean_outgrowth_intensity":"74.01011804384486","significant_growth":"True","object_name":"neurons","site":"1","channel":"1","z_index":"1","timepoint":"1","well":"1","source_image_name":"W1_neuron_neurite"}],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt","type":"TEXT","size":"268 B","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_step1_segmentation_summary.txt","file_format":"TEXT","preview":{"text_lines":["Segmentation ROIs: 9 cells","Spatial dimensions: 2D","Projected source planes: 2","ROI files:","- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip"],"csv_columns":[],"csv_rows":[],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv","type":"CSV","size":"556 B","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv","file_format":"CSV","preview":{"text_lines":["neurite_channel_index,cell_body_channel_index,nuclear_channel_index,number_of_cells,total_outgrowth_um,mean_outgrowth_per_cell_um,total_processes,mean_processes_per_cell,total_branches,mean_branches_per_cell,total_cell_body_area_um2,mean_cell_body_area_um2,straightness,cells_significant_growth,percent_cells_significant_growth,mean_outgrowth_average_intensity,resolved_crossovers,site,z_index,timepoint,well","0,0,1,9,1982.0,220.22222222222223,47,5.222222222222222,8,0.8888888888888888,8262.0,918.0,0.9013503685577745,9,100.0,115.82753794811067,0,1,1,1,1"],"csv_columns":["neurite_channel_index","cell_body_channel_index","nuclear_channel_index","number_of_cells","total_outgrowth_um","mean_outgrowth_per_cell_um","total_processes","mean_processes_per_cell","total_branches","mean_branches_per_cell","total_cell_body_area_um2","mean_cell_body_area_um2","straightness","cells_significant_growth","percent_cells_significant_growth","mean_outgrowth_average_intensity","resolved_crossovers","site","z_index","timepoint","well"],"csv_rows":[{"neurite_channel_index":"0","cell_body_channel_index":"0","nuclear_channel_index":"1","number_of_cells":"9","total_outgrowth_um":"1982.0","mean_outgrowth_per_cell_um":"220.22222222222223","total_processes":"47","mean_processes_per_cell":"5.222222222222222","total_branches":"8","mean_branches_per_cell":"0.8888888888888888","total_cell_body_area_um2":"8262.0","mean_cell_body_area_um2":"918.0","straightness":"0.9013503685577745","cells_significant_growth":"9","percent_cells_significant_growth":"100.0","mean_outgrowth_average_intensity":"115.82753794811067","resolved_crossovers":"0","site":"1","z_index":"1","timepoint":"1","well":"1"}],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","type":"TEXT","size":"258 B","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","file_format":"TEXT","preview":{"text_lines":["Segmentation ROIs: 9 cells","Spatial dimensions: 2D","Projected source planes: 2","ROI files:","- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip"],"csv_columns":[],"csv_rows":[],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt","type":"TEXT","size":"258 B","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_nuclei_step1_segmentation_summary.txt","file_format":"TEXT","preview":{"text_lines":["Segmentation ROIs: 10 cells","Spatial dimensions: 2D","Projected source planes: 2","ROI files:","- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip"],"csv_columns":[],"csv_rows":[],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/metaxpress_style_summary.csv","metadata":{"filename":"images_results/metaxpress_style_summary.csv","type":"CSV","size":"1.9 KB","modified":"2026-08-04T18:05:19","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/metaxpress_style_summary.csv"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/metaxpress_style_summary.csv","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/metaxpress_style_summary.csv","file_format":"CSV","preview":{"text_lines":["Barcode,OpenHCS-images_results,,,,,,,,,,,,,,,,","Plate Name,images_results,,,,,,,,,,,,,,,,","Plate ID,26918,,,,,,,,,,,,,,,,","Description,Consolidated analysis results from OpenHCS pipeline: 1 wells analyzed,,,,,,,,,,,,,,,,","Acquisition User,OpenHCS,,,,,,,,,,,,,,,,","Z Step,1.0,,,,,,,,,,,,,,,,","Well,Mean Branches (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Cell (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Mean Outgrowth Intensity (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Processes (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Significant Growth (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Straightness (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Mean Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Number of Objects (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1),Total Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","1,0.8888888888888888,5.0,918.0,131.70281407252554,116.75017417647412,51.19570707070707,111.56794501377588,5.222222222222222,1.0,0.9013503685577747,220.22222222222223,9,8262.0,1185.32532665273,460.7613636363636,1004.111505123983,1982.0"],"csv_columns":["Well","Mean Branches (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Cell (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Mean Outgrowth Intensity (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Processes (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Significant Growth (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Straightness (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Mean Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Number of Objects (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Total Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Total Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Total Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Total Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)","Total Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)"],"csv_rows":[{"Well":"1","Mean Branches (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"0.8888888888888888","Mean Cell (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"5.0","Mean Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"918.0","Mean Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"131.70281407252554","Mean Mean Outgrowth Intensity (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"116.75017417647412","Mean Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"51.19570707070707","Mean Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"111.56794501377588","Mean Processes (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"5.222222222222222","Mean Significant Growth (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"1.0","Mean Straightness (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"0.9013503685577747","Mean Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"220.22222222222223","Number of Objects (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"9","Total Cell Body Area Um2 (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"8262.0","Total Max Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"1185.32532665273","Total Mean Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"460.7613636363636","Total Median Process Length Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"1004.111505123983","Total Total Outgrowth Um (Site-1 Z Index-1 Timepoint-1 Neurite Outgrowth Cells Step1)":"1982.0"}],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_114","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"neurite_morphology","limit":50,"include_previews":true,"max_preview_lines":10},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_114","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"neurite_morphology","limit":50,"include_previews":true,"max_preview_lines":10},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 1,\n    \"returned_count\": 1,\n    \"offset\": 0,\n    \"limit\": 50,\n    \"truncated_count\": 0,\n    \"records\": [\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"16.8 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".graph.roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": 25,\n          \"roi_member_count\": 25,\n          \"roi_duplicate_member_count\": 0,\n          \"roi_area_min\": 0.0,\n          \"roi_area_max\": 0.0,\n          \"roi_area_mean\": 0.0,\n          \"roi_examples\": [\n            {\n              \"shape_count\": 1,\n              \"label\": 1,\n              \"area\": 0.0,\n              \"centroid\": [\n                50.86486486486486,\n                18.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 0.0,\n              \"centroid\": [\n                68.5,\n                166.39423076923077\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 0.0,\n              \"centroid\": [\n                207.46391752577318,\n                306.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 0.0,\n              \"centroid\": [\n                155.16296296296295,\n                577.5333333333333\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 0.0,\n              \"centroid\": [\n                255.94117647058823,\n                740.0\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 0.0,\n              \"centroid\": [\n                271.68518518518516,\n                590.5\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 0.0,\n              \"centroid\": [\n                360.47058823529414,\n                382.19117647058823\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 0.0,\n              \"centroid\": [\n                412.6746031746032,\n                547.5\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                436.0,\n                261.4117647058824\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 0.0,\n              \"centroid\": [\n                427.5,\n                266.5\n              ]\n            }\n          ],\n          \"truncated\": true,\n          \"omitted_reason\": null\n        }\n      }\n    ]\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":1,"returned_count":1,"offset":0,"limit":50,"truncated_count":0,"records":[{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","type":"ROI","size":"16.8 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".graph.roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":25,"roi_member_count":25,"roi_duplicate_member_count":0,"roi_area_min":0.0,"roi_area_max":0.0,"roi_area_mean":0.0,"roi_examples":[{"shape_count":1,"label":1,"area":0.0,"centroid":[50.86486486486486,18.0]},{"shape_count":1,"label":2,"area":0.0,"centroid":[68.5,166.39423076923077]},{"shape_count":1,"label":2,"area":0.0,"centroid":[207.46391752577318,306.0]},{"shape_count":1,"label":3,"area":0.0,"centroid":[155.16296296296295,577.5333333333333]},{"shape_count":1,"label":3,"area":0.0,"centroid":[255.94117647058823,740.0]},{"shape_count":1,"label":3,"area":0.0,"centroid":[271.68518518518516,590.5]},{"shape_count":1,"label":4,"area":0.0,"centroid":[360.47058823529414,382.19117647058823]},{"shape_count":1,"label":4,"area":0.0,"centroid":[412.6746031746032,547.5]},{"shape_count":1,"label":5,"area":0.0,"centroid":[436.0,261.4117647058824]},{"shape_count":1,"label":5,"area":0.0,"centroid":[427.5,266.5]}],"truncated":true,"omitted_reason":null}}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_115","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"neurons_step1","limit":50,"include_previews":true,"max_preview_lines":10},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_115","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"neurons_step1","limit":50,"include_previews":true,"max_preview_lines":10},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 2,\n    \"returned_count\": 2,\n    \"offset\": 0,\n    \"limit\": 50,\n    \"truncated_count\": 0,\n    \"records\": [\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"39.9 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": {\n          \"text_lines\": [],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": 9,\n          \"roi_member_count\": 25,\n          \"roi_duplicate_member_count\": 16,\n          \"roi_area_min\": 767.0,\n          \"roi_area_max\": 2860.0,\n          \"roi_area_mean\": 1990.2222222222222,\n          \"roi_examples\": [\n            {\n              \"shape_count\": 1,\n              \"label\": 1,\n              \"area\": 767.0,\n              \"bbox\": [\n                26,\n                0,\n                60,\n                79\n              ],\n              \"centroid\": [\n                44.04823989569752,\n                49.82007822685789\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 2,\n              \"area\": 1998.0,\n              \"bbox\": [\n                16,\n                134,\n                248,\n                369\n              ],\n              \"centroid\": [\n                145.3818818818819,\n                231.70020020020021\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 3,\n              \"area\": 2753.0,\n              \"bbox\": [\n                93,\n                526,\n                277,\n                800\n              ],\n              \"centroid\": [\n                230.70577551761716,\n                654.2459135488558\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 4,\n              \"area\": 2720.0,\n              \"bbox\": [\n                196,\n                336,\n                428,\n                610\n              ],\n              \"centroid\": [\n                362.19117647058823,\n                447.45\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 5,\n              \"area\": 1978.0,\n              \"bbox\": [\n                392,\n                83,\n                655,\n                308\n              ],\n              \"centroid\": [\n                505.05460060667343,\n                207.232052578362\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 6,\n              \"area\": 2654.0,\n              \"bbox\": [\n                322,\n                478,\n                583,\n                713\n              ],\n              \"centroid\": [\n                503.0734740015072,\n                613.8944988696308\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 7,\n              \"area\": 2860.0,\n              \"bbox\": [\n                371,\n                338,\n                733,\n                551\n              ],\n              \"centroid\": [\n                538.5874125874126,\n                412.679020979021\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 8,\n              \"area\": 1191.0,\n              \"bbox\": [\n                558,\n                298,\n                692,\n                375\n              ],\n              \"centroid\": [\n                639.455919395466,\n                341.12258606213265\n              ]\n            },\n            {\n              \"shape_count\": 1,\n              \"label\": 9,\n              \"area\": 991.0,\n              \"bbox\": [\n                668,\n                338,\n                757,\n                459\n              ],\n              \"centroid\": [\n                699.4843592330978,\n                381.32694248234105\n              ]\n            }\n          ],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      },\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n          \"type\": \"TEXT\",\n          \"size\": \"258 B\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt\",\n        \"file_format\": \"TEXT\",\n        \"preview\": {\n          \"text_lines\": [\n            \"Segmentation ROIs: 9 cells\",\n            \"Spatial dimensions: 2D\",\n            \"Projected source planes: 2\",\n            \"ROI files:\",\n            \"- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\"\n          ],\n          \"csv_columns\": [],\n          \"csv_rows\": [],\n          \"roi_count\": null,\n          \"roi_member_count\": null,\n          \"roi_duplicate_member_count\": null,\n          \"roi_area_min\": null,\n          \"roi_area_max\": null,\n          \"roi_area_mean\": null,\n          \"roi_examples\": [],\n          \"truncated\": false,\n          \"omitted_reason\": null\n        }\n      }\n    ]\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":2,"returned_count":2,"offset":0,"limit":50,"truncated_count":0,"records":[{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","type":"ROI","size":"39.9 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","file_format":"ROI","preview":{"text_lines":[],"csv_columns":[],"csv_rows":[],"roi_count":9,"roi_member_count":25,"roi_duplicate_member_count":16,"roi_area_min":767.0,"roi_area_max":2860.0,"roi_area_mean":1990.2222222222222,"roi_examples":[{"shape_count":1,"label":1,"area":767.0,"bbox":[26,0,60,79],"centroid":[44.04823989569752,49.82007822685789]},{"shape_count":1,"label":2,"area":1998.0,"bbox":[16,134,248,369],"centroid":[145.3818818818819,231.70020020020021]},{"shape_count":1,"label":3,"area":2753.0,"bbox":[93,526,277,800],"centroid":[230.70577551761716,654.2459135488558]},{"shape_count":1,"label":4,"area":2720.0,"bbox":[196,336,428,610],"centroid":[362.19117647058823,447.45]},{"shape_count":1,"label":5,"area":1978.0,"bbox":[392,83,655,308],"centroid":[505.05460060667343,207.232052578362]},{"shape_count":1,"label":6,"area":2654.0,"bbox":[322,478,583,713],"centroid":[503.0734740015072,613.8944988696308]},{"shape_count":1,"label":7,"area":2860.0,"bbox":[371,338,733,551],"centroid":[538.5874125874126,412.679020979021]},{"shape_count":1,"label":8,"area":1191.0,"bbox":[558,298,692,375],"centroid":[639.455919395466,341.12258606213265]},{"shape_count":1,"label":9,"area":991.0,"bbox":[668,338,757,459],"centroid":[699.4843592330978,381.32694248234105]}],"truncated":false,"omitted_reason":null}},{"kind":"result","key":"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","metadata":{"filename":"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","type":"TEXT","size":"258 B","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurons_step1_segmentation_summary.txt","file_format":"TEXT","preview":{"text_lines":["Segmentation ROIs: 9 cells","Spatial dimensions: 2D","Projected source planes: 2","ROI files:","- /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip"],"csv_columns":[],"csv_rows":[],"roi_count":null,"roi_member_count":null,"roi_duplicate_member_count":null,"roi_area_min":null,"roi_area_max":null,"roi_area_mean":null,"roi_examples":[],"truncated":false,"omitted_reason":null}}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_116","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"review_images","limit":50,"include_previews":true,"max_preview_lines":10},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_116","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"review_images","limit":50,"include_previews":true,"max_preview_lines":10},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 2,\n    \"returned_count\": 2,\n    \"offset\": 0,\n    \"limit\": 50,\n    \"truncated_count\": 0,\n    \"records\": [\n      {\n        \"kind\": \"image\",\n        \"key\": \"review_images/1_s001_w1_z001_t001.tif\",\n        \"metadata\": {\n          \"filename\": \"review_images/1_s001_w1_z001_t001.tif\",\n          \"virtual_path\": \"review_images/1_s001_w1_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n          \"type\": \"Image\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".tif\",\n          \"size\": \"625.2 KB\",\n          \"modified\": \"2026-08-04T18:05:10\"\n        },\n        \"virtual_path\": \"review_images/1_s001_w1_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n        \"relative_path\": null,\n        \"full_path\": null,\n        \"file_format\": null,\n        \"preview\": null\n      },\n      {\n        \"kind\": \"image\",\n        \"key\": \"review_images/1_s001_w2_z001_t001.tif\",\n        \"metadata\": {\n          \"filename\": \"review_images/1_s001_w2_z001_t001.tif\",\n          \"virtual_path\": \"review_images/1_s001_w2_z001_t001.tif\",\n          \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n          \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n          \"type\": \"Image\",\n          \"site\": 1,\n          \"channel\": 2,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".tif\",\n          \"size\": \"625.2 KB\",\n          \"modified\": \"2026-08-04T18:05:10\"\n        },\n        \"virtual_path\": \"review_images/1_s001_w2_z001_t001.tif\",\n        \"full_virtual_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n        \"source_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n        \"relative_path\": null,\n        \"full_path\": null,\n        \"file_format\": null,\n        \"preview\": null\n      }\n    ]\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":2,"returned_count":2,"offset":0,"limit":50,"truncated_count":0,"records":[{"kind":"image","key":"review_images/1_s001_w1_z001_t001.tif","metadata":{"filename":"review_images/1_s001_w1_z001_t001.tif","virtual_path":"review_images/1_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","type":"Image","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".tif","size":"625.2 KB","modified":"2026-08-04T18:05:10"},"virtual_path":"review_images/1_s001_w1_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","relative_path":null,"full_path":null,"file_format":null,"preview":null},{"kind":"image","key":"review_images/1_s001_w2_z001_t001.tif","metadata":{"filename":"review_images/1_s001_w2_z001_t001.tif","virtual_path":"review_images/1_s001_w2_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","type":"Image","site":1,"channel":2,"z_index":1,"timepoint":1,"well":1,"extension":".tif","size":"625.2 KB","modified":"2026-08-04T18:05:10"},"virtual_path":"review_images/1_s001_w2_z001_t001.tif","full_virtual_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","source_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","relative_path":null,"full_path":null,"file_format":null,"preview":null}]}}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_117","type":"agent_message","text":"The pipeline has completed successfully with nine neurons quantified. I’m tightening the persistent-artifact inventory and settling the Napari presentation now—specifically the unified neuron identities, graph paths, and graph feature table."}}
{"type":"item.started","item":{"id":"item_118","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"result_files","kind":"all","path_contains":"neurite_morphology","include_previews":false,"limit":30},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_118","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"result_files","kind":"all","path_contains":"neurite_morphology","include_previews":false,"limit":30},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_ui_query_selected_plate_files\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"'result_files' is not a valid SelectedPlateFileQueryTarget\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_ui_query_selected_plate_files","errors":[{"code":"mcp_tool_failed","message":"'result_files' is not a valid SelectedPlateFileQueryTarget","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_119","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"result_files","kind":"all","path_contains":".swc","include_previews":false,"limit":30},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_119","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"result_files","kind":"all","path_contains":".swc","include_previews":false,"limit":30},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_ui_query_selected_plate_files\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"'result_files' is not a valid SelectedPlateFileQueryTarget\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_ui_query_selected_plate_files","errors":[{"code":"mcp_tool_failed","message":"'result_files' is not a valid SelectedPlateFileQueryTarget","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_120","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"result_files","kind":"all","path_contains":"review_images","include_previews":false,"limit":30},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_120","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"result_files","kind":"all","path_contains":"review_images","include_previews":false,"limit":30},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"ok\": false,\n  \"tool\": \"openhcs_ui_query_selected_plate_files\",\n  \"errors\": [\n    {\n      \"code\": \"mcp_tool_failed\",\n      \"message\": \"'result_files' is not a valid SelectedPlateFileQueryTarget\",\n      \"hint\": \"The MCP server caught this exception at the tool boundary.\",\n      \"exception_type\": \"ValueError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","ok":false,"tool":"openhcs_ui_query_selected_plate_files","errors":[{"code":"mcp_tool_failed","message":"'result_files' is not a valid SelectedPlateFileQueryTarget","hint":"The MCP server caught this exception at the tool boundary.","exception_type":"ValueError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_121","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_probe_viewer_window","arguments":{"port":5613,"timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_121","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_probe_viewer_window","arguments":{"port":5613,"timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"connection\": {\n    \"host\": \"localhost\",\n    \"port\": 5613,\n    \"transport_mode\": null,\n    \"persistent\": true\n  },\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"reachable\": true,\n  \"observed\": true,\n  \"viewer\": {\n    \"viewer_type\": \"napari\",\n    \"title\": \"OpenHCS Napari Visualization\"\n  },\n  \"layer_count\": 7,\n  \"component_group_count\": 7,\n  \"component_item_count\": 9\n}"}],"structured_content":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"reachable":true,"observed":true,"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"layer_count":7,"component_group_count":7,"component_item_count":9}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_122","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_viewer_window_state","arguments":{"port":5613,"include_component_values":true,"include_payload_summaries":true,"max_component_values_per_layer":10,"max_payload_summaries_per_layer":5,"timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_122","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_viewer_window_state","arguments":{"port":5613,"include_component_values":true,"include_payload_summaries":true,"max_component_values_per_layer":10,"max_payload_summaries_per_layer":5,"timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"connection\": {\n    \"host\": \"localhost\",\n    \"port\": 5613,\n    \"transport_mode\": null,\n    \"persistent\": true\n  },\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"observed\": true,\n  \"viewer\": {\n    \"viewer_type\": \"napari\",\n    \"title\": \"OpenHCS Napari Visualization\"\n  },\n  \"layer_count\": 7,\n  \"layers\": [\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n      \"title\": \"1. Enhanced neuronal signal\",\n      \"mounted\": true,\n      \"item_count\": 2,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"main\",\n          \"output_key\": \"main\",\n          \"projection_key\": \"main\",\n          \"step_name\": \"Enhanced neuronal signal\",\n          \"pipeline_position\": 0,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_0\",\n          \"invocation_key\": null,\n          \"artifact_kind\": null\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"image\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        },\n        {\n          \"site\": 1,\n          \"channel\": 2,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 2,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"image\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"ndarray\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"shape\": [\n            800,\n            800\n          ],\n          \"dtype\": \"uint8\",\n          \"size\": 640000,\n          \"nonzero_count\": 578598,\n          \"min\": 0,\n          \"max\": 255\n        },\n        {\n          \"data_type\": \"image\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 2,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"ndarray\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"shape\": [\n            800,\n            800\n          ],\n          \"dtype\": \"uint8\",\n          \"size\": 640000,\n          \"nonzero_count\": 608875,\n          \"min\": 0,\n          \"max\": 255\n        }\n      ],\n      \"payload_summary_count\": 2,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        0\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch1: W1_neuron_neurite\",\n          \"Ch2: W2_soma_nuclear\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          1,\n          2\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          1,\n          2\n        ]\n      },\n      \"data_shape\": [\n        2,\n        800,\n        800\n      ],\n      \"translate\": [\n        0.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": true,\n      \"feature_row_count\": 0,\n      \"selected_data_indices\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology\",\n      \"title\": \"2. Per-neuron morphology and topology\",\n      \"mounted\": true,\n      \"item_count\": 2,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"main\",\n          \"output_key\": \"main\",\n          \"projection_key\": \"main\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": null\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"image\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        },\n        {\n          \"site\": 1,\n          \"channel\": 2,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 2,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"image\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w1_z001_t001.tif\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"ndarray\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"shape\": [\n            800,\n            800\n          ],\n          \"dtype\": \"uint8\",\n          \"size\": 640000,\n          \"nonzero_count\": 578598,\n          \"min\": 0,\n          \"max\": 255\n        },\n        {\n          \"data_type\": \"image\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w2_z001_t001.tif\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 2,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"ndarray\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"shape\": [\n            800,\n            800\n          ],\n          \"dtype\": \"uint8\",\n          \"size\": 640000,\n          \"nonzero_count\": 608875,\n          \"min\": 0,\n          \"max\": 255\n        }\n      ],\n      \"payload_summary_count\": 2,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        0\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch1: W1_neuron_neurite\",\n          \"Ch2: W2_soma_nuclear\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          1,\n          2\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          1,\n          2\n        ]\n      },\n      \"data_shape\": [\n        2,\n        800,\n        800\n      ],\n      \"translate\": [\n        0.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": false,\n      \"feature_row_count\": 0,\n      \"selected_data_indices\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology cell_bodies ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"artifact\",\n          \"output_key\": \"cell_bodies\",\n          \"projection_key\": \"cell_bodies\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": \"object_labels\"\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"shapes\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 1,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"shapes\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"list\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"item_count\": 9,\n          \"nonzero_count\": 9,\n          \"shape_payload_count\": 9,\n          \"missing_source_spatial_shape_count\": 0,\n          \"shape_coordinate_count\": 772,\n          \"shape_out_of_source_bounds_count\": 0,\n          \"shape_coordinate_bounds_yx\": {\n            \"min_yx\": [\n              25.5,\n              35.5\n            ],\n            \"max_yx\": [\n              706.5,\n              681.5\n            ],\n            \"coordinate_count\": 772\n          }\n        }\n      ],\n      \"payload_summary_count\": 1,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        0\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch1: W1_neuron_neurite\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"data_shape\": [\n        9\n      ],\n      \"translate\": [\n        0.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": false,\n      \"feature_row_count\": 9,\n      \"selected_data_indices\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"artifact\",\n          \"output_key\": \"neurite_morphology\",\n          \"projection_key\": \"neurite_morphology\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": \"spatial_graph\"\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"shapes\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 1,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"shapes\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"list\",\n          \"item_count\": 25,\n          \"nonzero_count\": 25,\n          \"shape_payload_count\": 25,\n          \"missing_source_spatial_shape_count\": 25,\n          \"shape_coordinate_count\": 2150,\n          \"shape_out_of_source_bounds_count\": 0,\n          \"shape_coordinate_bounds_yx\": {\n            \"min_yx\": [\n              17.0,\n              0.0\n            ],\n            \"max_yx\": [\n              754.0,\n              799.0\n            ],\n            \"coordinate_count\": 2150\n          }\n        }\n      ],\n      \"payload_summary_count\": 1,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        0\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch1: W1_neuron_neurite\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"data_shape\": [\n        25\n      ],\n      \"translate\": [\n        0.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": false,\n      \"feature_row_count\": 25,\n      \"selected_data_indices\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_outgrowth ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"artifact\",\n          \"output_key\": \"neurite_outgrowth\",\n          \"projection_key\": \"neurite_outgrowth\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": \"object_labels\"\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"shapes\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 1,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"shapes\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"list\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"item_count\": 1089,\n          \"nonzero_count\": 1089,\n          \"shape_payload_count\": 1089,\n          \"missing_source_spatial_shape_count\": 0,\n          \"shape_coordinate_count\": 5554,\n          \"shape_out_of_source_bounds_count\": 0,\n          \"shape_coordinate_bounds_yx\": {\n            \"min_yx\": [\n              16.5,\n              -0.5\n            ],\n            \"max_yx\": [\n              754.5,\n              799.5\n            ],\n            \"coordinate_count\": 5554\n          }\n        }\n      ],\n      \"payload_summary_count\": 1,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        0\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch1: W1_neuron_neurite\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"data_shape\": [\n        1089\n      ],\n      \"translate\": [\n        0.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": false,\n      \"feature_row_count\": 1089,\n      \"selected_data_indices\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurons ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"artifact\",\n          \"output_key\": \"neurons\",\n          \"projection_key\": \"neurons\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": \"object_labels\"\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"shapes\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 1,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"shapes\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"list\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"item_count\": 25,\n          \"nonzero_count\": 25,\n          \"shape_payload_count\": 25,\n          \"missing_source_spatial_shape_count\": 0,\n          \"shape_coordinate_count\": 3131,\n          \"shape_out_of_source_bounds_count\": 0,\n          \"shape_coordinate_bounds_yx\": {\n            \"min_yx\": [\n              15.5,\n              -0.5\n            ],\n            \"max_yx\": [\n              756.5,\n              799.5\n            ],\n            \"coordinate_count\": 3131\n          }\n        }\n      ],\n      \"payload_summary_count\": 1,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        0\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch1: W1_neuron_neurite\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          1\n        ]\n      },\n      \"data_shape\": [\n        25\n      ],\n      \"translate\": [\n        0.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": false,\n      \"feature_row_count\": 25,\n      \"selected_data_indices\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology nuclei ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"artifact\",\n          \"output_key\": \"nuclei\",\n          \"projection_key\": \"nuclei\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": \"object_labels\"\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"data_types\": [\n        \"shapes\"\n      ],\n      \"component_values\": [\n        {\n          \"site\": 1,\n          \"channel\": 2,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": \"1\"\n        }\n      ],\n      \"component_value_count\": 1,\n      \"component_values_truncated\": false,\n      \"payload_summaries\": [\n        {\n          \"data_type\": \"shapes\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 2,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"payload_type\": \"list\",\n          \"spatial_origin_yx\": [\n            0,\n            0\n          ],\n          \"source_spatial_shape_yx\": [\n            800,\n            800\n          ],\n          \"item_count\": 10,\n          \"nonzero_count\": 10,\n          \"shape_payload_count\": 10,\n          \"missing_source_spatial_shape_count\": 0,\n          \"shape_coordinate_count\": 454,\n          \"shape_out_of_source_bounds_count\": 0,\n          \"shape_coordinate_bounds_yx\": {\n            \"min_yx\": [\n              21.5,\n              53.5\n            ],\n            \"max_yx\": [\n              694.5,\n              663.5\n            ],\n            \"coordinate_count\": 454\n          }\n        }\n      ],\n      \"payload_summary_count\": 1,\n      \"payload_summaries_truncated\": false,\n      \"axis_offsets\": [\n        1\n      ],\n      \"scalar_labels\": [],\n      \"labels\": {\n        \"channel\": [\n          \"Ch2: W2_soma_nuclear\"\n        ]\n      },\n      \"axis_component_values\": {\n        \"channel\": [\n          2\n        ]\n      },\n      \"routed_component_values\": {\n        \"channel\": [\n          2\n        ]\n      },\n      \"data_shape\": [\n        10\n      ],\n      \"translate\": [\n        1.0,\n        0.0,\n        0.0\n      ],\n      \"visible\": true,\n      \"selected\": false,\n      \"feature_row_count\": 10,\n      \"selected_data_indices\": []\n    }\n  ],\n  \"active_dimension_label_route\": \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n  \"viewer_ndim\": 3,\n  \"current_step\": [\n    0,\n    399,\n    400\n  ],\n  \"axis_labels\": [\n    \"channel\",\n    \"y\",\n    \"x\"\n  ],\n  \"component_group_count\": 7,\n  \"component_item_count\": 9,\n  \"response\": {}\n}"}],"structured_content":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"observed":true,"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"layer_count":7,"layers":[{"route_key":"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","title":"1. Enhanced neuronal signal","mounted":true,"item_count":2,"producer_identities":[{"origin":"pipeline","output_kind":"main","output_key":"main","projection_key":"main","step_name":"Enhanced neuronal signal","pipeline_position":0,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_0","invocation_key":null,"artifact_kind":null}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["image"],"component_values":[{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":2,"component_values_truncated":false,"payload_summaries":[{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":578598,"min":0,"max":255},{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","components":{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":608875,"min":0,"max":255}],"payload_summary_count":2,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite","Ch2: W2_soma_nuclear"]},"axis_component_values":{"channel":[1,2]},"routed_component_values":{"channel":[1,2]},"data_shape":[2,800,800],"translate":[0.0,0.0,0.0],"visible":true,"selected":true,"feature_row_count":0,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology","title":"2. Per-neuron morphology and topology","mounted":true,"item_count":2,"producer_identities":[{"origin":"pipeline","output_kind":"main","output_key":"main","projection_key":"main","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":null}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["image"],"component_values":[{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":2,"component_values_truncated":false,"payload_summaries":[{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w1_z001_t001.tif","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":578598,"min":0,"max":255},{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w2_z001_t001.tif","components":{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":608875,"min":0,"max":255}],"payload_summary_count":2,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite","Ch2: W2_soma_nuclear"]},"axis_component_values":{"channel":[1,2]},"routed_component_values":{"channel":[1,2]},"data_shape":[2,800,800],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":0,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology cell_bodies ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"cell_bodies","projection_key":"cell_bodies","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":1,"component_values_truncated":false,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":9,"nonzero_count":9,"shape_payload_count":9,"missing_source_spatial_shape_count":0,"shape_coordinate_count":772,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[25.5,35.5],"max_yx":[706.5,681.5],"coordinate_count":772}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[9],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":9,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurite_morphology","projection_key":"neurite_morphology","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"spatial_graph"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":1,"component_values_truncated":false,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","item_count":25,"nonzero_count":25,"shape_payload_count":25,"missing_source_spatial_shape_count":25,"shape_coordinate_count":2150,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[17.0,0.0],"max_yx":[754.0,799.0],"coordinate_count":2150}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[25],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":25,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_outgrowth ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurite_outgrowth","projection_key":"neurite_outgrowth","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":1,"component_values_truncated":false,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":1089,"nonzero_count":1089,"shape_payload_count":1089,"missing_source_spatial_shape_count":0,"shape_coordinate_count":5554,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[16.5,-0.5],"max_yx":[754.5,799.5],"coordinate_count":5554}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[1089],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":1089,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurons ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurons","projection_key":"neurons","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":1,"component_values_truncated":false,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":25,"nonzero_count":25,"shape_payload_count":25,"missing_source_spatial_shape_count":0,"shape_coordinate_count":3131,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[15.5,-0.5],"max_yx":[756.5,799.5],"coordinate_count":3131}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[25],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":25,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology nuclei ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"nuclei","projection_key":"nuclei","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"}],"component_value_count":1,"component_values_truncated":false,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","components":{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":10,"nonzero_count":10,"shape_payload_count":10,"missing_source_spatial_shape_count":0,"shape_coordinate_count":454,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[21.5,53.5],"max_yx":[694.5,663.5],"coordinate_count":454}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[1],"scalar_labels":[],"labels":{"channel":["Ch2: W2_soma_nuclear"]},"axis_component_values":{"channel":[2]},"routed_component_values":{"channel":[2]},"data_shape":[10],"translate":[1.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":10,"selected_data_indices":[]}],"active_dimension_label_route":"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","viewer_ndim":3,"current_step":[0,399,400],"axis_labels":["channel","y","x"],"component_group_count":7,"component_item_count":9,"response":{}}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_123","type":"agent_message","text":"Napari is live on 5613 with seven mounted layers. The graph artifact contains 25 feature-bearing paths; I’m reducing the display to the W1 enhanced context, unified neuron ROIs, and those paths, then selecting a graph row so its feature table is active."}}
{"type":"item.started","item":{"id":"item_124","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_isolate_viewer_window_layers","arguments":{"port":5613,"visible_route_keys":["origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes"],"selected_route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","axis_indices":{"channel":0},"timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_124","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_isolate_viewer_window_layers","arguments":{"port":5613,"visible_route_keys":["origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes"],"selected_route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","axis_indices":{"channel":0},"timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"observed\": true,\n  \"applied\": true,\n  \"selected_route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n  \"visible_route_keys\": [\n    \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n    \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n    \"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\"\n  ],\n  \"hidden_route_keys\": [\n    \"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology\",\n    \"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n    \"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n    \"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\"\n  ],\n  \"missing_route_keys\": [],\n  \"available_layers\": [\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n      \"title\": \"1. Enhanced neuronal signal\",\n      \"visible\": true,\n      \"selected\": false\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology\",\n      \"title\": \"2. Per-neuron morphology and topology\",\n      \"visible\": false,\n      \"selected\": false\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology cell_bodies ROIs\",\n      \"visible\": false,\n      \"selected\": false\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n      \"visible\": true,\n      \"selected\": true\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_outgrowth ROIs\",\n      \"visible\": false,\n      \"selected\": false\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurons ROIs\",\n      \"visible\": true,\n      \"selected\": false\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology nuclei ROIs\",\n      \"visible\": false,\n      \"selected\": false\n    }\n  ],\n  \"changed_route_count\": 7,\n  \"layer_count\": 7,\n  \"active_dimension_label_route\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n  \"current_step\": [\n    0,\n    399,\n    400\n  ],\n  \"axis_labels\": [\n    \"channel\",\n    \"y\",\n    \"x\"\n  ],\n  \"visible_layers\": [\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n      \"title\": \"1. Enhanced neuronal signal\",\n      \"visible\": true,\n      \"selected\": false\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n      \"visible\": true,\n      \"selected\": true\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurons ROIs\",\n      \"visible\": true,\n      \"selected\": false\n    }\n  ]\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"observed":true,"applied":true,"selected_route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","visible_route_keys":["origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes"],"hidden_route_keys":["origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology","origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes"],"missing_route_keys":[],"available_layers":[{"route_key":"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","title":"1. Enhanced neuronal signal","visible":true,"selected":false},{"route_key":"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology","title":"2. Per-neuron morphology and topology","visible":false,"selected":false},{"route_key":"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology cell_bodies ROIs","visible":false,"selected":false},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","visible":true,"selected":true},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_outgrowth ROIs","visible":false,"selected":false},{"route_key":"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurons ROIs","visible":true,"selected":false},{"route_key":"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology nuclei ROIs","visible":false,"selected":false}],"changed_route_count":7,"layer_count":7,"active_dimension_label_route":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","current_step":[0,399,400],"axis_labels":["channel","y","x"],"visible_layers":[{"route_key":"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","title":"1. Enhanced neuronal signal","visible":true,"selected":false},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","visible":true,"selected":true},{"route_key":"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurons ROIs","visible":true,"selected":false}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_125","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_navigate_viewer_window","arguments":{"port":5613,"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","visible":true,"selected":true,"axis_indices":{"channel":0},"data_index":0,"timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_125","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_navigate_viewer_window","arguments":{"port":5613,"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","visible":true,"selected":true,"axis_indices":{"channel":0},"data_index":0,"timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"connection\": {\n    \"host\": \"localhost\",\n    \"port\": 5613,\n    \"transport_mode\": null,\n    \"persistent\": true\n  },\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"observed\": true,\n  \"viewer\": {\n    \"viewer_type\": \"napari\",\n    \"title\": \"OpenHCS Napari Visualization\"\n  },\n  \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n  \"visible\": true,\n  \"selected\": true,\n  \"data_index\": 0,\n  \"feature_row_count\": 25,\n  \"selected_data_indices\": [\n    0\n  ],\n  \"active_dimension_label_route\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n  \"current_step\": [\n    0,\n    399,\n    400\n  ],\n  \"axis_labels\": [\n    \"channel\",\n    \"y\",\n    \"x\"\n  ],\n  \"available_layers\": [\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n      \"visible\": true,\n      \"selected\": true\n    }\n  ]\n}"}],"structured_content":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"observed":true,"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","visible":true,"selected":true,"data_index":0,"feature_row_count":25,"selected_data_indices":[0],"active_dimension_label_route":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","current_step":[0,399,400],"axis_labels":["channel","y","x"],"available_layers":[{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","visible":true,"selected":true}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_126","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_validate_viewer_window_state","arguments":{"port":5613,"expected_layer_count":7,"require_nonzero_payloads":true,"required_axis_labels":["channel","y","x"],"required_component_labels":["channel"],"include_state":true,"timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_126","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_validate_viewer_window_state","arguments":{"port":5613,"expected_layer_count":7,"require_nonzero_payloads":true,"required_axis_labels":["channel","y","x"],"required_component_labels":["channel"],"include_state":true,"timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"connection\": {\n    \"host\": \"localhost\",\n    \"port\": 5613,\n    \"transport_mode\": null,\n    \"persistent\": true\n  },\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"payload_count\": 9,\n  \"nonzero_payload_count\": 9,\n  \"zero_payload_count\": 0,\n  \"missing_nonzero_count\": 0,\n  \"missing_payload_coordinate_count\": 0,\n  \"duplicate_payload_coordinate_count\": 0,\n  \"payload_without_coordinate_count\": 0,\n  \"valid\": true,\n  \"observed\": true,\n  \"viewer\": {\n    \"viewer_type\": \"napari\",\n    \"title\": \"OpenHCS Napari Visualization\"\n  },\n  \"layer_count\": 7,\n  \"mounted_layer_count\": 7,\n  \"pending_update_count\": 0,\n  \"active_dimension_label_route\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n  \"active_dimension_label_route_valid\": true,\n  \"validation_policy\": {\n    \"expected_layer_count\": 7,\n    \"required_axis_labels\": [\n      \"channel\",\n      \"y\",\n      \"x\"\n    ],\n    \"required_component_labels\": [\n      \"channel\"\n    ],\n    \"require_nonzero_payloads\": true\n  },\n  \"layer_summaries\": [\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n      \"title\": \"1. Enhanced neuronal signal\",\n      \"mounted\": true,\n      \"item_count\": 2,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 2,\n      \"nonzero_payload_count\": 2,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 2,\n      \"routed_coordinate_count\": 2,\n      \"payload_coordinate_count\": 2,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology\",\n      \"title\": \"2. Per-neuron morphology and topology\",\n      \"mounted\": true,\n      \"item_count\": 2,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 2,\n      \"nonzero_payload_count\": 2,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 2,\n      \"routed_coordinate_count\": 2,\n      \"payload_coordinate_count\": 2,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology cell_bodies ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 1,\n      \"nonzero_payload_count\": 1,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 1,\n      \"routed_coordinate_count\": 1,\n      \"payload_coordinate_count\": 1,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 1,\n      \"nonzero_payload_count\": 1,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 1,\n      \"routed_coordinate_count\": 1,\n      \"payload_coordinate_count\": 1,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_outgrowth ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 1,\n      \"nonzero_payload_count\": 1,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 1,\n      \"routed_coordinate_count\": 1,\n      \"payload_coordinate_count\": 1,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurons ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 1,\n      \"nonzero_payload_count\": 1,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 1,\n      \"routed_coordinate_count\": 1,\n      \"payload_coordinate_count\": 1,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    },\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology nuclei ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payload_count\": 1,\n      \"nonzero_payload_count\": 1,\n      \"zero_payload_count\": 0,\n      \"missing_nonzero_count\": 0,\n      \"missing_payload_coordinate_count\": 0,\n      \"duplicate_payload_coordinate_count\": 0,\n      \"payload_without_coordinate_count\": 0,\n      \"valid\": true,\n      \"coordinate_gap_count\": 0,\n      \"expected_coordinate_count\": 1,\n      \"routed_coordinate_count\": 1,\n      \"payload_coordinate_count\": 1,\n      \"missing_required_axis_labels\": [],\n      \"component_labels\": [\n        \"channel\",\n        \"site\",\n        \"timepoint\",\n        \"well\",\n        \"z_index\"\n      ],\n      \"missing_required_component_labels\": [],\n      \"axis_labels_present_as_components\": []\n    }\n  ],\n  \"state\": {\n    \"connection\": {\n      \"host\": \"localhost\",\n      \"port\": 5613,\n      \"transport_mode\": null,\n      \"persistent\": true\n    },\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"observed\": true,\n    \"viewer\": {\n      \"viewer_type\": \"napari\",\n      \"title\": \"OpenHCS Napari Visualization\"\n    },\n    \"layer_count\": 7,\n    \"layers\": [\n      {\n        \"route_key\": \"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal\",\n        \"title\": \"1. Enhanced neuronal signal\",\n        \"mounted\": true,\n        \"item_count\": 2,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"main\",\n            \"output_key\": \"main\",\n            \"projection_key\": \"main\",\n            \"step_name\": \"Enhanced neuronal signal\",\n            \"pipeline_position\": 0,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_0\",\n            \"invocation_key\": null,\n            \"artifact_kind\": null\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"image\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 2,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"image\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"ndarray\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"shape\": [\n              800,\n              800\n            ],\n            \"dtype\": \"uint8\",\n            \"size\": 640000,\n            \"nonzero_count\": 578598,\n            \"min\": 0,\n            \"max\": 255\n          },\n          {\n            \"data_type\": \"image\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 2,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"ndarray\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"shape\": [\n              800,\n              800\n            ],\n            \"dtype\": \"uint8\",\n            \"size\": 640000,\n            \"nonzero_count\": 608875,\n            \"min\": 0,\n            \"max\": 255\n          }\n        ],\n        \"payload_summary_count\": 2,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          0\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch1: W1_neuron_neurite\",\n            \"Ch2: W2_soma_nuclear\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            1,\n            2\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            1,\n            2\n          ]\n        },\n        \"data_shape\": [\n          2,\n          800,\n          800\n        ],\n        \"translate\": [\n          0.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": true,\n        \"selected\": false,\n        \"feature_row_count\": 0,\n        \"selected_data_indices\": []\n      },\n      {\n        \"route_key\": \"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology\",\n        \"title\": \"2. Per-neuron morphology and topology\",\n        \"mounted\": true,\n        \"item_count\": 2,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"main\",\n            \"output_key\": \"main\",\n            \"projection_key\": \"main\",\n            \"step_name\": \"Per-neuron morphology and topology\",\n            \"pipeline_position\": 1,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n            \"invocation_key\": null,\n            \"artifact_kind\": null\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"image\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 2,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"image\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w1_z001_t001.tif\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"ndarray\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"shape\": [\n              800,\n              800\n            ],\n            \"dtype\": \"uint8\",\n            \"size\": 640000,\n            \"nonzero_count\": 578598,\n            \"min\": 0,\n            \"max\": 255\n          },\n          {\n            \"data_type\": \"image\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w2_z001_t001.tif\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 2,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"ndarray\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"shape\": [\n              800,\n              800\n            ],\n            \"dtype\": \"uint8\",\n            \"size\": 640000,\n            \"nonzero_count\": 608875,\n            \"min\": 0,\n            \"max\": 255\n          }\n        ],\n        \"payload_summary_count\": 2,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          0\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch1: W1_neuron_neurite\",\n            \"Ch2: W2_soma_nuclear\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            1,\n            2\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            1,\n            2\n          ]\n        },\n        \"data_shape\": [\n          2,\n          800,\n          800\n        ],\n        \"translate\": [\n          0.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": false,\n        \"selected\": false,\n        \"feature_row_count\": 0,\n        \"selected_data_indices\": []\n      },\n      {\n        \"route_key\": \"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n        \"title\": \"2. Per-neuron morphology and topology cell_bodies ROIs\",\n        \"mounted\": true,\n        \"item_count\": 1,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"artifact\",\n            \"output_key\": \"cell_bodies\",\n            \"projection_key\": \"cell_bodies\",\n            \"step_name\": \"Per-neuron morphology and topology\",\n            \"pipeline_position\": 1,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n            \"invocation_key\": null,\n            \"artifact_kind\": \"object_labels\"\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"shapes\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 1,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"shapes\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"list\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"item_count\": 9,\n            \"nonzero_count\": 9,\n            \"shape_payload_count\": 9,\n            \"missing_source_spatial_shape_count\": 0,\n            \"shape_coordinate_count\": 772,\n            \"shape_out_of_source_bounds_count\": 0,\n            \"shape_coordinate_bounds_yx\": {\n              \"min_yx\": [\n                25.5,\n                35.5\n              ],\n              \"max_yx\": [\n                706.5,\n                681.5\n              ],\n              \"coordinate_count\": 772\n            }\n          }\n        ],\n        \"payload_summary_count\": 1,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          0\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch1: W1_neuron_neurite\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"data_shape\": [\n          9\n        ],\n        \"translate\": [\n          0.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": false,\n        \"selected\": false,\n        \"feature_row_count\": 9,\n        \"selected_data_indices\": [\n          0\n        ]\n      },\n      {\n        \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n        \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n        \"mounted\": true,\n        \"item_count\": 1,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"artifact\",\n            \"output_key\": \"neurite_morphology\",\n            \"projection_key\": \"neurite_morphology\",\n            \"step_name\": \"Per-neuron morphology and topology\",\n            \"pipeline_position\": 1,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n            \"invocation_key\": null,\n            \"artifact_kind\": \"spatial_graph\"\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"shapes\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 1,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"shapes\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"list\",\n            \"item_count\": 25,\n            \"nonzero_count\": 25,\n            \"shape_payload_count\": 25,\n            \"missing_source_spatial_shape_count\": 25,\n            \"shape_coordinate_count\": 2150,\n            \"shape_out_of_source_bounds_count\": 0,\n            \"shape_coordinate_bounds_yx\": {\n              \"min_yx\": [\n                17.0,\n                0.0\n              ],\n              \"max_yx\": [\n                754.0,\n                799.0\n              ],\n              \"coordinate_count\": 2150\n            }\n          }\n        ],\n        \"payload_summary_count\": 1,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          0\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch1: W1_neuron_neurite\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"data_shape\": [\n          25\n        ],\n        \"translate\": [\n          0.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": true,\n        \"selected\": true,\n        \"feature_row_count\": 25,\n        \"selected_data_indices\": [\n          0\n        ]\n      },\n      {\n        \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n        \"title\": \"2. Per-neuron morphology and topology neurite_outgrowth ROIs\",\n        \"mounted\": true,\n        \"item_count\": 1,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"artifact\",\n            \"output_key\": \"neurite_outgrowth\",\n            \"projection_key\": \"neurite_outgrowth\",\n            \"step_name\": \"Per-neuron morphology and topology\",\n            \"pipeline_position\": 1,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n            \"invocation_key\": null,\n            \"artifact_kind\": \"object_labels\"\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"shapes\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 1,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"shapes\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"list\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"item_count\": 1089,\n            \"nonzero_count\": 1089,\n            \"shape_payload_count\": 1089,\n            \"missing_source_spatial_shape_count\": 0,\n            \"shape_coordinate_count\": 5554,\n            \"shape_out_of_source_bounds_count\": 0,\n            \"shape_coordinate_bounds_yx\": {\n              \"min_yx\": [\n                16.5,\n                -0.5\n              ],\n              \"max_yx\": [\n                754.5,\n                799.5\n              ],\n              \"coordinate_count\": 5554\n            }\n          }\n        ],\n        \"payload_summary_count\": 1,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          0\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch1: W1_neuron_neurite\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"data_shape\": [\n          1089\n        ],\n        \"translate\": [\n          0.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": false,\n        \"selected\": false,\n        \"feature_row_count\": 1089,\n        \"selected_data_indices\": [\n          0,\n          1,\n          2,\n          3,\n          4,\n          5,\n          6,\n          7,\n          8,\n          9,\n          10,\n          11,\n          12\n        ]\n      },\n      {\n        \"route_key\": \"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n        \"title\": \"2. Per-neuron morphology and topology neurons ROIs\",\n        \"mounted\": true,\n        \"item_count\": 1,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"artifact\",\n            \"output_key\": \"neurons\",\n            \"projection_key\": \"neurons\",\n            \"step_name\": \"Per-neuron morphology and topology\",\n            \"pipeline_position\": 1,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n            \"invocation_key\": null,\n            \"artifact_kind\": \"object_labels\"\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"shapes\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 1,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"shapes\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"list\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"item_count\": 25,\n            \"nonzero_count\": 25,\n            \"shape_payload_count\": 25,\n            \"missing_source_spatial_shape_count\": 0,\n            \"shape_coordinate_count\": 3131,\n            \"shape_out_of_source_bounds_count\": 0,\n            \"shape_coordinate_bounds_yx\": {\n              \"min_yx\": [\n                15.5,\n                -0.5\n              ],\n              \"max_yx\": [\n                756.5,\n                799.5\n              ],\n              \"coordinate_count\": 3131\n            }\n          }\n        ],\n        \"payload_summary_count\": 1,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          0\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch1: W1_neuron_neurite\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            1\n          ]\n        },\n        \"data_shape\": [\n          25\n        ],\n        \"translate\": [\n          0.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": true,\n        \"selected\": false,\n        \"feature_row_count\": 25,\n        \"selected_data_indices\": [\n          0,\n          1\n        ]\n      },\n      {\n        \"route_key\": \"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n        \"title\": \"2. Per-neuron morphology and topology nuclei ROIs\",\n        \"mounted\": true,\n        \"item_count\": 1,\n        \"producer_identities\": [\n          {\n            \"origin\": \"pipeline\",\n            \"output_kind\": \"artifact\",\n            \"output_key\": \"nuclei\",\n            \"projection_key\": \"nuclei\",\n            \"step_name\": \"Per-neuron morphology and topology\",\n            \"pipeline_position\": 1,\n            \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n            \"invocation_key\": null,\n            \"artifact_kind\": \"object_labels\"\n          }\n        ],\n        \"axis_labels\": [\n          \"channel\",\n          \"y\",\n          \"x\"\n        ],\n        \"stack_axes\": [\n          \"channel\"\n        ],\n        \"pending_update\": false,\n        \"data_types\": [\n          \"shapes\"\n        ],\n        \"component_values\": [],\n        \"component_value_count\": 1,\n        \"component_values_truncated\": true,\n        \"payload_summaries\": [\n          {\n            \"data_type\": \"shapes\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 2,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"list\",\n            \"spatial_origin_yx\": [\n              0,\n              0\n            ],\n            \"source_spatial_shape_yx\": [\n              800,\n              800\n            ],\n            \"item_count\": 10,\n            \"nonzero_count\": 10,\n            \"shape_payload_count\": 10,\n            \"missing_source_spatial_shape_count\": 0,\n            \"shape_coordinate_count\": 454,\n            \"shape_out_of_source_bounds_count\": 0,\n            \"shape_coordinate_bounds_yx\": {\n              \"min_yx\": [\n                21.5,\n                53.5\n              ],\n              \"max_yx\": [\n                694.5,\n                663.5\n              ],\n              \"coordinate_count\": 454\n            }\n          }\n        ],\n        \"payload_summary_count\": 1,\n        \"payload_summaries_truncated\": false,\n        \"axis_offsets\": [\n          1\n        ],\n        \"scalar_labels\": [],\n        \"labels\": {\n          \"channel\": [\n            \"Ch2: W2_soma_nuclear\"\n          ]\n        },\n        \"axis_component_values\": {\n          \"channel\": [\n            2\n          ]\n        },\n        \"routed_component_values\": {\n          \"channel\": [\n            2\n          ]\n        },\n        \"data_shape\": [\n          10\n        ],\n        \"translate\": [\n          1.0,\n          0.0,\n          0.0\n        ],\n        \"visible\": false,\n        \"selected\": false,\n        \"feature_row_count\": 10,\n        \"selected_data_indices\": []\n      }\n    ],\n    \"active_dimension_label_route\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n    \"viewer_ndim\": 3,\n    \"current_step\": [\n      0,\n      399,\n      400\n    ],\n    \"axis_labels\": [\n      \"channel\",\n      \"y\",\n      \"x\"\n    ],\n    \"component_group_count\": 7,\n    \"component_item_count\": 9,\n    \"response\": {}\n  }\n}"}],"structured_content":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"payload_count":9,"nonzero_payload_count":9,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"observed":true,"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"layer_count":7,"mounted_layer_count":7,"pending_update_count":0,"active_dimension_label_route":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","active_dimension_label_route_valid":true,"validation_policy":{"expected_layer_count":7,"required_axis_labels":["channel","y","x"],"required_component_labels":["channel"],"require_nonzero_payloads":true},"layer_summaries":[{"route_key":"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","title":"1. Enhanced neuronal signal","mounted":true,"item_count":2,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":2,"nonzero_payload_count":2,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":2,"routed_coordinate_count":2,"payload_coordinate_count":2,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]},{"route_key":"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology","title":"2. Per-neuron morphology and topology","mounted":true,"item_count":2,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":2,"nonzero_payload_count":2,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":2,"routed_coordinate_count":2,"payload_coordinate_count":2,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]},{"route_key":"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology cell_bodies ROIs","mounted":true,"item_count":1,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":1,"nonzero_payload_count":1,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":1,"routed_coordinate_count":1,"payload_coordinate_count":1,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","mounted":true,"item_count":1,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":1,"nonzero_payload_count":1,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":1,"routed_coordinate_count":1,"payload_coordinate_count":1,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_outgrowth ROIs","mounted":true,"item_count":1,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":1,"nonzero_payload_count":1,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":1,"routed_coordinate_count":1,"payload_coordinate_count":1,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]},{"route_key":"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurons ROIs","mounted":true,"item_count":1,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":1,"nonzero_payload_count":1,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":1,"routed_coordinate_count":1,"payload_coordinate_count":1,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]},{"route_key":"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology nuclei ROIs","mounted":true,"item_count":1,"producer_identities":[],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payload_count":1,"nonzero_payload_count":1,"zero_payload_count":0,"missing_nonzero_count":0,"missing_payload_coordinate_count":0,"duplicate_payload_coordinate_count":0,"payload_without_coordinate_count":0,"valid":true,"coordinate_gap_count":0,"expected_coordinate_count":1,"routed_coordinate_count":1,"payload_coordinate_count":1,"missing_required_axis_labels":[],"component_labels":["channel","site","timepoint","well","z_index"],"missing_required_component_labels":[],"axis_labels_present_as_components":[]}],"state":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"observed":true,"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"layer_count":7,"layers":[{"route_key":"origin_pipeline_kind_main_projection_main_step_0_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_0_name_Enhanced_neuronal_signal","title":"1. Enhanced neuronal signal","mounted":true,"item_count":2,"producer_identities":[{"origin":"pipeline","output_kind":"main","output_key":"main","projection_key":"main","step_name":"Enhanced neuronal signal","pipeline_position":0,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_0","invocation_key":null,"artifact_kind":null}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["image"],"component_values":[],"component_value_count":2,"component_values_truncated":true,"payload_summaries":[{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w1_z001_t001.tif","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":578598,"min":0,"max":255},{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/review_images/1_s001_w2_z001_t001.tif","components":{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":608875,"min":0,"max":255}],"payload_summary_count":2,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite","Ch2: W2_soma_nuclear"]},"axis_component_values":{"channel":[1,2]},"routed_component_values":{"channel":[1,2]},"data_shape":[2,800,800],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":0,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_main_projection_main_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology","title":"2. Per-neuron morphology and topology","mounted":true,"item_count":2,"producer_identities":[{"origin":"pipeline","output_kind":"main","output_key":"main","projection_key":"main","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":null}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["image"],"component_values":[],"component_value_count":2,"component_values_truncated":true,"payload_summaries":[{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w1_z001_t001.tif","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":578598,"min":0,"max":255},{"data_type":"image","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images/1_s001_w2_z001_t001.tif","components":{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"ndarray","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"shape":[800,800],"dtype":"uint8","size":640000,"nonzero_count":608875,"min":0,"max":255}],"payload_summary_count":2,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite","Ch2: W2_soma_nuclear"]},"axis_component_values":{"channel":[1,2]},"routed_component_values":{"channel":[1,2]},"data_shape":[2,800,800],"translate":[0.0,0.0,0.0],"visible":false,"selected":false,"feature_row_count":0,"selected_data_indices":[]},{"route_key":"origin_pipeline_kind_artifact_projection_cell_bodies_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology cell_bodies ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"cell_bodies","projection_key":"cell_bodies","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[],"component_value_count":1,"component_values_truncated":true,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_cell_bodies_step1_rois.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":9,"nonzero_count":9,"shape_payload_count":9,"missing_source_spatial_shape_count":0,"shape_coordinate_count":772,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[25.5,35.5],"max_yx":[706.5,681.5],"coordinate_count":772}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[9],"translate":[0.0,0.0,0.0],"visible":false,"selected":false,"feature_row_count":9,"selected_data_indices":[0]},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurite_morphology","projection_key":"neurite_morphology","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"spatial_graph"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[],"component_value_count":1,"component_values_truncated":true,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","item_count":25,"nonzero_count":25,"shape_payload_count":25,"missing_source_spatial_shape_count":25,"shape_coordinate_count":2150,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[17.0,0.0],"max_yx":[754.0,799.0],"coordinate_count":2150}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[25],"translate":[0.0,0.0,0.0],"visible":true,"selected":true,"feature_row_count":25,"selected_data_indices":[0]},{"route_key":"origin_pipeline_kind_artifact_projection_neurite_outgrowth_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_outgrowth ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurite_outgrowth","projection_key":"neurite_outgrowth","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[],"component_value_count":1,"component_values_truncated":true,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_outgrowth_step1_rois.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":1089,"nonzero_count":1089,"shape_payload_count":1089,"missing_source_spatial_shape_count":0,"shape_coordinate_count":5554,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[16.5,-0.5],"max_yx":[754.5,799.5],"coordinate_count":5554}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[1089],"translate":[0.0,0.0,0.0],"visible":false,"selected":false,"feature_row_count":1089,"selected_data_indices":[0,1,2,3,4,5,6,7,8,9,10,11,12]},{"route_key":"origin_pipeline_kind_artifact_projection_neurons_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurons ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurons","projection_key":"neurons","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[],"component_value_count":1,"component_values_truncated":true,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":25,"nonzero_count":25,"shape_payload_count":25,"missing_source_spatial_shape_count":0,"shape_coordinate_count":3131,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[15.5,-0.5],"max_yx":[756.5,799.5],"coordinate_count":3131}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[0],"scalar_labels":[],"labels":{"channel":["Ch1: W1_neuron_neurite"]},"axis_component_values":{"channel":[1]},"routed_component_values":{"channel":[1]},"data_shape":[25],"translate":[0.0,0.0,0.0],"visible":true,"selected":false,"feature_row_count":25,"selected_data_indices":[0,1]},{"route_key":"origin_pipeline_kind_artifact_projection_nuclei_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology nuclei ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"nuclei","projection_key":"nuclei","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"object_labels"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"data_types":["shapes"],"component_values":[],"component_value_count":1,"component_values_truncated":true,"payload_summaries":[{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w2_z001_t001_nuclei_step1_rois.roi.zip","components":{"site":1,"channel":2,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","spatial_origin_yx":[0,0],"source_spatial_shape_yx":[800,800],"item_count":10,"nonzero_count":10,"shape_payload_count":10,"missing_source_spatial_shape_count":0,"shape_coordinate_count":454,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[21.5,53.5],"max_yx":[694.5,663.5],"coordinate_count":454}}],"payload_summary_count":1,"payload_summaries_truncated":false,"axis_offsets":[1],"scalar_labels":[],"labels":{"channel":["Ch2: W2_soma_nuclear"]},"axis_component_values":{"channel":[2]},"routed_component_values":{"channel":[2]},"data_shape":[10],"translate":[1.0,0.0,0.0],"visible":false,"selected":false,"feature_row_count":10,"selected_data_indices":[]}],"active_dimension_label_route":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","viewer_ndim":3,"current_step":[0,399,400],"axis_labels":["channel","y","x"],"component_group_count":7,"component_item_count":9,"response":{}}}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_127","type":"agent_message","text":"The settled viewer now has exactly the intended three visible layers, W1 selected on the channel axis, and graph path 0 selected; all nine mounted payloads validate as nonzero with no missing or duplicate coordinates. I’m capturing the final window and retrieving the live editable Python plus the results action."}}
{"type":"item.started","item":{"id":"item_128","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_viewer_snapshot_window","arguments":{"port":5613,"capture_scope":"window","output_dir_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs","timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_128","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_viewer_snapshot_window","arguments":{"port":5613,"capture_scope":"window","output_dir_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs","timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"connection\": {\n    \"host\": \"localhost\",\n    \"port\": 5613,\n    \"transport_mode\": null,\n    \"persistent\": true\n  },\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"output_dir_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\",\n  \"capture_scope\": \"window\",\n  \"captured\": true,\n  \"resource\": {\n    \"uri\": \"file:///home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png\",\n    \"title\": \"OpenHCS Napari Visualization\",\n    \"mime_type\": \"image/png\",\n    \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png\",\n    \"size_bytes\": 358506,\n    \"sha256\": \"a79b9ac5659f5a8e42231a16404e475cd72d124c668e284351c6d65a10a1de22\"\n  },\n  \"viewer\": {\n    \"viewer_type\": \"napari\",\n    \"title\": \"OpenHCS Napari Visualization\"\n  },\n  \"width\": 1728,\n  \"height\": 972,\n  \"response\": {\n    \"type\": \"screenshot_ack\",\n    \"status\": \"success\",\n    \"viewer\": {\n      \"type\": \"napari\",\n      \"title\": \"OpenHCS Napari Visualization\"\n    },\n    \"resource\": {\n      \"uri\": \"file:///home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png\",\n      \"title\": \"OpenHCS Napari Visualization\",\n      \"mime_type\": \"image/png\",\n      \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png\",\n      \"size_bytes\": 358506,\n      \"sha256\": \"a79b9ac5659f5a8e42231a16404e475cd72d124c668e284351c6d65a10a1de22\"\n    },\n    \"width\": 1728,\n    \"height\": 972,\n    \"snapshot\": {\n      \"connection\": {\n        \"host\": \"localhost\",\n        \"port\": 5613,\n        \"transport_mode\": null,\n        \"persistent\": true\n      },\n      \"timeout_ms\": 2000,\n      \"include_response\": true,\n      \"output_dir_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs\",\n      \"capture_scope\": \"window\"\n    }\n  }\n}"}],"structured_content":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"output_dir_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs","capture_scope":"window","captured":true,"resource":{"uri":"file:///home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png","title":"OpenHCS Napari Visualization","mime_type":"image/png","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png","size_bytes":358506,"sha256":"a79b9ac5659f5a8e42231a16404e475cd72d124c668e284351c6d65a10a1de22"},"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"width":1728,"height":972,"response":{"type":"screenshot_ack","status":"success","viewer":{"type":"napari","title":"OpenHCS Napari Visualization"},"resource":{"uri":"file:///home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png","title":"OpenHCS Napari Visualization","mime_type":"image/png","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png","size_bytes":358506,"sha256":"a79b9ac5659f5a8e42231a16404e475cd72d124c668e284351c6d65a10a1de22"},"width":1728,"height":972,"snapshot":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"timeout_ms":2000,"include_response":true,"output_dir_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs","capture_scope":"window"}}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_129","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.started","item":{"id":"item_130","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"window_code_document:plate_manager","clean":true,"selection_mode":"selected"},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.started","item":{"id":"item_131","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_viewer_window_payloads","arguments":{"port":5613,"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","axis_indices":{"channel":0},"include_shape_payloads":true,"max_shape_payloads":2,"timeout_ms":2000},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_129","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Inspect Runtime requires an active debug session.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Inspect Runtime'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Start Debug\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_pause_boundary_required\",\n        \"message\": \"Run to Pause requires at least one debug-pause step.\",\n        \"hint\": \"Enable debug_pause on a pipeline step before invoking Run to Pause.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Stop debug session requires an active or pending debug execution.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Stop debug session'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Restart requires an active debug session.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Restart'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":true,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_session_required","message":"Inspect Runtime requires an active debug session.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Inspect Runtime'.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Start Debug","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_pause_boundary_required","message":"Run to Pause requires at least one debug-pause step.","hint":"Enable debug_pause on a pipeline step before invoking Run to Pause.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_session_required","message":"Stop debug session requires an active or pending debug execution.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Stop debug session'.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_session_required","message":"Restart requires an active debug session.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Restart'.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":true,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":true,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":true,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":true,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":true,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_130","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"window_code_document:plate_manager","clean":true,"selection_mode":"selected"},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"selected\",\n  \"selected_scope_ids\": [],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"98bd7c32d6c8aa66d582ab08f25244c45e98e93971da9cbf3ceacd612434f453\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"window_code_document\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"window_code_document\"\n    },\n    \"title\": \"Open window code-mode documents (window_code_document:<window_id>)\",\n    \"readable\": false,\n    \"writable\": false,\n    \"supported_selection_modes\": [],\n    \"current_selection_count\": 0,\n    \"total_scope_count\": 1\n  },\n  \"source\": \"\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 0,\n  \"sha256\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n  \"warnings\": [],\n  \"errors\": [\n    {\n      \"code\": \"ui_code_document_read_failed\",\n      \"message\": \"\\\"Open window has no code-document driver registered: 'plate_manager'\\\"\",\n      \"hint\": null,\n      \"exception_type\": \"KeyError\",\n      \"path\": null\n    }\n  ]\n}"}],"structured_content":{"selection_mode":"selected","selected_scope_ids":[],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"98bd7c32d6c8aa66d582ab08f25244c45e98e93971da9cbf3ceacd612434f453","schema_version":"openhcs.agent.v1","summary":{"widget_id":"window_code_document","schema_version":"openhcs.agent.v1","identity":{"document_id":"window_code_document"},"title":"Open window code-mode documents (window_code_document:<window_id>)","readable":false,"writable":false,"supported_selection_modes":[],"current_selection_count":0,"total_scope_count":1},"source":"","mime_type":"text/x-python","size_bytes":0,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","warnings":[],"errors":[{"code":"ui_code_document_read_failed","message":"\"Open window has no code-document driver registered: 'plate_manager'\"","hint":null,"exception_type":"KeyError","path":null}]}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_131","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_get_viewer_window_payloads","arguments":{"port":5613,"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","axis_indices":{"channel":0},"include_shape_payloads":true,"max_shape_payloads":2,"timeout_ms":2000},"result":{"content":[{"type":"text","text":"{\n  \"connection\": {\n    \"host\": \"localhost\",\n    \"port\": 5613,\n    \"transport_mode\": null,\n    \"persistent\": true\n  },\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"observed\": true,\n  \"viewer\": {\n    \"viewer_type\": \"napari\",\n    \"title\": \"OpenHCS Napari Visualization\"\n  },\n  \"layer_count\": 1,\n  \"layers\": [\n    {\n      \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n      \"title\": \"2. Per-neuron morphology and topology neurite_morphology ROIs\",\n      \"mounted\": true,\n      \"item_count\": 1,\n      \"producer_identities\": [\n        {\n          \"origin\": \"pipeline\",\n          \"output_kind\": \"artifact\",\n          \"output_key\": \"neurite_morphology\",\n          \"projection_key\": \"neurite_morphology\",\n          \"step_name\": \"Per-neuron morphology and topology\",\n          \"pipeline_position\": 1,\n          \"step_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",\n          \"invocation_key\": null,\n          \"artifact_kind\": \"spatial_graph\"\n        }\n      ],\n      \"axis_labels\": [\n        \"channel\",\n        \"y\",\n        \"x\"\n      ],\n      \"stack_axes\": [\n        \"channel\"\n      ],\n      \"pending_update\": false,\n      \"payloads\": [\n        {\n          \"route_key\": \"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes\",\n          \"data_type\": \"shapes\",\n          \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"components\": {\n            \"site\": 1,\n            \"channel\": 1,\n            \"z_index\": 1,\n            \"timepoint\": 1,\n            \"well\": \"1\"\n          },\n          \"axis_indices\": [\n            0\n          ],\n          \"aggregate_axis_indices\": [],\n          \"summary\": {\n            \"data_type\": \"shapes\",\n            \"path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n            \"components\": {\n              \"site\": 1,\n              \"channel\": 1,\n              \"z_index\": 1,\n              \"timepoint\": 1,\n              \"well\": \"1\"\n            },\n            \"payload_type\": \"list\",\n            \"item_count\": 25,\n            \"nonzero_count\": 25,\n            \"shape_payload_count\": 25,\n            \"missing_source_spatial_shape_count\": 25,\n            \"shape_coordinate_count\": 2150,\n            \"shape_out_of_source_bounds_count\": 0,\n            \"shape_coordinate_bounds_yx\": {\n              \"min_yx\": [\n                17.0,\n                0.0\n              ],\n              \"max_yx\": [\n                754.0,\n                799.0\n              ],\n              \"coordinate_count\": 2150\n            }\n          },\n          \"array_values\": [],\n          \"array_value_summary\": {},\n          \"shape_payloads\": [\n            {\n              \"type\": \"path\",\n              \"coordinates\": [\n                [\n                  47.0,\n                  36.0\n                ],\n                [\n                  48.0,\n                  35.0\n                ],\n                [\n                  48.0,\n                  34.0\n                ],\n                [\n                  48.0,\n                  33.0\n                ],\n                [\n                  48.0,\n                  32.0\n                ],\n                [\n                  48.0,\n                  31.0\n                ],\n                [\n                  49.0,\n                  30.0\n                ],\n                [\n                  49.0,\n                  29.0\n                ],\n                [\n                  49.0,\n                  28.0\n                ],\n                [\n                  49.0,\n                  27.0\n                ],\n                [\n                  49.0,\n                  26.0\n                ],\n                [\n                  50.0,\n                  25.0\n                ],\n                [\n                  49.0,\n                  24.0\n                ],\n                [\n                  49.0,\n                  23.0\n                ],\n                [\n                  50.0,\n                  22.0\n                ],\n                [\n                  50.0,\n                  21.0\n                ],\n                [\n                  50.0,\n                  20.0\n                ],\n                [\n                  50.0,\n                  19.0\n                ],\n                [\n                  50.0,\n                  18.0\n                ],\n                [\n                  51.0,\n                  17.0\n                ],\n                [\n                  51.0,\n                  16.0\n                ],\n                [\n                  51.0,\n                  15.0\n                ],\n                [\n                  51.0,\n                  14.0\n                ],\n                [\n                  52.0,\n                  13.0\n                ],\n                [\n                  51.0,\n                  12.0\n                ],\n                [\n                  52.0,\n                  11.0\n                ],\n                [\n                  52.0,\n                  10.0\n                ],\n                [\n                  53.0,\n                  9.0\n                ],\n                [\n                  53.0,\n                  8.0\n                ],\n                [\n                  53.0,\n                  7.0\n                ],\n                [\n                  54.0,\n                  6.0\n                ],\n                [\n                  54.0,\n                  5.0\n                ],\n                [\n                  54.0,\n                  4.0\n                ],\n                [\n                  55.0,\n                  3.0\n                ],\n                [\n                  55.0,\n                  2.0\n                ],\n                [\n                  55.0,\n                  1.0\n                ],\n                [\n                  55.0,\n                  0.0\n                ]\n              ],\n              \"metadata\": {\n                \"label\": 1,\n                \"area\": 0.0,\n                \"perimeter\": 40.970562748477136,\n                \"centroid\": [\n                  50.86486486486486,\n                  18.0\n                ],\n                \"graph\": \"neurite_morphology\",\n                \"edge_id\": 1,\n                \"source_node_id\": 1,\n                \"target_node_id\": 2,\n                \"neuron_label\": 1,\n                \"branch_distance_um\": 40.970562748477136,\n                \"euclidean_distance_um\": 36.87817782917155,\n                \"tortuosity\": 1.1109703667643906,\n                \"distance_from_soma_um\": 0.0,\n                \"branch_type\": 0,\n                \"__openhcs_object_subject__\": \"[\\\"output\\\",\\\"object_labels\\\",\\\"neurons\\\",\\\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\\\",1]\",\n                \"__openhcs_object_subject_id__\": 1\n              }\n            },\n            {\n              \"type\": \"path\",\n              \"coordinates\": [\n                [\n                  120.0,\n                  195.0\n                ],\n                [\n                  119.0,\n                  194.0\n                ],\n                [\n                  118.0,\n                  194.0\n                ],\n                [\n                  117.0,\n                  194.0\n                ],\n                [\n                  116.0,\n                  193.0\n                ],\n                [\n                  115.0,\n                  193.0\n                ],\n                [\n                  114.0,\n                  192.0\n                ],\n                [\n                  113.0,\n                  192.0\n                ],\n                [\n                  112.0,\n                  192.0\n                ],\n                [\n                  111.0,\n                  191.0\n                ],\n                [\n                  110.0,\n                  191.0\n                ],\n                [\n                  109.0,\n                  191.0\n                ],\n                [\n                  108.0,\n                  190.0\n                ],\n                [\n                  107.0,\n                  190.0\n                ],\n                [\n                  106.0,\n                  190.0\n                ],\n                [\n                  105.0,\n                  189.0\n                ],\n                [\n                  104.0,\n                  189.0\n                ],\n                [\n                  103.0,\n                  188.0\n                ],\n                [\n                  102.0,\n                  188.0\n                ],\n                [\n                  101.0,\n                  188.0\n                ],\n                [\n                  100.0,\n                  187.0\n                ],\n                [\n                  99.0,\n                  187.0\n                ],\n                [\n                  98.0,\n                  186.0\n                ],\n                [\n                  97.0,\n                  186.0\n                ],\n                [\n                  96.0,\n                  185.0\n                ],\n                [\n                  95.0,\n                  185.0\n                ],\n                [\n                  94.0,\n                  184.0\n                ],\n                [\n                  93.0,\n                  184.0\n                ],\n                [\n                  92.0,\n                  183.0\n                ],\n                [\n                  91.0,\n                  182.0\n                ],\n                [\n                  90.0,\n                  182.0\n                ],\n                [\n                  89.0,\n                  181.0\n                ],\n                [\n                  88.0,\n                  180.0\n                ],\n                [\n                  87.0,\n                  180.0\n                ],\n                [\n                  86.0,\n                  179.0\n                ],\n                [\n                  85.0,\n                  179.0\n                ],\n                [\n                  84.0,\n                  178.0\n                ],\n                [\n                  83.0,\n                  177.0\n                ],\n                [\n                  82.0,\n                  177.0\n                ],\n                [\n                  81.0,\n                  176.0\n                ],\n                [\n                  80.0,\n                  175.0\n                ],\n                [\n                  79.0,\n                  174.0\n                ],\n                [\n                  78.0,\n                  174.0\n                ],\n                [\n                  77.0,\n                  173.0\n                ],\n                [\n                  76.0,\n                  172.0\n                ],\n                [\n                  75.0,\n                  171.0\n                ],\n                [\n                  74.0,\n                  171.0\n                ],\n                [\n                  73.0,\n                  170.0\n                ],\n                [\n                  72.0,\n                  169.0\n                ],\n                [\n                  71.0,\n                  169.0\n                ],\n                [\n                  70.0,\n                  168.0\n                ],\n                [\n                  69.0,\n                  167.0\n                ],\n                [\n                  68.0,\n                  167.0\n                ],\n                [\n                  67.0,\n                  166.0\n                ],\n                [\n                  66.0,\n                  165.0\n                ],\n                [\n                  65.0,\n                  165.0\n                ],\n                [\n                  64.0,\n                  164.0\n                ],\n                [\n                  63.0,\n                  163.0\n                ],\n                [\n                  62.0,\n                  162.0\n                ],\n                [\n                  61.0,\n                  162.0\n                ],\n                [\n                  60.0,\n                  161.0\n                ],\n                [\n                  59.0,\n                  160.0\n                ],\n                [\n                  58.0,\n                  159.0\n                ],\n                [\n                  57.0,\n                  159.0\n                ],\n                [\n                  56.0,\n                  158.0\n                ],\n                [\n                  55.0,\n                  157.0\n                ],\n                [\n                  54.0,\n                  157.0\n                ],\n                [\n                  53.0,\n                  156.0\n                ],\n                [\n                  52.0,\n                  155.0\n                ],\n                [\n                  51.0,\n                  154.0\n                ],\n                [\n                  50.0,\n                  154.0\n                ],\n                [\n                  49.0,\n                  153.0\n                ],\n                [\n                  48.0,\n                  153.0\n                ],\n                [\n                  47.0,\n                  152.0\n                ],\n                [\n                  46.0,\n                  152.0\n                ],\n                [\n                  45.0,\n                  151.0\n                ],\n                [\n                  44.0,\n                  150.0\n                ],\n                [\n                  43.0,\n                  150.0\n                ],\n                [\n                  42.0,\n                  149.0\n                ],\n                [\n                  41.0,\n                  148.0\n                ],\n                [\n                  40.0,\n                  148.0\n                ],\n                [\n                  39.0,\n                  147.0\n                ],\n                [\n                  38.0,\n                  147.0\n                ],\n                [\n                  37.0,\n                  146.0\n                ],\n                [\n                  36.0,\n                  145.0\n                ],\n                [\n                  35.0,\n                  145.0\n                ],\n                [\n                  34.0,\n                  144.0\n                ],\n                [\n                  33.0,\n                  143.0\n                ],\n                [\n                  32.0,\n                  143.0\n                ],\n                [\n                  31.0,\n                  142.0\n                ],\n                [\n                  30.0,\n                  142.0\n                ],\n                [\n                  29.0,\n                  141.0\n                ],\n                [\n                  28.0,\n                  141.0\n                ],\n                [\n                  27.0,\n                  140.0\n                ],\n                [\n                  26.0,\n                  140.0\n                ],\n                [\n                  25.0,\n                  139.0\n                ],\n                [\n                  24.0,\n                  139.0\n                ],\n                [\n                  23.0,\n                  138.0\n                ],\n                [\n                  22.0,\n                  138.0\n                ],\n                [\n                  21.0,\n                  137.0\n                ],\n                [\n                  20.0,\n                  137.0\n                ],\n                [\n                  19.0,\n                  136.0\n                ],\n                [\n                  18.0,\n                  135.0\n                ],\n                [\n                  17.0,\n                  135.0\n                ]\n              ],\n              \"metadata\": {\n                \"label\": 2,\n                \"area\": 0.0,\n                \"perimeter\": 127.8528137423857,\n                \"centroid\": [\n                  68.5,\n                  166.39423076923077\n                ],\n                \"graph\": \"neurite_morphology\",\n                \"edge_id\": 2,\n                \"source_node_id\": 3,\n                \"target_node_id\": 4,\n                \"neuron_label\": 2,\n                \"branch_distance_um\": 127.85281374238559,\n                \"euclidean_distance_um\": 119.20151005754919,\n                \"tortuosity\": 1.072577131620729,\n                \"distance_from_soma_um\": 0.0,\n                \"branch_type\": 0,\n                \"__openhcs_object_subject__\": \"[\\\"output\\\",\\\"object_labels\\\",\\\"neurons\\\",\\\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\\\",1]\",\n                \"__openhcs_object_subject_id__\": 2\n              }\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"response\": {}\n}"}],"structured_content":{"connection":{"host":"localhost","port":5613,"transport_mode":null,"persistent":true},"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"observed":true,"viewer":{"viewer_type":"napari","title":"OpenHCS Napari Visualization"},"layer_count":1,"layers":[{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","title":"2. Per-neuron morphology and topology neurite_morphology ROIs","mounted":true,"item_count":1,"producer_identities":[{"origin":"pipeline","output_kind":"artifact","output_key":"neurite_morphology","projection_key":"neurite_morphology","step_name":"Per-neuron morphology and topology","pipeline_position":1,"step_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1","invocation_key":null,"artifact_kind":"spatial_graph"}],"axis_labels":["channel","y","x"],"stack_axes":["channel"],"pending_update":false,"payloads":[{"route_key":"origin_pipeline_kind_artifact_projection_neurite_morphology_step_1_scope__home_ts_code_projects_openhcs_mcp_outputs_website-agent-demo_candidate-20260804-13_plate::pipeline::submission_7f9e5e109c00::step_1_name_Per-neuron_morphology_and_topology_shapes","data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"axis_indices":[0],"aggregate_axis_indices":[],"summary":{"data_type":"shapes","path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","components":{"site":1,"channel":1,"z_index":1,"timepoint":1,"well":"1"},"payload_type":"list","item_count":25,"nonzero_count":25,"shape_payload_count":25,"missing_source_spatial_shape_count":25,"shape_coordinate_count":2150,"shape_out_of_source_bounds_count":0,"shape_coordinate_bounds_yx":{"min_yx":[17.0,0.0],"max_yx":[754.0,799.0],"coordinate_count":2150}},"array_values":[],"array_value_summary":{},"shape_payloads":[{"type":"path","coordinates":[[47.0,36.0],[48.0,35.0],[48.0,34.0],[48.0,33.0],[48.0,32.0],[48.0,31.0],[49.0,30.0],[49.0,29.0],[49.0,28.0],[49.0,27.0],[49.0,26.0],[50.0,25.0],[49.0,24.0],[49.0,23.0],[50.0,22.0],[50.0,21.0],[50.0,20.0],[50.0,19.0],[50.0,18.0],[51.0,17.0],[51.0,16.0],[51.0,15.0],[51.0,14.0],[52.0,13.0],[51.0,12.0],[52.0,11.0],[52.0,10.0],[53.0,9.0],[53.0,8.0],[53.0,7.0],[54.0,6.0],[54.0,5.0],[54.0,4.0],[55.0,3.0],[55.0,2.0],[55.0,1.0],[55.0,0.0]],"metadata":{"label":1,"area":0.0,"perimeter":40.970562748477136,"centroid":[50.86486486486486,18.0],"graph":"neurite_morphology","edge_id":1,"source_node_id":1,"target_node_id":2,"neuron_label":1,"branch_distance_um":40.970562748477136,"euclidean_distance_um":36.87817782917155,"tortuosity":1.1109703667643906,"distance_from_soma_um":0.0,"branch_type":0,"__openhcs_object_subject__":"[\"output\",\"object_labels\",\"neurons\",\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",1]","__openhcs_object_subject_id__":1}},{"type":"path","coordinates":[[120.0,195.0],[119.0,194.0],[118.0,194.0],[117.0,194.0],[116.0,193.0],[115.0,193.0],[114.0,192.0],[113.0,192.0],[112.0,192.0],[111.0,191.0],[110.0,191.0],[109.0,191.0],[108.0,190.0],[107.0,190.0],[106.0,190.0],[105.0,189.0],[104.0,189.0],[103.0,188.0],[102.0,188.0],[101.0,188.0],[100.0,187.0],[99.0,187.0],[98.0,186.0],[97.0,186.0],[96.0,185.0],[95.0,185.0],[94.0,184.0],[93.0,184.0],[92.0,183.0],[91.0,182.0],[90.0,182.0],[89.0,181.0],[88.0,180.0],[87.0,180.0],[86.0,179.0],[85.0,179.0],[84.0,178.0],[83.0,177.0],[82.0,177.0],[81.0,176.0],[80.0,175.0],[79.0,174.0],[78.0,174.0],[77.0,173.0],[76.0,172.0],[75.0,171.0],[74.0,171.0],[73.0,170.0],[72.0,169.0],[71.0,169.0],[70.0,168.0],[69.0,167.0],[68.0,167.0],[67.0,166.0],[66.0,165.0],[65.0,165.0],[64.0,164.0],[63.0,163.0],[62.0,162.0],[61.0,162.0],[60.0,161.0],[59.0,160.0],[58.0,159.0],[57.0,159.0],[56.0,158.0],[55.0,157.0],[54.0,157.0],[53.0,156.0],[52.0,155.0],[51.0,154.0],[50.0,154.0],[49.0,153.0],[48.0,153.0],[47.0,152.0],[46.0,152.0],[45.0,151.0],[44.0,150.0],[43.0,150.0],[42.0,149.0],[41.0,148.0],[40.0,148.0],[39.0,147.0],[38.0,147.0],[37.0,146.0],[36.0,145.0],[35.0,145.0],[34.0,144.0],[33.0,143.0],[32.0,143.0],[31.0,142.0],[30.0,142.0],[29.0,141.0],[28.0,141.0],[27.0,140.0],[26.0,140.0],[25.0,139.0],[24.0,139.0],[23.0,138.0],[22.0,138.0],[21.0,137.0],[20.0,137.0],[19.0,136.0],[18.0,135.0],[17.0,135.0]],"metadata":{"label":2,"area":0.0,"perimeter":127.8528137423857,"centroid":[68.5,166.39423076923077],"graph":"neurite_morphology","edge_id":2,"source_node_id":3,"target_node_id":4,"neuron_label":2,"branch_distance_um":127.85281374238559,"euclidean_distance_um":119.20151005754919,"tortuosity":1.072577131620729,"distance_from_soma_um":0.0,"branch_type":0,"__openhcs_object_subject__":"[\"output\",\"object_labels\",\"neurons\",\"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline::submission_7f9e5e109c00::step_1\",1]","__openhcs_object_subject_id__":2}}]}]}],"response":{}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_132","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_invoke_action","arguments":{"widget_id":"plate_manager","action_id":"code_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_132","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_invoke_action","arguments":{"widget_id":"plate_manager","action_id":"code_plate","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"identity\": {\n    \"widget_id\": \"plate_manager\",\n    \"action_id\": \"code_plate\"\n  },\n  \"status\": \"accepted\",\n  \"receipt\": {\n    \"request_token\": {\n      \"value\": null\n    },\n    \"bridge_operation_id\": \"6ef9e2e1-b17a-4857-8012-3ee96380baa8\",\n    \"accepted\": true\n  },\n  \"target_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n  \"workflow_status_surface_ids\": [],\n  \"recommended_poll_interval_ms\": 500,\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","identity":{"widget_id":"plate_manager","action_id":"code_plate"},"status":"accepted","receipt":{"request_token":{"value":null},"bridge_operation_id":"6ef9e2e1-b17a-4857-8012-3ee96380baa8","accepted":true},"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","workflow_status_surface_ids":[],"recommended_poll_interval_ms":500,"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_133","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_invoke_action","arguments":{"widget_id":"plate_manager","action_id":"view_results","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_133","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_invoke_action","arguments":{"widget_id":"plate_manager","action_id":"view_results","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"identity\": {\n    \"widget_id\": \"plate_manager\",\n    \"action_id\": \"view_results\"\n  },\n  \"status\": \"rejected\",\n  \"receipt\": {\n    \"request_token\": {\n      \"value\": null\n    },\n    \"bridge_operation_id\": null,\n    \"accepted\": false\n  },\n  \"target_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n  \"workflow_status_surface_ids\": [],\n  \"recommended_poll_interval_ms\": 500,\n  \"errors\": [\n    {\n      \"code\": \"ui_bridge_busy\",\n      \"message\": \"A mutating UI bridge operation is already running.\",\n      \"hint\": null,\n      \"exception_type\": \"UiBridgeBusyError\",\n      \"path\": null\n    }\n  ],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","identity":{"widget_id":"plate_manager","action_id":"view_results"},"status":"rejected","receipt":{"request_token":{"value":null},"bridge_operation_id":null,"accepted":false},"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","workflow_status_surface_ids":[],"recommended_poll_interval_ms":500,"errors":[{"code":"ui_bridge_busy","message":"A mutating UI bridge operation is already running.","hint":null,"exception_type":"UiBridgeBusyError","path":null}],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_134","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_code_documents","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_134","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_code_documents","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"documents\": [\n    {\n      \"widget_id\": \"object_state_scope\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code mode - /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_0::function_0\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 9,\n      \"document_id\": \"object_state_scope:/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_0::function_0\"\n    },\n    {\n      \"widget_id\": \"object_state_scope\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code mode - /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_1::function_0\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 9,\n      \"document_id\": \"object_state_scope:/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_1::function_0\"\n    },\n    {\n      \"widget_id\": \"pipeline_editor\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code mode - Edit Pipeline\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 2,\n      \"document_id\": \"window_code_document:pipeline_editor\"\n    },\n    {\n      \"widget_id\": \"code_editor:orchestrator:140518144406256\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code mode - Edit Orchestrator Configuration\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 2,\n      \"document_id\": \"window_code_document:code_editor:orchestrator:140518144406256\"\n    },\n    {\n      \"widget_id\": \"plate_manager\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Plate manager orchestrator config\",\n      \"readable\": true,\n      \"writable\": true,\n      \"supported_selection_modes\": [\n        \"selected\",\n        \"all\"\n      ],\n      \"current_selection_count\": 1,\n      \"total_scope_count\": 1,\n      \"document_id\": \"plate_manager.orchestrator_config\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","documents":[{"widget_id":"object_state_scope","schema_version":"openhcs.agent.v1","title":"Code mode - /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_0::function_0","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":9,"document_id":"object_state_scope:/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_0::function_0"},{"widget_id":"object_state_scope","schema_version":"openhcs.agent.v1","title":"Code mode - /home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_1::function_0","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":9,"document_id":"object_state_scope:/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::functionstep_1::function_0"},{"widget_id":"pipeline_editor","schema_version":"openhcs.agent.v1","title":"Code mode - Edit Pipeline","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":2,"document_id":"window_code_document:pipeline_editor"},{"widget_id":"code_editor:orchestrator:140518144406256","schema_version":"openhcs.agent.v1","title":"Code mode - Edit Orchestrator Configuration","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":2,"document_id":"window_code_document:code_editor:orchestrator:140518144406256"},{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","title":"Plate manager orchestrator config","readable":true,"writable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1,"document_id":"plate_manager.orchestrator_config"}],"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_135","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_135","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_list_actions","arguments":{},"result":{"content":[{"type":"text","text":"{\n  \"page\": null,\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"actions\": [\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"add_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'del_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"del_step\"\n    },\n    {\n      \"selection_mode\": \"selected_steps\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_step_editor\",\n        \"may_mutate_step\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"ui_action_disabled\",\n        \"message\": \"pipeline_editor action 'edit_step' is disabled.\",\n        \"hint\": \"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"edit_step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Auto\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"loads_basic_pipeline\",\n        \"mutates_pipeline\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"auto_load_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a\",\n      \"related_state_surface_ids\": [\n        \"pipeline_editor.state\"\n      ],\n      \"widget_id\": \"pipeline_editor\",\n      \"action_id\": \"code_pipeline\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Inspect Runtime\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_debug_runtime_inspector\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Inspect Runtime requires an active debug session.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Inspect Runtime'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"runtime_values\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Start Debug\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Step\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"step\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run to Pause\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_pause_boundary_required\",\n        \"message\": \"Run to Pause requires at least one debug-pause step.\",\n        \"hint\": \"Enable debug_pause on a pipeline step before invoking Run to Pause.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"run_to_pause\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Choose source group\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"choose_source_group\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Stop debug session\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Stop debug session requires an active or pending debug execution.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Stop debug session'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"stop\"\n    },\n    {\n      \"selection_mode\": \"current_pipeline\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Restart\",\n      \"enabled\": false,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_controls_debug_execution\"\n      ],\n      \"disabled_error\": {\n        \"code\": \"debug_session_required\",\n        \"message\": \"Restart requires an active debug session.\",\n        \"hint\": \"Run or step the compiled pipeline in debug mode before invoking 'Restart'.\",\n        \"exception_type\": null,\n        \"path\": null\n      },\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline\"\n      ],\n      \"selection_revision_token\": \"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"pipeline_editor.state\",\n        \"pipeline_debug_toolbar.session\"\n      ],\n      \"widget_id\": \"pipeline_debug_toolbar\",\n      \"action_id\": \"restart\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Add\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_file_dialog\",\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"add_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Del\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"mutates_plate_collection\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"del_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Edit\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_config_window\",\n        \"may_mutate_plate_config\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"edit_config\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Init\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_initialization_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"init_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Compile\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_compile_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"compile_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Run\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"starts_or_stops_execution_workflow\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"run_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Code\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_code_document_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"code_plate\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Results\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_results_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\",\n        \"plate_manager.live_measurements\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_results\"\n    },\n    {\n      \"selection_mode\": \"selected\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Viewer\",\n      \"enabled\": true,\n      \"invocation_mode\": \"sync\",\n      \"side_effects\": [\n        \"opens_metadata_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 1,\n      \"target_scope_ids\": [\n        \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n      ],\n      \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n      \"related_state_surface_ids\": [\n        \"plate_manager.state\"\n      ],\n      \"widget_id\": \"plate_manager\",\n      \"action_id\": \"view_metadata\"\n    },\n    {\n      \"selection_mode\": \"global\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Check for Updates\",\n      \"enabled\": true,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"checks_trusted_release_service\",\n        \"may_open_update_confirmation\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": false,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"main_window\",\n      \"action_id\": \"check_for_updates\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_and_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Save without closing\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"saves_window_state\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"save_without_close\"\n    },\n    {\n      \"selection_mode\": \"targeted\",\n      \"schema_version\": \"openhcs.agent.v1\",\n      \"title\": \"Discard changes and close\",\n      \"enabled\": false,\n      \"invocation_mode\": \"async\",\n      \"side_effects\": [\n        \"discards_unsaved_window_state\",\n        \"closes_window\"\n      ],\n      \"disabled_error\": null,\n      \"confirmation_required\": true,\n      \"current_selection_count\": 0,\n      \"target_scope_ids\": [],\n      \"selection_revision_token\": null,\n      \"related_state_surface_ids\": [],\n      \"widget_id\": \"managed_window\",\n      \"action_id\": \"discard_and_close\"\n    }\n  ],\n  \"errors\": [],\n  \"warnings\": [\n    {\n      \"code\": \"plate_path_setup_uses_code_document\",\n      \"message\": \"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.\",\n      \"hint\": null\n    }\n  ]\n}"}],"structured_content":{"page":null,"schema_version":"openhcs.agent.v1","actions":[{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"add_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Del","enabled":false,"invocation_mode":"sync","side_effects":["mutates_pipeline"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'del_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"del_step"},{"selection_mode":"selected_steps","schema_version":"openhcs.agent.v1","title":"Edit","enabled":false,"invocation_mode":"sync","side_effects":["opens_step_editor","may_mutate_step"],"disabled_error":{"code":"ui_action_disabled","message":"pipeline_editor action 'edit_step' is disabled.","hint":"PipelineEditor step actions require at least one selected step. Load or create steps with auto_load_pipeline, add_step, or window_code_document:pipeline_editor, then select a step row.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"edit_step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Auto","enabled":true,"invocation_mode":"sync","side_effects":["loads_basic_pipeline","mutates_pipeline"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"auto_load_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"98fed1539aea7e201b2ee5a8467e0ad4ea9d04b6ab2ee44a8d1a4efeda49902a","related_state_surface_ids":["pipeline_editor.state"],"widget_id":"pipeline_editor","action_id":"code_pipeline"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Inspect Runtime","enabled":false,"invocation_mode":"sync","side_effects":["opens_debug_runtime_inspector"],"disabled_error":{"code":"debug_session_required","message":"Inspect Runtime requires an active debug session.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Inspect Runtime'.","exception_type":null,"path":null},"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"runtime_values"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Start Debug","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Step","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"step"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Run to Pause","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_pause_boundary_required","message":"Run to Pause requires at least one debug-pause step.","hint":"Enable debug_pause on a pipeline step before invoking Run to Pause.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"run_to_pause"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Choose source group","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"choose_source_group"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Stop debug session","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_session_required","message":"Stop debug session requires an active or pending debug execution.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Stop debug session'.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"stop"},{"selection_mode":"current_pipeline","schema_version":"openhcs.agent.v1","title":"Restart","enabled":false,"invocation_mode":"sync","side_effects":["starts_or_controls_debug_execution"],"disabled_error":{"code":"debug_session_required","message":"Restart requires an active debug session.","hint":"Run or step the compiled pipeline in debug mode before invoking 'Restart'.","exception_type":null,"path":null},"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate::pipeline"],"selection_revision_token":"c2d792fa83c81d2ea654157aa05074fd2a8fc37440abb050ad2a191b49604f60","related_state_surface_ids":["plate_manager.state","pipeline_editor.state","pipeline_debug_toolbar.session"],"widget_id":"pipeline_debug_toolbar","action_id":"restart"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Add","enabled":true,"invocation_mode":"sync","side_effects":["opens_file_dialog","mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"add_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Del","enabled":true,"invocation_mode":"sync","side_effects":["mutates_plate_collection"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"del_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Edit","enabled":true,"invocation_mode":"sync","side_effects":["opens_config_window","may_mutate_plate_config"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"edit_config"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Init","enabled":true,"invocation_mode":"sync","side_effects":["starts_initialization_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"init_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Compile","enabled":true,"invocation_mode":"sync","side_effects":["starts_compile_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"compile_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Run","enabled":true,"invocation_mode":"sync","side_effects":["starts_or_stops_execution_workflow"],"disabled_error":null,"confirmation_required":true,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"run_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Code","enabled":true,"invocation_mode":"sync","side_effects":["opens_code_document_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"code_plate"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Results","enabled":true,"invocation_mode":"sync","side_effects":["opens_results_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state","plate_manager.live_measurements"],"widget_id":"plate_manager","action_id":"view_results"},{"selection_mode":"selected","schema_version":"openhcs.agent.v1","title":"Viewer","enabled":true,"invocation_mode":"sync","side_effects":["opens_metadata_window"],"disabled_error":null,"confirmation_required":false,"current_selection_count":1,"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","related_state_surface_ids":["plate_manager.state"],"widget_id":"plate_manager","action_id":"view_metadata"},{"selection_mode":"global","schema_version":"openhcs.agent.v1","title":"Check for Updates","enabled":true,"invocation_mode":"async","side_effects":["checks_trusted_release_service","may_open_update_confirmation"],"disabled_error":null,"confirmation_required":false,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"main_window","action_id":"check_for_updates"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save and close","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_and_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Save without closing","enabled":false,"invocation_mode":"async","side_effects":["saves_window_state"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"save_without_close"},{"selection_mode":"targeted","schema_version":"openhcs.agent.v1","title":"Discard changes and close","enabled":false,"invocation_mode":"async","side_effects":["discards_unsaved_window_state","closes_window"],"disabled_error":null,"confirmation_required":true,"current_selection_count":0,"target_scope_ids":[],"selection_revision_token":null,"related_state_surface_ids":[],"widget_id":"managed_window","action_id":"discard_and_close"}],"errors":[],"warnings":[{"code":"plate_path_setup_uses_code_document","message":"For autonomous path-based plate setup, read 'plate_manager.orchestrator_config' with openhcs_ui_get_code_document(selection_mode='all'), then apply source containing plate_paths and pipeline_data via openhcs_ui_apply_code_document. The add_plate UI action opens a GUI file dialog.","hint":null}]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_136","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_invoke_action","arguments":{"widget_id":"plate_manager","action_id":"view_results","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_136","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_invoke_action","arguments":{"widget_id":"plate_manager","action_id":"view_results","observed_selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"require_confirmation":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"identity\": {\n    \"widget_id\": \"plate_manager\",\n    \"action_id\": \"view_results\"\n  },\n  \"status\": \"accepted\",\n  \"receipt\": {\n    \"request_token\": {\n      \"value\": null\n    },\n    \"bridge_operation_id\": \"6653b8b5-7e25-4fff-9f2b-fd4845425b0d\",\n    \"accepted\": true\n  },\n  \"target_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"selection_revision_token\": \"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95\",\n  \"workflow_status_surface_ids\": [],\n  \"recommended_poll_interval_ms\": 500,\n  \"errors\": [],\n  \"warnings\": []\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","identity":{"widget_id":"plate_manager","action_id":"view_results"},"status":"accepted","receipt":{"request_token":{"value":null},"bridge_operation_id":"6653b8b5-7e25-4fff-9f2b-fd4845425b0d","accepted":true},"target_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"selection_revision_token":"4fbd01d3ce62ce0868a60415a9b63749618aa45455cc245d3ddd2cbdbc28bb95","workflow_status_surface_ids":[],"recommended_poll_interval_ms":500,"errors":[],"warnings":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_137","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"selected","clean":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.started","item":{"id":"item_138","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","clean":true},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_137","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"plate_manager.orchestrator_config","selection_mode":"selected","clean":true},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"selected\",\n  \"selected_scope_ids\": [\n    \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"8913ba0fbb5e16c2fe2bf2b734c6e7523de9a23e4bd9fe5b7b8bc5b9458af27d\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"plate_manager\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"plate_manager.orchestrator_config\"\n    },\n    \"title\": \"Plate manager orchestrator config\",\n    \"readable\": true,\n    \"writable\": true,\n    \"supported_selection_modes\": [\n      \"selected\",\n      \"all\"\n    ],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 1\n  },\n  \"source\": \"# Edit this orchestrator configuration and save to apply changes\\n\\nfrom openhcs.constants.constants import (\\n    AllComponents,\\n    VariableComponents,\\n)\\nfrom openhcs.core.config import (\\n    GlobalPipelineConfig,\\n    LazyNapariStreamingConfig,\\n    LazyPathPlanningConfig,\\n    LazyProcessingConfig,\\n    LazyStepMaterializationConfig,\\n    PipelineConfig,\\n)\\nfrom openhcs.core.source_bindings import (\\n    ComponentSelector,\\n    LazySourceBindingsConfig,\\n    NamedSourceBinding,\\n    SourceFilterClause,\\n    SourceFilterMatchType,\\n    SourceFilterSubject,\\n    SourceSelector,\\n)\\nfrom openhcs.core.steps.function_step import FunctionStep\\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\\n    MetaXpressCellBodySettings,\\n    MetaXpressNuclearSettings,\\n    MetaXpressOutgrowthSettings,\\n    neurite_outgrowth_metaxpress,\\n)\\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\\nfrom pathlib import Path\\n\\npath_root = Path('/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13')\\npath_1 = path_root / 'plate'\\npath_2 = path_root / 'outputs'\\n\\nplate_paths = [\\n    path_1\\n]\\n\\nglobal_config = GlobalPipelineConfig()\\n\\nper_plate_configs = {\\n    path_1: PipelineConfig(\\n        materialization_results_path=path_root / 'outputs' / 'results',\\n        materialize_runtime_artifacts=True,\\n        source_bindings_config=LazySourceBindingsConfig(\\n            bindings=(\\n                NamedSourceBinding(\\n                    alias='W1_neuron_neurite',\\n                    selector=SourceSelector(\\n                        filters=(\\n                            SourceFilterClause(\\n                                subject=SourceFilterSubject.FILE,\\n                                match_type=SourceFilterMatchType.EQUALS,\\n                                value='1_w1.tif'\\n                            ),\\n                        )\\n                    ),\\n                    component_identity=(\\n                        ComponentSelector(\\n                            component=AllComponents.WELL,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.SITE,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.CHANNEL,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.Z_INDEX,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.TIMEPOINT,\\n                            value='1'\\n                        )\\n                    )\\n                ),\\n                NamedSourceBinding(\\n                    alias='W2_soma_nuclear',\\n                    selector=SourceSelector(\\n                        filters=(\\n                            SourceFilterClause(\\n                                subject=SourceFilterSubject.FILE,\\n                                match_type=SourceFilterMatchType.EQUALS,\\n                                value='1_w2.tif'\\n                            ),\\n                        )\\n                    ),\\n                    component_identity=(\\n                        ComponentSelector(\\n                            component=AllComponents.WELL,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.SITE,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.CHANNEL,\\n                            value='2'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.Z_INDEX,\\n                            value='1'\\n                        ),\\n                        ComponentSelector(\\n                            component=AllComponents.TIMEPOINT,\\n                            value='1'\\n                        )\\n                    )\\n                )\\n            )\\n        ),\\n        path_planning_config=LazyPathPlanningConfig(\\n            well_filter=0,\\n            global_output_folder=path_2\\n        )\\n    )\\n}\\n\\npipeline_data = {\\n    path_1: [\\n        FunctionStep(\\n            func=(percentile_normalize, {\\n                    'target_max': 255.0,\\n                    'high_percentile': 99.8\\n                }),\\n            name='Enhanced neuronal signal',\\n            processing_config=LazyProcessingConfig(\\n                variable_components=[\\n                    VariableComponents.CHANNEL\\n                ]\\n            ),\\n            step_materialization_config=LazyStepMaterializationConfig(\\n                global_output_folder=path_2,\\n                sub_dir='review_images',\\n                enabled=True\\n            ),\\n            napari_streaming_config=LazyNapariStreamingConfig(\\n                colormap='magma',\\n                enabled=True,\\n                persistent=True,\\n                port=5613\\n            )\\n        ),\\n        FunctionStep(\\n            func=(neurite_outgrowth_metaxpress, {\\n                    'use_nuclear_stain': True,\\n                    'nuclear_stain': MetaXpressNuclearSettings(\\n                        approx_max_width=32.0,\\n                        intensity_above_local_background=18.0\\n                    ),\\n                    'cell_body': MetaXpressCellBodySettings(\\n                        approximate_max_width=36.0,\\n                        minimum_area=45.0,\\n                        intensity_above_local_background=20.0,\\n                        channel_index=0\\n                    ),\\n                    'outgrowth': MetaXpressOutgrowthSettings(\\n                        maximum_width=6.0,\\n                        intensity_above_local_background=8.0,\\n                        minimum_cell_growth_to_log_as_significant=8.0\\n                    )\\n                }),\\n            name='Per-neuron morphology and topology',\\n            processing_config=LazyProcessingConfig(\\n                variable_components=[\\n                    VariableComponents.CHANNEL\\n                ]\\n            ),\\n            napari_streaming_config=LazyNapariStreamingConfig(\\n                colormap='magma',\\n                enabled=True,\\n                persistent=True,\\n                port=5613\\n            )\\n        )\\n    ]\\n}\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 6534,\n  \"sha256\": \"c963bb4368f8292616257556553a7619c060b8db95ef4ea5c11bd2c37298950d\",\n  \"warnings\": [],\n  \"errors\": []\n}"}],"structured_content":{"selection_mode":"selected","selected_scope_ids":["/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"8913ba0fbb5e16c2fe2bf2b734c6e7523de9a23e4bd9fe5b7b8bc5b9458af27d","schema_version":"openhcs.agent.v1","summary":{"widget_id":"plate_manager","schema_version":"openhcs.agent.v1","identity":{"document_id":"plate_manager.orchestrator_config"},"title":"Plate manager orchestrator config","readable":true,"writable":true,"supported_selection_modes":["selected","all"],"current_selection_count":1,"total_scope_count":1},"source":"# Edit this orchestrator configuration and save to apply changes\n\nfrom openhcs.constants.constants import (\n    AllComponents,\n    VariableComponents,\n)\nfrom openhcs.core.config import (\n    GlobalPipelineConfig,\n    LazyNapariStreamingConfig,\n    LazyPathPlanningConfig,\n    LazyProcessingConfig,\n    LazyStepMaterializationConfig,\n    PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector,\n    LazySourceBindingsConfig,\n    NamedSourceBinding,\n    SourceFilterClause,\n    SourceFilterMatchType,\n    SourceFilterSubject,\n    SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings,\n    MetaXpressNuclearSettings,\n    MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom pathlib import Path\n\npath_root = Path('/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13')\npath_1 = path_root / 'plate'\npath_2 = path_root / 'outputs'\n\nplate_paths = [\n    path_1\n]\n\nglobal_config = GlobalPipelineConfig()\n\nper_plate_configs = {\n    path_1: PipelineConfig(\n        materialization_results_path=path_root / 'outputs' / 'results',\n        materialize_runtime_artifacts=True,\n        source_bindings_config=LazySourceBindingsConfig(\n            bindings=(\n                NamedSourceBinding(\n                    alias='W1_neuron_neurite',\n                    selector=SourceSelector(\n                        filters=(\n                            SourceFilterClause(\n                                subject=SourceFilterSubject.FILE,\n                                match_type=SourceFilterMatchType.EQUALS,\n                                value='1_w1.tif'\n                            ),\n                        )\n                    ),\n                    component_identity=(\n                        ComponentSelector(\n                            component=AllComponents.WELL,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.SITE,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.CHANNEL,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.Z_INDEX,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.TIMEPOINT,\n                            value='1'\n                        )\n                    )\n                ),\n                NamedSourceBinding(\n                    alias='W2_soma_nuclear',\n                    selector=SourceSelector(\n                        filters=(\n                            SourceFilterClause(\n                                subject=SourceFilterSubject.FILE,\n                                match_type=SourceFilterMatchType.EQUALS,\n                                value='1_w2.tif'\n                            ),\n                        )\n                    ),\n                    component_identity=(\n                        ComponentSelector(\n                            component=AllComponents.WELL,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.SITE,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.CHANNEL,\n                            value='2'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.Z_INDEX,\n                            value='1'\n                        ),\n                        ComponentSelector(\n                            component=AllComponents.TIMEPOINT,\n                            value='1'\n                        )\n                    )\n                )\n            )\n        ),\n        path_planning_config=LazyPathPlanningConfig(\n            well_filter=0,\n            global_output_folder=path_2\n        )\n    )\n}\n\npipeline_data = {\n    path_1: [\n        FunctionStep(\n            func=(percentile_normalize, {\n                    'target_max': 255.0,\n                    'high_percentile': 99.8\n                }),\n            name='Enhanced neuronal signal',\n            processing_config=LazyProcessingConfig(\n                variable_components=[\n                    VariableComponents.CHANNEL\n                ]\n            ),\n            step_materialization_config=LazyStepMaterializationConfig(\n                global_output_folder=path_2,\n                sub_dir='review_images',\n                enabled=True\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                colormap='magma',\n                enabled=True,\n                persistent=True,\n                port=5613\n            )\n        ),\n        FunctionStep(\n            func=(neurite_outgrowth_metaxpress, {\n                    'use_nuclear_stain': True,\n                    'nuclear_stain': MetaXpressNuclearSettings(\n                        approx_max_width=32.0,\n                        intensity_above_local_background=18.0\n                    ),\n                    'cell_body': MetaXpressCellBodySettings(\n                        approximate_max_width=36.0,\n                        minimum_area=45.0,\n                        intensity_above_local_background=20.0,\n                        channel_index=0\n                    ),\n                    'outgrowth': MetaXpressOutgrowthSettings(\n                        maximum_width=6.0,\n                        intensity_above_local_background=8.0,\n                        minimum_cell_growth_to_log_as_significant=8.0\n                    )\n                }),\n            name='Per-neuron morphology and topology',\n            processing_config=LazyProcessingConfig(\n                variable_components=[\n                    VariableComponents.CHANNEL\n                ]\n            ),\n            napari_streaming_config=LazyNapariStreamingConfig(\n                colormap='magma',\n                enabled=True,\n                persistent=True,\n                port=5613\n            )\n        )\n    ]\n}","mime_type":"text/x-python","size_bytes":6534,"sha256":"c963bb4368f8292616257556553a7619c060b8db95ef4ea5c11bd2c37298950d","warnings":[],"errors":[]}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_138","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_get_code_document","arguments":{"document_id":"window_code_document:pipeline_editor","clean":true},"result":{"content":[{"type":"text","text":"{\n  \"selection_mode\": \"selected\",\n  \"selected_scope_ids\": [\n    \"pipeline_editor\"\n  ],\n  \"current_snapshot\": {\n    \"snapshot_id\": \"cc500c55-e9e5-428d-9648-4fbcc00194fe\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"index\": 1,\n    \"branch\": \"main\",\n    \"parent_snapshot_id\": \"ad955375-6fcf-4359-916b-6f49a67f0d2a\",\n    \"timestamp_unix\": 1785881053.8182206,\n    \"timestamp\": \"2026-08-04T18:04:13.818\",\n    \"label\": \"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]\",\n    \"num_states\": 9,\n    \"is_current\": true,\n    \"is_head\": true,\n    \"uri\": \"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe\"\n  },\n  \"current_revision_token\": \"cef299fcb3d161ba599fc0debba127ec1e7f21719ce797187b3ffeab6d52975e\",\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"summary\": {\n    \"widget_id\": \"pipeline_editor\",\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"identity\": {\n      \"document_id\": \"window_code_document:pipeline_editor\"\n    },\n    \"title\": \"Edit Pipeline\",\n    \"readable\": true,\n    \"writable\": true,\n    \"supported_selection_modes\": [],\n    \"current_selection_count\": 1,\n    \"total_scope_count\": 2\n  },\n  \"source\": \"# OpenHCS pipeline\\n\\nfrom openhcs.constants.constants import (\\n    AllComponents,\\n    VariableComponents,\\n)\\nfrom openhcs.core.config import (\\n    LazyNapariStreamingConfig,\\n    LazyPathPlanningConfig,\\n    LazyProcessingConfig,\\n    LazyStepMaterializationConfig,\\n    PipelineConfig,\\n)\\nfrom openhcs.core.source_bindings import (\\n    ComponentSelector,\\n    LazySourceBindingsConfig,\\n    NamedSourceBinding,\\n    SourceFilterClause,\\n    SourceFilterMatchType,\\n    SourceFilterSubject,\\n    SourceSelector,\\n)\\nfrom openhcs.core.steps.function_step import FunctionStep\\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\\n    MetaXpressCellBodySettings,\\n    MetaXpressNuclearSettings,\\n    MetaXpressOutgrowthSettings,\\n    neurite_outgrowth_metaxpress,\\n)\\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\\nfrom pathlib import Path\\n\\npath_root = Path('/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs')\\n\\npipeline_config = PipelineConfig(\\n    materialization_results_path=path_root / 'results',\\n    materialize_runtime_artifacts=True,\\n    source_bindings_config=LazySourceBindingsConfig(\\n        bindings=(\\n            NamedSourceBinding(\\n                alias='W1_neuron_neurite',\\n                selector=SourceSelector(\\n                    filters=(\\n                        SourceFilterClause(\\n                            subject=SourceFilterSubject.FILE,\\n                            match_type=SourceFilterMatchType.EQUALS,\\n                            value='1_w1.tif'\\n                        ),\\n                    )\\n                ),\\n                component_identity=(\\n                    ComponentSelector(\\n                        component=AllComponents.WELL,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.SITE,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.CHANNEL,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.Z_INDEX,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.TIMEPOINT,\\n                        value='1'\\n                    )\\n                )\\n            ),\\n            NamedSourceBinding(\\n                alias='W2_soma_nuclear',\\n                selector=SourceSelector(\\n                    filters=(\\n                        SourceFilterClause(\\n                            subject=SourceFilterSubject.FILE,\\n                            match_type=SourceFilterMatchType.EQUALS,\\n                            value='1_w2.tif'\\n                        ),\\n                    )\\n                ),\\n                component_identity=(\\n                    ComponentSelector(\\n                        component=AllComponents.WELL,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.SITE,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.CHANNEL,\\n                        value='2'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.Z_INDEX,\\n                        value='1'\\n                    ),\\n                    ComponentSelector(\\n                        component=AllComponents.TIMEPOINT,\\n                        value='1'\\n                    )\\n                )\\n            )\\n        )\\n    ),\\n    path_planning_config=LazyPathPlanningConfig(\\n        well_filter=0,\\n        global_output_folder=path_root\\n    )\\n)\\n\\npipeline_steps = [\\n    FunctionStep(\\n        func=(percentile_normalize, {\\n                'target_max': 255.0,\\n                'high_percentile': 99.8\\n            }),\\n        name='Enhanced neuronal signal',\\n        processing_config=LazyProcessingConfig(\\n            variable_components=[\\n                VariableComponents.CHANNEL\\n            ]\\n        ),\\n        step_materialization_config=LazyStepMaterializationConfig(\\n            global_output_folder=path_root,\\n            sub_dir='review_images',\\n            enabled=True\\n        ),\\n        napari_streaming_config=LazyNapariStreamingConfig(\\n            colormap='magma',\\n            enabled=True,\\n            persistent=True,\\n            port=5613\\n        )\\n    ),\\n    FunctionStep(\\n        func=(neurite_outgrowth_metaxpress, {\\n                'use_nuclear_stain': True,\\n                'nuclear_stain': MetaXpressNuclearSettings(\\n                    approx_max_width=32.0,\\n                    intensity_above_local_background=18.0\\n                ),\\n                'cell_body': MetaXpressCellBodySettings(\\n                    approximate_max_width=36.0,\\n                    minimum_area=45.0,\\n                    intensity_above_local_background=20.0,\\n                    channel_index=0\\n                ),\\n                'outgrowth': MetaXpressOutgrowthSettings(\\n                    maximum_width=6.0,\\n                    intensity_above_local_background=8.0,\\n                    minimum_cell_growth_to_log_as_significant=8.0\\n                )\\n            }),\\n        name='Per-neuron morphology and topology',\\n        processing_config=LazyProcessingConfig(\\n            variable_components=[\\n                VariableComponents.CHANNEL\\n            ]\\n        ),\\n        napari_streaming_config=LazyNapariStreamingConfig(\\n            colormap='magma',\\n            enabled=True,\\n            persistent=True,\\n            port=5613\\n        )\\n    )\\n]\",\n  \"mime_type\": \"text/x-python\",\n  \"size_bytes\": 5761,\n  \"sha256\": \"cef299fcb3d161ba599fc0debba127ec1e7f21719ce797187b3ffeab6d52975e\",\n  \"warnings\": [],\n  \"errors\": []\n}"}],"structured_content":{"selection_mode":"selected","selected_scope_ids":["pipeline_editor"],"current_snapshot":{"snapshot_id":"cc500c55-e9e5-428d-9648-4fbcc00194fe","schema_version":"openhcs.agent.v1","index":1,"branch":"main","parent_snapshot_id":"ad955375-6fcf-4359-916b-6f49a67f0d2a","timestamp_unix":1785881053.8182206,"timestamp":"2026-08-04T18:04:13.818","label":"NeuronCyto II field 1 source bindings and neurite morphology pipeline [/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate]","num_states":9,"is_current":true,"is_head":true,"uri":"openhcs://ui/snapshots/cc500c55-e9e5-428d-9648-4fbcc00194fe"},"current_revision_token":"cef299fcb3d161ba599fc0debba127ec1e7f21719ce797187b3ffeab6d52975e","schema_version":"openhcs.agent.v1","summary":{"widget_id":"pipeline_editor","schema_version":"openhcs.agent.v1","identity":{"document_id":"window_code_document:pipeline_editor"},"title":"Edit Pipeline","readable":true,"writable":true,"supported_selection_modes":[],"current_selection_count":1,"total_scope_count":2},"source":"# OpenHCS pipeline\n\nfrom openhcs.constants.constants import (\n    AllComponents,\n    VariableComponents,\n)\nfrom openhcs.core.config import (\n    LazyNapariStreamingConfig,\n    LazyPathPlanningConfig,\n    LazyProcessingConfig,\n    LazyStepMaterializationConfig,\n    PipelineConfig,\n)\nfrom openhcs.core.source_bindings import (\n    ComponentSelector,\n    LazySourceBindingsConfig,\n    NamedSourceBinding,\n    SourceFilterClause,\n    SourceFilterMatchType,\n    SourceFilterSubject,\n    SourceSelector,\n)\nfrom openhcs.core.steps.function_step import FunctionStep\nfrom openhcs.processing.backends.analysis.neurite_outgrowth import (\n    MetaXpressCellBodySettings,\n    MetaXpressNuclearSettings,\n    MetaXpressOutgrowthSettings,\n    neurite_outgrowth_metaxpress,\n)\nfrom openhcs.processing.backends.processors.numpy_processor import percentile_normalize\nfrom pathlib import Path\n\npath_root = Path('/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs')\n\npipeline_config = PipelineConfig(\n    materialization_results_path=path_root / 'results',\n    materialize_runtime_artifacts=True,\n    source_bindings_config=LazySourceBindingsConfig(\n        bindings=(\n            NamedSourceBinding(\n                alias='W1_neuron_neurite',\n                selector=SourceSelector(\n                    filters=(\n                        SourceFilterClause(\n                            subject=SourceFilterSubject.FILE,\n                            match_type=SourceFilterMatchType.EQUALS,\n                            value='1_w1.tif'\n                        ),\n                    )\n                ),\n                component_identity=(\n                    ComponentSelector(\n                        component=AllComponents.WELL,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.SITE,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.CHANNEL,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.Z_INDEX,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.TIMEPOINT,\n                        value='1'\n                    )\n                )\n            ),\n            NamedSourceBinding(\n                alias='W2_soma_nuclear',\n                selector=SourceSelector(\n                    filters=(\n                        SourceFilterClause(\n                            subject=SourceFilterSubject.FILE,\n                            match_type=SourceFilterMatchType.EQUALS,\n                            value='1_w2.tif'\n                        ),\n                    )\n                ),\n                component_identity=(\n                    ComponentSelector(\n                        component=AllComponents.WELL,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.SITE,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.CHANNEL,\n                        value='2'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.Z_INDEX,\n                        value='1'\n                    ),\n                    ComponentSelector(\n                        component=AllComponents.TIMEPOINT,\n                        value='1'\n                    )\n                )\n            )\n        )\n    ),\n    path_planning_config=LazyPathPlanningConfig(\n        well_filter=0,\n        global_output_folder=path_root\n    )\n)\n\npipeline_steps = [\n    FunctionStep(\n        func=(percentile_normalize, {\n                'target_max': 255.0,\n                'high_percentile': 99.8\n            }),\n        name='Enhanced neuronal signal',\n        processing_config=LazyProcessingConfig(\n            variable_components=[\n                VariableComponents.CHANNEL\n            ]\n        ),\n        step_materialization_config=LazyStepMaterializationConfig(\n            global_output_folder=path_root,\n            sub_dir='review_images',\n            enabled=True\n        ),\n        napari_streaming_config=LazyNapariStreamingConfig(\n            colormap='magma',\n            enabled=True,\n            persistent=True,\n            port=5613\n        )\n    ),\n    FunctionStep(\n        func=(neurite_outgrowth_metaxpress, {\n                'use_nuclear_stain': True,\n                'nuclear_stain': MetaXpressNuclearSettings(\n                    approx_max_width=32.0,\n                    intensity_above_local_background=18.0\n                ),\n                'cell_body': MetaXpressCellBodySettings(\n                    approximate_max_width=36.0,\n                    minimum_area=45.0,\n                    intensity_above_local_background=20.0,\n                    channel_index=0\n                ),\n                'outgrowth': MetaXpressOutgrowthSettings(\n                    maximum_width=6.0,\n                    intensity_above_local_background=8.0,\n                    minimum_cell_growth_to_log_as_significant=8.0\n                )\n            }),\n        name='Per-neuron morphology and topology',\n        processing_config=LazyProcessingConfig(\n            variable_components=[\n                VariableComponents.CHANNEL\n            ]\n        ),\n        napari_streaming_config=LazyNapariStreamingConfig(\n            colormap='magma',\n            enabled=True,\n            persistent=True,\n            port=5613\n        )\n    )\n]","mime_type":"text/x-python","size_bytes":5761,"sha256":"cef299fcb3d161ba599fc0debba127ec1e7f21719ce797187b3ffeab6d52975e","warnings":[],"errors":[]}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_139","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":".swc","include_previews":false,"limit":20},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_139","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":".swc","include_previews":false,"limit":20},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 0,\n    \"returned_count\": 0,\n    \"offset\": 0,\n    \"limit\": 20,\n    \"truncated_count\": 0,\n    \"records\": []\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":0,"returned_count":0,"offset":0,"limit":20,"truncated_count":0,"records":[]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_140","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"neurite_morphology","include_previews":false,"limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_140","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"neurite_morphology","include_previews":false,"limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 1,\n    \"returned_count\": 1,\n    \"offset\": 0,\n    \"limit\": 50,\n    \"truncated_count\": 0,\n    \"records\": [\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"16.8 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".graph.roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": null\n      }\n    ]\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":1,"returned_count":1,"offset":0,"limit":50,"truncated_count":0,"records":[{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","type":"ROI","size":"16.8 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".graph.roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","file_format":"ROI","preview":null}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_141","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"morphology","include_previews":false,"limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_141","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"morphology","include_previews":false,"limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 1,\n    \"returned_count\": 1,\n    \"offset\": 0,\n    \"limit\": 50,\n    \"truncated_count\": 0,\n    \"records\": [\n      {\n        \"kind\": \"result\",\n        \"key\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"metadata\": {\n          \"filename\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"type\": \"ROI\",\n          \"size\": \"16.8 KB\",\n          \"modified\": \"2026-08-04T18:05:18\",\n          \"result_subdirectory\": \"images\",\n          \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n          \"site\": 1,\n          \"channel\": 1,\n          \"z_index\": 1,\n          \"timepoint\": 1,\n          \"well\": 1,\n          \"extension\": \".graph.roi.zip\"\n        },\n        \"virtual_path\": null,\n        \"full_virtual_path\": null,\n        \"source_path\": null,\n        \"relative_path\": \"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"full_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip\",\n        \"file_format\": \"ROI\",\n        \"preview\": null\n      }\n    ]\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":1,"returned_count":1,"offset":0,"limit":50,"truncated_count":0,"records":[{"kind":"result","key":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","metadata":{"filename":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","type":"ROI","size":"16.8 KB","modified":"2026-08-04T18:05:18","result_subdirectory":"images","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","site":1,"channel":1,"z_index":1,"timepoint":1,"well":1,"extension":".graph.roi.zip"},"virtual_path":null,"full_virtual_path":null,"source_path":null,"relative_path":"images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","full_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip","file_format":"ROI","preview":null}]}}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_142","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"swc","include_previews":false,"limit":50},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_142","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_ui_query_selected_plate_files","arguments":{"target":"output","kind":"all","path_contains":"swc","include_previews":false,"limit":50},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"errors\": [],\n  \"warnings\": [],\n  \"selected_plate\": {\n    \"plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"name\": \"plate\",\n    \"plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate\",\n    \"cppipe_path\": null,\n    \"selected\": true,\n    \"initialized\": true,\n    \"compiled\": true,\n    \"init_pending\": false,\n    \"compile_pending\": false,\n    \"execution_active\": false,\n    \"status_prefix\": \"✅ Complete\",\n    \"orchestrator_state\": \"completed\",\n    \"execution_id\": null,\n    \"terminal_status\": \"complete\",\n    \"runtime_state\": null,\n    \"runtime_percent\": null,\n    \"queue_position\": null,\n    \"output_plate_scope_id\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"output_plate_root\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"source_plate_scope_id\": null,\n    \"source_plate_root\": null,\n    \"debug_phase\": null,\n    \"debug_session_id\": null,\n    \"scope_accent_color\": \"#008039\"\n  },\n  \"target\": \"output\",\n  \"query\": {\n    \"schema_version\": \"openhcs.agent.v1\",\n    \"errors\": [],\n    \"warnings\": [],\n    \"plate_path\": \"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs\",\n    \"requested_microscope_type\": \"auto\",\n    \"detected_microscope_type\": \"openhcsdata\",\n    \"handler_class\": \"OpenHCSMicroscopeHandler\",\n    \"parser_class\": \"SourceSchemaFilenameParser\",\n    \"total_count\": 0,\n    \"returned_count\": 0,\n    \"offset\": 0,\n    \"limit\": 50,\n    \"truncated_count\": 0,\n    \"records\": []\n  }\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"selected_plate":{"plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","name":"plate","plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/plate","cppipe_path":null,"selected":true,"initialized":true,"compiled":true,"init_pending":false,"compile_pending":false,"execution_active":false,"status_prefix":"✅ Complete","orchestrator_state":"completed","execution_id":null,"terminal_status":"complete","runtime_state":null,"runtime_percent":null,"queue_position":null,"output_plate_scope_id":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","output_plate_root":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","source_plate_scope_id":null,"source_plate_root":null,"debug_phase":null,"debug_session_id":null,"scope_accent_color":"#008039"},"target":"output","query":{"schema_version":"openhcs.agent.v1","errors":[],"warnings":[],"plate_path":"/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs","requested_microscope_type":"auto","detected_microscope_type":"openhcsdata","handler_class":"OpenHCSMicroscopeHandler","parser_class":"SourceSchemaFilenameParser","total_count":0,"returned_count":0,"offset":0,"limit":50,"truncated_count":0,"records":[]}}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_143","type":"agent_message","text":"One artifact check found a gap: the spatial graph ROI is persistent, but the output index has no SWC file. I’m diagnosing that through the registered OpenHCS function catalog and will repair the workflow if a graph-to-SWC materializer is available."}}
{"type":"item.started","item":{"id":"item_144","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"SWC","limit":20,"compact_signatures":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_144","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"SWC","limit":20,"compact_signatures":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    }\n  ],\n  \"total\": 1,\n  \"limit\": 20,\n  \"query\": \"SWC\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]}],"total":1,"limit":20,"query":"SWC","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_145","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"spatial graph export morphology","limit":20,"compact_signatures":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_145","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"spatial graph export morphology","limit":20,"compact_signatures":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.mask_objects\",\n      \"function_id\": \"openhcs:cellprofiler_mask_objects\",\n      \"name\": \"mask_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"mask_objects(overlap_handling=<MaskObjectsOverlapHandling.MASK: 'keep_overlapping_region'>, overlap_fraction=0.5, numbering=<MaskObjectsNumberingChoice.RENUMBER: 'renumber'>, invert_mask=False, relationship_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue, openhcs.core.runtime_relationships.DirectedObjectRelationshipPayload]\",\n      \"summary\": \"Mask object labels while preserving OpenHCS object-label domain semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method=<SeedingMethod.BLOB_DETECTION: 'blob'>, return_trace_visualizations=False, trace_visualization_mode=<VisualizationMode.TRACE_ONLY: 'trace'>, chain_level=1.05, node_r=None, total_node=None, line_length_min=32, num_seeds=100, min_sigma=1.0, max_sigma=2.0, threshold=0.02, normalize_image=False, percentile=99.9, *, enabled=True) -> Tuple[numpy.ndarray, Dict[str, Any], List[numpy.ndarray]]\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.export_to_database.export_to_database\",\n      \"function_id\": \"openhcs:cellprofiler_export_to_database\",\n      \"name\": \"export_to_database\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.export_to_database\",\n      \"library\": \"openhcs\",\n      \"signature\": \"export_to_database(*, sqlite_file='DefaultDB.db', experiment_name='MyExpt', add_table_prefix=False, table_prefix='', object_table_mode=<CellProfilerObjectTableMode.PER_OBJECT: 'per_object'>, selected_objects=None, wants_properties_file=True, wants_relationship_tables=False, include_all_images=True, image_channels=(), location_object=None, calculate_per_image_mean=False, calculate_per_image_median=False, calculate_per_image_standard_deviation=False, maximum_column_name_length=64, image_url_prepend='', write_image_thumbnails=False, thumbnail_image_names=(), auto_scale_thumbnail_intensities=True, plate_type=None, plate_metadata='Plate', well_metadata='Well', wants_group_fields=False, group_fields=(), phenotype_class_table='', access_images_via_url=False, classification_type='object', enabled=True) -> dict[str, bytes | str]\",\n      \"summary\": \"Render exact contract-selected plate artifacts as SQLite and CPA files.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.spreadsheet_export.export_to_spreadsheet\",\n      \"function_id\": \"openhcs:cellprofiler_export_to_spreadsheet\",\n      \"name\": \"export_to_spreadsheet\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.spreadsheet_export\",\n      \"library\": \"openhcs\",\n      \"signature\": \"export_to_spreadsheet(*, delimiter=<SpreadsheetDelimiter.COMMA: ','>, add_image_metadata=False, add_image_file_names=False, select_measurements=False, selected_columns=(), calculate_aggregate_means=False, calculate_aggregate_medians=False, calculate_aggregate_standard_deviations=False, output_directory='', export_all_measurement_types=True, file_selections=(), nan_representation=<SpreadsheetNanRepresentation.NAN: 'nan'>, add_filename_prefix=True, filename_prefix='MyExpt_', enabled=True) -> dict[str, str | bytes]\",\n      \"summary\": \"Render one plate's exact contract-selected spreadsheet file bundle.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.spatial_bin_2d\",\n      \"function_id\": \"openhcs:processors_numpy_processor_spatial_bin_2d\",\n      \"name\": \"spatial_bin_2d\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"spatial_bin_2d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply 2D spatial binning to each slice in the stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.processors.numpy_processor.spatial_bin_3d\",\n      \"function_id\": \"openhcs:processors_numpy_processor_spatial_bin_3d\",\n      \"name\": \"spatial_bin_3d\",\n      \"module\": \"openhcs.processing.backends.processors.numpy_processor\",\n      \"library\": \"openhcs\",\n      \"signature\": \"spatial_bin_3d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply 3D spatial binning to the entire stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"processors\",\n        \"numpy_processor\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.closing\",\n      \"function_id\": \"openhcs:cellprofiler_closing\",\n      \"name\": \"closing\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale closing to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.combineobjects\",\n      \"function_id\": \"openhcs:cellprofiler_combineobjects\",\n      \"name\": \"combineobjects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Combine objects from two label images using CellProfiler policies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_image\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_image\",\n      \"name\": \"dilate_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale dilation to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_objects\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_objects\",\n      \"name\": \"dilate_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_objects(structuring_element_shape=<StructuringElement.DISK: 'disk'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Dilate labels with CellProfiler's higher-label-overwrites policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.dilate_objects_3d\",\n      \"function_id\": \"openhcs:cellprofiler_dilate_objects_3d\",\n      \"name\": \"dilate_objects_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"dilate_objects_3d(structuring_element_shape=<StructuringElement.BALL: 'ball'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Dilate 3D labels with CellProfiler's higher-label-overwrites policy.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_image\",\n      \"function_id\": \"openhcs:cellprofiler_erode_image\",\n      \"name\": \"erode_image\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply grayscale erosion to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.erode_objects\",\n      \"function_id\": \"openhcs:cellprofiler_erode_objects\",\n      \"name\": \"erode_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"erode_objects(structuring_element=<StructuringElement.DISK: 'disk'>, size=1, preserve_midpoints=True, relabel_objects=False, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue, openhcs.core.runtime_relationships.DirectedObjectRelationshipPayload]\",\n      \"summary\": \"Erode CellProfiler object labels while preserving optional midpoints.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects\",\n      \"function_id\": \"openhcs:cellprofiler_expand_or_shrink_objects\",\n      \"name\": \"expand_or_shrink_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]\",\n      \"summary\": \"Expand or shrink labeled objects using CellProfiler-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.fill_objects\",\n      \"function_id\": \"openhcs:cellprofiler_fill_objects\",\n      \"name\": \"fill_objects\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"fill_objects(mode=<FillMode.HOLES: 'holes'>, diameter=64.0, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> openhcs.core.runtime_object_labels.ObjectLabelValue\",\n      \"summary\": \"Fill object holes or replace objects with convex hull labels.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morph\",\n      \"function_id\": \"openhcs:cellprofiler_morph\",\n      \"name\": \"morph\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morph(operation=<MorphOperation.THIN: 'thin'>, repeat_mode=<RepeatMode.ONCE: 'once'>, custom_repeats=2, rescale_values=True, line_length=3, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Decorated CellProfiler Morph entrypoint backed by registered strategies.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d\",\n      \"function_id\": \"openhcs:cellprofiler_morphological_skeleton_3d\",\n      \"name\": \"morphological_skeleton_3d\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute the 3-D morphological skeleton of a binary volume.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton\",\n      \"function_id\": \"openhcs:cellprofiler_morphologicalskeleton\",\n      \"name\": \"morphologicalskeleton\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"morphologicalskeleton(*, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Compute CellProfiler MorphologicalSkeleton on one image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.morphology.opening\",\n      \"function_id\": \"openhcs:cellprofiler_opening\",\n      \"name\": \"opening\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.morphology\",\n      \"library\": \"openhcs\",\n      \"signature\": \"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Apply CellProfiler-compatible grayscale opening to an image plane.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 45,\n  \"limit\": 20,\n  \"query\": \"spatial graph export morphology\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.mask_objects","function_id":"openhcs:cellprofiler_mask_objects","name":"mask_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"mask_objects(overlap_handling=<MaskObjectsOverlapHandling.MASK: 'keep_overlapping_region'>, overlap_fraction=0.5, numbering=<MaskObjectsNumberingChoice.RENUMBER: 'renumber'>, invert_mask=False, relationship_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue, openhcs.core.runtime_relationships.DirectedObjectRelationshipPayload]","summary":"Mask object labels while preserving OpenHCS object-label domain semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method=<SeedingMethod.BLOB_DETECTION: 'blob'>, return_trace_visualizations=False, trace_visualization_mode=<VisualizationMode.TRACE_ONLY: 'trace'>, chain_level=1.05, node_r=None, total_node=None, line_length_min=32, num_seeds=100, min_sigma=1.0, max_sigma=2.0, threshold=0.02, normalize_image=False, percentile=99.9, *, enabled=True) -> Tuple[numpy.ndarray, Dict[str, Any], List[numpy.ndarray]]","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]},{"import_path":"openhcs.processing.backends.cellprofiler.export_to_database.export_to_database","function_id":"openhcs:cellprofiler_export_to_database","name":"export_to_database","module":"openhcs.processing.backends.cellprofiler.export_to_database","library":"openhcs","signature":"export_to_database(*, sqlite_file='DefaultDB.db', experiment_name='MyExpt', add_table_prefix=False, table_prefix='', object_table_mode=<CellProfilerObjectTableMode.PER_OBJECT: 'per_object'>, selected_objects=None, wants_properties_file=True, wants_relationship_tables=False, include_all_images=True, image_channels=(), location_object=None, calculate_per_image_mean=False, calculate_per_image_median=False, calculate_per_image_standard_deviation=False, maximum_column_name_length=64, image_url_prepend='', write_image_thumbnails=False, thumbnail_image_names=(), auto_scale_thumbnail_intensities=True, plate_type=None, plate_metadata='Plate', well_metadata='Well', wants_group_fields=False, group_fields=(), phenotype_class_table='', access_images_via_url=False, classification_type='object', enabled=True) -> dict[str, bytes | str]","summary":"Render exact contract-selected plate artifacts as SQLite and CPA files.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.spreadsheet_export.export_to_spreadsheet","function_id":"openhcs:cellprofiler_export_to_spreadsheet","name":"export_to_spreadsheet","module":"openhcs.processing.backends.cellprofiler.spreadsheet_export","library":"openhcs","signature":"export_to_spreadsheet(*, delimiter=<SpreadsheetDelimiter.COMMA: ','>, add_image_metadata=False, add_image_file_names=False, select_measurements=False, selected_columns=(), calculate_aggregate_means=False, calculate_aggregate_medians=False, calculate_aggregate_standard_deviations=False, output_directory='', export_all_measurement_types=True, file_selections=(), nan_representation=<SpreadsheetNanRepresentation.NAN: 'nan'>, add_filename_prefix=True, filename_prefix='MyExpt_', enabled=True) -> dict[str, str | bytes]","summary":"Render one plate's exact contract-selected spreadsheet file bundle.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.spatial_bin_2d","function_id":"openhcs:processors_numpy_processor_spatial_bin_2d","name":"spatial_bin_2d","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"spatial_bin_2d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray","summary":"Apply 2D spatial binning to each slice in the stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.processors.numpy_processor.spatial_bin_3d","function_id":"openhcs:processors_numpy_processor_spatial_bin_3d","name":"spatial_bin_3d","module":"openhcs.processing.backends.processors.numpy_processor","library":"openhcs","signature":"spatial_bin_3d(bin_size=2, method=<SpatialBinMethod.MEAN: 'mean'>, *, enabled=True) -> numpy.ndarray","summary":"Apply 3D spatial binning to the entire stack.","backend_tags":["openhcs","processors","numpy_processor"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.closing","function_id":"openhcs:cellprofiler_closing","name":"closing","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"closing(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale closing to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.combineobjects","function_id":"openhcs:cellprofiler_combineobjects","name":"combineobjects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"combineobjects(method=<CombineObjectsMethod.MERGE: 'merge'>, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Combine objects from two label images using CellProfiler policies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_image","function_id":"openhcs:cellprofiler_dilate_image","name":"dilate_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale dilation to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_objects","function_id":"openhcs:cellprofiler_dilate_objects","name":"dilate_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_objects(structuring_element_shape=<StructuringElement.DISK: 'disk'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Dilate labels with CellProfiler's higher-label-overwrites policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.dilate_objects_3d","function_id":"openhcs:cellprofiler_dilate_objects_3d","name":"dilate_objects_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"dilate_objects_3d(structuring_element_shape=<StructuringElement.BALL: 'ball'>, structuring_element_size=1, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Dilate 3D labels with CellProfiler's higher-label-overwrites policy.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_image","function_id":"openhcs:cellprofiler_erode_image","name":"erode_image","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_image(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, *, enabled=True) -> numpy.ndarray","summary":"Apply grayscale erosion to an image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.erode_objects","function_id":"openhcs:cellprofiler_erode_objects","name":"erode_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"erode_objects(structuring_element=<StructuringElement.DISK: 'disk'>, size=1, preserve_midpoints=True, relabel_objects=False, *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue, openhcs.core.runtime_relationships.DirectedObjectRelationshipPayload]","summary":"Erode CellProfiler object labels while preserving optional midpoints.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.expand_or_shrink_objects","function_id":"openhcs:cellprofiler_expand_or_shrink_objects","name":"expand_or_shrink_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"expand_or_shrink_objects(mode=<ExpandShrinkMode.EXPAND_DEFINED_PIXELS: 'expand_defined_pixels'>, iterations=1, fill_holes=True, *, enabled=True) -> tuple[object, openhcs.core.measurement_row_materialization.MeasurementSparseColumnarRows, openhcs.core.runtime_object_labels.ObjectLabelValue]","summary":"Expand or shrink labeled objects using CellProfiler-compatible semantics.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.fill_objects","function_id":"openhcs:cellprofiler_fill_objects","name":"fill_objects","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"fill_objects(mode=<FillMode.HOLES: 'holes'>, diameter=64.0, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> openhcs.core.runtime_object_labels.ObjectLabelValue","summary":"Fill object holes or replace objects with convex hull labels.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morph","function_id":"openhcs:cellprofiler_morph","name":"morph","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morph(operation=<MorphOperation.THIN: 'thin'>, repeat_mode=<RepeatMode.ONCE: 'once'>, custom_repeats=2, rescale_values=True, line_length=3, morphology_backend_provider=DefaultCellProfilerBackendProviderSelection(), *, enabled=True) -> numpy.ndarray","summary":"Decorated CellProfiler Morph entrypoint backed by registered strategies.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphological_skeleton_3d","function_id":"openhcs:cellprofiler_morphological_skeleton_3d","name":"morphological_skeleton_3d","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphological_skeleton_3d(*, enabled=True) -> numpy.ndarray","summary":"Compute the 3-D morphological skeleton of a binary volume.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.morphologicalskeleton","function_id":"openhcs:cellprofiler_morphologicalskeleton","name":"morphologicalskeleton","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"morphologicalskeleton(*, enabled=True) -> numpy.ndarray","summary":"Compute CellProfiler MorphologicalSkeleton on one image plane.","backend_tags":["openhcs","cellprofiler"]},{"import_path":"openhcs.processing.backends.cellprofiler.morphology.opening","function_id":"openhcs:cellprofiler_opening","name":"opening","module":"openhcs.processing.backends.cellprofiler.morphology","library":"openhcs","signature":"opening(structuring_element=<StructuringElement.DISK: 'disk'>, size=3, morphology_backend_provider=<CellProfilerBackendProvider.NATIVE: 'native'>, *, enabled=True) -> numpy.ndarray","summary":"Apply CellProfiler-compatible grayscale opening to an image plane.","backend_tags":["openhcs","cellprofiler"]}],"total":45,"limit":20,"query":"spatial graph export morphology","library":null}},"error":null,"status":"completed"}}
{"type":"item.started","item":{"id":"item_146","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neurite graph","limit":20,"compact_signatures":false},"result":null,"error":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_146","type":"mcp_tool_call","server":"openhcs","tool":"openhcs_search_functions","arguments":{"query":"neurite graph","limit":20,"compact_signatures":false},"result":{"content":[{"type":"text","text":"{\n  \"schema_version\": \"openhcs.agent.v1\",\n  \"items\": [\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress\",\n      \"name\": \"count_neuronal_cell_bodies_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]\",\n      \"summary\": \"Count nuclear-supported neuronal somas without assigning axons.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress\",\n      \"function_id\": \"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress\",\n      \"name\": \"neurite_outgrowth_metaxpress\",\n      \"module\": \"openhcs.processing.backends.analysis.neurite_outgrowth\",\n      \"library\": \"openhcs\",\n      \"signature\": \"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]\",\n      \"summary\": \"Measure cell bodies and attached neurites in one 2D channel stack.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"neurite_outgrowth\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva\",\n      \"function_id\": \"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva\",\n      \"name\": \"trace_neurites_rrs_alva\",\n      \"module\": \"openhcs.processing.backends.analysis.hmm_axon\",\n      \"library\": \"openhcs\",\n      \"signature\": \"trace_neurites_rrs_alva(seeding_method=<SeedingMethod.BLOB_DETECTION: 'blob'>, return_trace_visualizations=False, trace_visualization_mode=<VisualizationMode.TRACE_ONLY: 'trace'>, chain_level=1.05, node_r=None, total_node=None, line_length_min=32, num_seeds=100, min_sigma=1.0, max_sigma=2.0, threshold=0.02, normalize_image=False, percentile=99.9, *, enabled=True) -> Tuple[numpy.ndarray, Dict[str, Any], List[numpy.ndarray]]\",\n      \"summary\": \"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"analysis\",\n        \"hmm_axon\"\n      ]\n    },\n    {\n      \"import_path\": \"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features\",\n      \"function_id\": \"openhcs:cellprofiler_enhance_or_suppress_features\",\n      \"name\": \"enhance_or_suppress_features\",\n      \"module\": \"openhcs.processing.backends.cellprofiler.feature_enhancement\",\n      \"library\": \"openhcs\",\n      \"signature\": \"enhance_or_suppress_features(method=<OperationMethod.ENHANCE: 'Enhance'>, enhance_method=<EnhanceMethod.SPECKLES: 'Speckles'>, radius=10.0, speckle_accuracy=<SpeckleAccuracy.FAST: 'Fast'>, neurite_method=<NeuriteMethod.GRADIENT: 'Line structures'>, neurite_rescale=False, dark_hole_radius_min=1, dark_hole_radius_max=10, smoothing_value=2.0, dic_angle=0.0, dic_decay=0.95, *, enabled=True) -> numpy.ndarray\",\n      \"summary\": \"Enhance or suppress image features using independent CP-compatible semantics.\",\n      \"backend_tags\": [\n        \"openhcs\",\n        \"cellprofiler\"\n      ]\n    }\n  ],\n  \"total\": 4,\n  \"limit\": 20,\n  \"query\": \"neurite graph\",\n  \"library\": null\n}"}],"structured_content":{"schema_version":"openhcs.agent.v1","items":[{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.count_neuronal_cell_bodies_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_count_neuronal_cell_bodies_metaxpress","name":"count_neuronal_cell_bodies_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"count_neuronal_cell_bodies_metaxpress(illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray]","summary":"Count nuclear-supported neuronal somas without assigning axons.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.neurite_outgrowth.neurite_outgrowth_metaxpress","function_id":"openhcs:analysis_neurite_outgrowth_neurite_outgrowth_metaxpress","name":"neurite_outgrowth_metaxpress","module":"openhcs.processing.backends.analysis.neurite_outgrowth","library":"openhcs","signature":"neurite_outgrowth_metaxpress(neurite_channel_index=0, illumination=<NeuriteIllumination.FLUORESCENCE: 'fluorescence'>, cell_body=MetaXpressCellBodySettings(approximate_max_width=30.0, minimum_area=50.0, intensity_above_local_background=100.0, channel_index=None), outgrowth=MetaXpressOutgrowthSettings(maximum_width=4.0, intensity_above_local_background=50.0, minimum_cell_growth_to_log_as_significant=10.0), use_nuclear_stain=False, nuclear_stain=MetaXpressNuclearSettings(channel_index=1, approx_min_width=5.0, approx_max_width=30.0, intensity_above_local_background=100.0), *, enabled=True) -> tuple[numpy.ndarray, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, openhcs.core.measurement_row_materialization.DataclassMeasurementColumnarRows, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, openhcs.core.runtime_spatial_graph.SpatialGraph]","summary":"Measure cell bodies and attached neurites in one 2D channel stack.","backend_tags":["openhcs","analysis","neurite_outgrowth"]},{"import_path":"openhcs.processing.backends.analysis.hmm_axon.trace_neurites_rrs_alva","function_id":"openhcs:analysis_hmm_axon_trace_neurites_rrs_alva","name":"trace_neurites_rrs_alva","module":"openhcs.processing.backends.analysis.hmm_axon","library":"openhcs","signature":"trace_neurites_rrs_alva(seeding_method=<SeedingMethod.BLOB_DETECTION: 'blob'>, return_trace_visualizations=False, trace_visualization_mode=<VisualizationMode.TRACE_ONLY: 'trace'>, chain_level=1.05, node_r=None, total_node=None, line_length_min=32, num_seeds=100, min_sigma=1.0, max_sigma=2.0, threshold=0.02, normalize_image=False, percentile=99.9, *, enabled=True) -> Tuple[numpy.ndarray, Dict[str, Any], List[numpy.ndarray]]","summary":"Trace neurites using the alvahmm RRS (Random-Reaction-Seed) algorithm.","backend_tags":["openhcs","analysis","hmm_axon"]},{"import_path":"openhcs.processing.backends.cellprofiler.feature_enhancement.enhance_or_suppress_features","function_id":"openhcs:cellprofiler_enhance_or_suppress_features","name":"enhance_or_suppress_features","module":"openhcs.processing.backends.cellprofiler.feature_enhancement","library":"openhcs","signature":"enhance_or_suppress_features(method=<OperationMethod.ENHANCE: 'Enhance'>, enhance_method=<EnhanceMethod.SPECKLES: 'Speckles'>, radius=10.0, speckle_accuracy=<SpeckleAccuracy.FAST: 'Fast'>, neurite_method=<NeuriteMethod.GRADIENT: 'Line structures'>, neurite_rescale=False, dark_hole_radius_min=1, dark_hole_radius_max=10, smoothing_value=2.0, dic_angle=0.0, dic_decay=0.95, *, enabled=True) -> numpy.ndarray","summary":"Enhance or suppress image features using independent CP-compatible semantics.","backend_tags":["openhcs","cellprofiler"]}],"total":4,"limit":20,"query":"neurite graph","library":null}},"error":null,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_147","type":"agent_message","text":"Completed successfully in the connected OpenHCS desktop.\n\n- Source Bindings preserve `1_w1.tif` and `1_w2.tif` provenance while projecting both to well/image 1 as biological channels 1 and 2.\n- Pipeline validated, compiled, and completed through the visible ZMQ execution server.\n- Editable generated Python remains open in the Pipeline Editor and Plate Manager code-mode window.\n- Detected 9 neurons and 10 nuclei.\n- Total assigned neurite outgrowth: 1,982 px; 47 processes; 8 branches.\n- Mean outgrowth per neuron: 220.22 px; mean straightness: 0.901.\n- Graph layer contains 25 paths with inspectable `edge_id`, `neuron_label`, branch distance, soma distance, branch type, and tortuosity.\n- Napari remains active on port `5613`, showing only enhanced W1 context, unified neuron ROIs, and spatial-graph paths. The graph layer and feature row 0 are selected; redundant masks are hidden.\n- Viewer validation passed: all nine payloads nonzero, with no missing or duplicate coordinates.\n\nKey outputs:\n\n- [Final Napari snapshot](/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/20260804T220728118912Z_napari_5613_OpenHCS_Napari_Visualization.png)\n- [Per-neuron measurements](/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_cells_step1_details.csv)\n- [Summary measurements](/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_site-1_z_index-1_timepoint-1_neurite_outgrowth_summary_step1_details.csv)\n- [Unified neuron ROIs](/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurons_step1_rois.roi.zip)\n- [Spatial-graph paths](/home/ts/code/projects/openhcs/mcp_outputs/website-agent-demo/candidate-20260804-13/outputs/plate_openhcs/images_results/1_s001_w1_z001_t001_neurite_morphology_step1.graph.roi.zip)\n\nThe registered spatial-graph output was materialized and exposed in Napari, but the OpenHCS output index did not expose a separate `.swc` record despite the function’s SWC-capable artifact contract. No unregistered exporter or custom function was substituted."}}
{"type":"turn.completed","usage":{"input_tokens":10601390,"cached_input_tokens":10261248,"cache_write_input_tokens":0,"output_tokens":15399,"reasoning_output_tokens":4029}}
