Skip to main content
Glama

nexus_weave_enchanted_async

Start an asynchronous job to weave WorkFlowy data back into your outline structure, returning a job ID for tracking progress and managing the process.

Instructions

Start an async NEXUS ENCHANTED WEAVE job (WEAVE T2 back into Workflowy ETHER) and return a job_id for status polling and cancellation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nexus_tagYes
dry_runNo

Implementation Reference

  • MCP tool handler: Launches detached weave_worker.py process for asynchronous enchanted terrain weaving into Workflowy. Includes validation to prevent misuse with JSON paths.
        name="nexus_weave_enchanted_async",
        description=(
            "Start an async NEXUS ENCHANTED WEAVE job (WEAVE T2 back into Workflowy ETHER) "
            "and return a job_id for status polling and cancellation."
        ),
    )
    async def nexus_weave_enchanted_async(
        nexus_tag: str,
        dry_run: bool = False,
    ) -> dict:
        """Start ENCHANTED TERRAIN weave as a detached background process.
    
        Launches weave_worker.py as a separate process that survives MCP restart.
        Progress tracked via .weave.pid and .weave_journal.json files.
        
        Use mcp_job_status() to monitor progress (scans directory for active PIDs).
    
        NOTE: nexus_tag must be a NEXUS TAG (e.g. "my-arc-tag"), **not** a JSON file path.
        If you have a JSON file that describes nodes you want to create, use
        workflowy_etch or workflowy_etch_async instead.
        """
        client = get_client()
    
        # Detect misuse: nexus_tag looks like a JSON file path
        lowered = (nexus_tag or "").lower()
        if lowered.endswith(".json") or "/" in nexus_tag or "\\" in nexus_tag:
            return {
                "success": False,
                "error": (
                    "nexus_weave_enchanted_async expects a NEXUS TAG (e.g. 'my-arc-tag'), not a JSON file path.\n\n"
                    "If you have a JSON file representing nodes to create, use ETCH instead:\n\n"
                    "  workflowy_etch(\n"
                    "    parent_id='...',\n"
                    "    nodes_file='E:...\\your_nodes.json'\n"
                    "  )\n\n"
                    "or the async variant:\n\n"
                    "  workflowy_etch_async(\n"
                    "    parent_id='...',\n"
                    "    nodes_file='E:...\\your_nodes.json'\n"
                    "  ).\n"
                ),
            }
    
        # Use detached launcher (survives MCP restart)
        return client.nexus_weave_enchanted_detached(nexus_tag=nexus_tag, dry_run=dry_run)
  • Client method called by handler: Launches the detached weave process using subprocess.Popen on weave_worker.py
    def nexus_weave_enchanted_detached(self, nexus_tag: str, dry_run: bool = False) -> dict[str, Any]:
        """Launch ENCHANTED WEAVE as detached process."""
        return self._launch_detached_weave(mode='enchanted', nexus_tag=nexus_tag, dry_run=dry_run)
  • The detached worker script entry point which calls the synchronous nexus_weave_enchanted (bulk_import_from_file) to perform the actual weaving.
    log_worker(f"Calling nexus_weave_enchanted for tag={nexus_tag}...")
    result = await client.nexus_weave_enchanted(nexus_tag=nexus_tag, dry_run=dry_run)
  • MCP tool registration via @mcp.tool decorator defining the tool name, description, and parameters.
        name="nexus_weave_enchanted_async",
        description=(
            "Start an async NEXUS ENCHANTED WEAVE job (WEAVE T2 back into Workflowy ETHER) "
            "and return a job_id for status polling and cancellation."
        ),
    )
    async def nexus_weave_enchanted_async(
        nexus_tag: str,
        dry_run: bool = False,
    ) -> dict:
        """Start ENCHANTED TERRAIN weave as a detached background process.
    
        Launches weave_worker.py as a separate process that survives MCP restart.
        Progress tracked via .weave.pid and .weave_journal.json files.
        
        Use mcp_job_status() to monitor progress (scans directory for active PIDs).
    
        NOTE: nexus_tag must be a NEXUS TAG (e.g. "my-arc-tag"), **not** a JSON file path.
        If you have a JSON file that describes nodes you want to create, use
        workflowy_etch or workflowy_etch_async instead.
        """
        client = get_client()
    
        # Detect misuse: nexus_tag looks like a JSON file path
        lowered = (nexus_tag or "").lower()
        if lowered.endswith(".json") or "/" in nexus_tag or "\\" in nexus_tag:
            return {
                "success": False,
                "error": (
                    "nexus_weave_enchanted_async expects a NEXUS TAG (e.g. 'my-arc-tag'), not a JSON file path.\n\n"
                    "If you have a JSON file representing nodes to create, use ETCH instead:\n\n"
                    "  workflowy_etch(\n"
                    "    parent_id='...',\n"
                    "    nodes_file='E:...\\your_nodes.json'\n"
                    "  )\n\n"
                    "or the async variant:\n\n"
                    "  workflowy_etch_async(\n"
                    "    parent_id='...',\n"
                    "    nodes_file='E:...\\your_nodes.json'\n"
                    "  ).\n"
                ),
            }
    
        # Use detached launcher (survives MCP restart)
        return client.nexus_weave_enchanted_detached(nexus_tag=nexus_tag, dry_run=dry_run)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daniel347x/workflowy-mcp-fixed'

If you have feedback or need assistance with the MCP directory API, please join our Discord server