Skip to main content
Glama

nexus_scry

Scan a WorkFlowy outline to map its structure and content for analysis or integration with AI applications.

Instructions

INITIATE a CORINTHIAN NEXUS on the ETHER: perform a COARSE SCRY of Workflowy under a root to reveal a limited TERRAIN (a new geography named by your NEXUS TAG). Choose max_depth and child_limit carefully—keep them minimal. Optionally set max_nodes to guard against accidental 1M-node SCRYs. Later, you will IGNITE the ETHER more deeply on selected SHARDS.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nexus_tagYes
workflowy_root_idYes
max_depthYes
child_limitYes
reset_if_existsNo
max_nodesNo

Implementation Reference

  • MCP tool registration for 'nexus_scry': decorator and thin wrapper handler that delegates to WorkFlowyClient.nexus_scry()
        name="nexus_scry",
        description=(
            "INITIATE a CORINTHIAN NEXUS on the ETHER: perform a COARSE SCRY of Workflowy "
            "under a root to reveal a limited TERRAIN (a new geography named by your "
            "NEXUS TAG). Choose max_depth and child_limit carefully—keep them minimal. "
            "Optionally set max_nodes to guard against accidental 1M-node SCRYs. "
            "Later, you will IGNITE the ETHER more deeply on selected SHARDS."
        ),
    )
    async def nexus_scry(
        nexus_tag: str,
        workflowy_root_id: str,
        max_depth: int,
        child_limit: int,
        reset_if_exists: bool = False,
        max_nodes: int | None = None,
    ) -> dict:
        """Tag-scoped SCRY the ETHER under a root to create a coarse TERRAIN bound to a NEXUS TAG.
    
        This reveals a limited TERRAIN—a new geography named by your NEXUS TAG.
        Keep the SCRY shallow: choose max_depth and child_limit carefully. Use
        max_nodes (when non-None) as a hard upper bound on SCRY size; if the tree
        would exceed this many nodes, the SCRY aborts with a clear error instead of
        exporting a massive JSON bundle.
    
        Unlike ``nexus_glimpse(mode="full")``, which may legitimately produce
        T0 = S0 = T1 in one step (because Dan’s UI expansion already encodes the
        GEM/SHIMMERING decision), this tag-scoped SCRY is explicitly **T0-only**:
        it writes only ``coarse_terrain.json``. S0 and T1 are introduced later via
        ``nexus_ignite_shards`` and ``nexus_anchor_gems``.
        """
        client = get_client()
    
        if _rate_limiter:
            await _rate_limiter.acquire()
    
        try:
            result = await client.nexus_scry(
                nexus_tag=nexus_tag,
                workflowy_root_id=workflowy_root_id,
                max_depth=max_depth,
                child_limit=child_limit,
                reset_if_exists=reset_if_exists,
                max_nodes=max_nodes,
            )
            if _rate_limiter:
                _rate_limiter.on_success()
            return result
        except Exception as e:  # noqa: BLE001
            if _rate_limiter and hasattr(e, "__class__") and e.__class__.__name__ == "RateLimitError":
                _rate_limiter.on_rate_limit(getattr(e, "retry_after", None))
            raise
  • Core implementation of nexus_scry: creates a timestamped nexus run directory, performs a controlled bulk export to coarse_terrain.json using bulk_export_to_file_impl with depth/child limits, and generates a nexus_manifest.json.
    async def nexus_scry(
        self,
        nexus_tag: str,
        workflowy_root_id: str,
        max_depth: int,
        child_limit: int,
        reset_if_exists: bool = False,
        max_nodes: int | None = None,
    ) -> dict[str, Any]:
        """Tag-scoped SCRY → coarse_terrain.json."""
        import shutil
    
        base_dir = Path(
            r"E:\__daniel347x\__Obsidian\__Inking into Mind\--TypingMind\Projects - All\Projects - Individual\TODO\temp\nexus_runs"
        )
        base_dir.mkdir(parents=True, exist_ok=True)
    
        if reset_if_exists:
            suffix = f"__{nexus_tag}"
            for child in base_dir.iterdir():
                if not child.is_dir():
                    continue
                name = child.name
                if name == nexus_tag or name.endswith(suffix):
                    shutil.rmtree(child, ignore_errors=True)
    
        timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
        run_dir = base_dir / f"{timestamp}__{nexus_tag}"
        run_dir.mkdir(parents=True, exist_ok=False)
        coarse_path = run_dir / "coarse_terrain.json"
    
        result = await bulk_export_to_file_impl(
            self,
            node_id=workflowy_root_id,
            output_file=str(coarse_path),
            include_metadata=True,
            use_efficient_traversal=False,
            max_depth=max_depth,
            child_count_limit=child_limit,
            max_nodes=max_nodes,
        )
    
        # Manifest
        manifest_path = run_dir / "nexus_manifest.json"
        try:
            manifest = {
                "nexus_tag": nexus_tag,
                "workflowy_root_id": workflowy_root_id,
                "max_depth": max_depth,
                "child_limit": child_limit,
                "max_nodes": max_nodes,
                "stage": "coarse_terrain",
                "timestamp": datetime.now().isoformat(timespec="seconds"),
            }
            with open(manifest_path, "w", encoding="utf-8") as mf:
                json.dump(manifest, mf, indent=2)
        except Exception:
            pass
    
        return {
            "success": True,
            "nexus_tag": nexus_tag,
            "coarse_terrain": str(coarse_path),
            "node_count": result.get("node_count"),
            "depth": result.get("depth"),
        }

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