master
Colby Knox Update 13 file(s) 6a13429 4d ago
{
  "contract": "fusion-bridge verb catalog",
  "frozen": "2026-11-08",
  "note": "The Python bridge and the Rust bridge must both serve this catalog byte-for-byte in meaning: same names, same args, same result shapes, same timeouts. Regenerate ONLY from describe.py and diff in CI.",
  "source": "describe.py",
  "verbs": [
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_account",
      "output": {
        "account": "{email, name, userId, hub}",
        "holdsSeat": "bool",
        "license": "{authorized, trial, expiresAt, ...}",
        "running": "bool",
        "seatDialogOpen": "bool",
        "signedIn": "bool",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "WHO Fusion is signed in as on this machine, and whether this machine currently holds the Autodesk SEAT. One subscription runs ONE active Fusion at a time, so the seat moves between machines; this is the read. Returns the signed-in account (email, name, hub), Autodesk's own licence blob (authorized, trial, expiry, reauthorize time, from Application.LicenseInformation) and holdsSeat. Read-only: never starts Fusion, never signs anybody in or out.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "limit": 20
      },
      "input": {
        "limit": "optional int (default 50)"
      },
      "longRunning": true,
      "name": "fusion_action_ledger",
      "output": {
        "actions": "[{at, action, detail}]"
      },
      "statusVerb": null,
      "summary": "Read the append-only record of what the bridge did in the BACKGROUND on this machine - dialogs it answered, Untitled scratch docs it swept, Fusion auto-starts, add-in restarts. Survives bridge respawns (~/.adom/fusion-bridge/actions.jsonl). This is the audit trail for why something changed on the user screen.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "name": "TJA1050"
      },
      "input": {
        "name": "required str (document name as reported by fusion_get_app_state)"
      },
      "longRunning": false,
      "name": "fusion_activate_document",
      "output": {
        "activeDocument": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Make a named open document the ACTIVE one before driving it. EDIT and most modelling verbs act on whatever is active, so in a batch with several documents open this is how you stop a verb landing in the wrong file (page issue #47). Prefer passing expectDocument on the verb itself, which fails closed instead of merely re-targeting. An electronics design's schematic, board and 3D view are separate tabs with ONE name (type unknown): the reply says so in sameNameDocuments, and fusion_show_schematic / fusion_show_2d_board / fusion_show_3d_board {documentName} reach a specific view.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true,
        "libraryPath": "C:/libs/parts.lbr",
        "models": [
          {
            "name": "SOT-23-5"
          }
        ],
        "symbolName": "LDO"
      },
      "input": {
        "comment": "str",
        "description": "str",
        "dryRun": "bool",
        "libraryPath": ".lbr on the Fusion machine (required)",
        "models": "[{name, pcblib?}] (required)",
        "params": "{key: value}",
        "symbolName": "the component (required)"
      },
      "longRunning": false,
      "name": "fusion_add_models",
      "output": {
        "added": "[str]",
        "alreadyAttached": "[str]",
        "libref": "str",
        "models": "int (footprints on the component now)",
        "params": "int"
      },
      "statusVerb": null,
      "summary": "Attach more footprints to a component (the standard's add_models): each becomes another device of the EAGLE component (Fusion's several-packages-per-component), pins joined by pad number; a model's footprint in another .lbr (pcblib) is copied in first. A footprint already attached is skipped (alreadyAttached), so it is safe to repeat. params, comment and description go on the component. Offline, preflighted.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "gap": 0.3,
        "kind": "clearance",
        "name": "SW",
        "scope1": "InNet('SW1')"
      },
      "input": {
        "drill": "mm (via)",
        "expectDocument": "required: the board's name",
        "gap": "mm (clearance)",
        "kind": "width|clearance|via",
        "min": "mm (width)",
        "name": "required: the class is Adom_<name> for a net scope",
        "remove": "bool: the Adom_<name> class's nets back to the default class, the class zeroed",
        "scope1": "InNet('SW') | InNetClass('pwr') (nets / netClass also work)"
      },
      "longRunning": false,
      "name": "fusion_add_rule",
      "output": {
        "class": "{name, number, widthMm, drillMm, clearances, nets}",
        "command": "str",
        "joined": "[net]",
        "name": "the class",
        "released": "[net] (remove)",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "The standard's add_rule as EAGLE net classes, the board's scoped rules: kind width (min), clearance (gap, to every class and within the class) or via (drill). scope1 InNetClass('X') edits that class; InNet('A') (or nets) puts the nets in a class of their own, Adom_<name>, each joined with one pick on its wire. Read back from the board; every change undone on a mismatch. Length, matched, diffpair and polyconnect rules have no class equivalent and are refused.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "dryRun": true,
        "kicadSym": "C:/staged/AMPLH5030S-150MT.kicad_sym",
        "libraryPath": "C:/libs/parts.lbr",
        "symbolName": "AMPLH5030S-150MT"
      },
      "input": {
        "clear": "bool, default true",
        "dryRun": "bool",
        "kicadSym": ".kicad_sym on the Fusion machine carrying the baked outline (required)",
        "libraryPath": ".lbr on the Fusion machine (required)",
        "symbolName": "the component (required)"
      },
      "longRunning": false,
      "name": "fusion_add_symbol_art",
      "output": {
        "bodyRectMil": "[x1, y1, x2, y2]",
        "component": "str",
        "lines": "int",
        "points": "int",
        "polylines": "int",
        "removed": "int"
      },
      "statusVerb": null,
      "summary": "Draw a chip's outline artwork into a component's symbol (the standard's add_symbol_art), offline in a .lbr: the polylines adom-symbol baked into the KiCad symbol, the KiCad body rectangle mapped onto the EAGLE symbol's own body box, as lines on the symbol layer, so the Fusion symbol shows the same chip as KiCad and Altium. clear (default) removes earlier art first, keeping the body's edges. Preflighted before writing.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {},
      "longRunning": true,
      "name": "fusion_addin_status",
      "output": {
        "addinReady": "bool",
        "busy": "bool",
        "port": "int",
        "version": "str"
      },
      "statusVerb": null,
      "summary": "Is the AdomBridge add-in loaded and answering inside Fusion? Reports addinReady, port and version, plus busy when a long command holds the main thread. If Fusion is running but this says not ready, the add-in was installed while Fusion was open - Fusion loads add-ins only at launch - so call fusion_restart_for_addin (ask the user first when one is present).",
      "timeoutSeconds": 15
    },
    {
      "example": {},
      "input": {
        "errorsOnly": "bool: only errors, warnings and alert toasts",
        "maxBytes": "int, default 200000",
        "sinceOffset": "int: byte offset into Fusion's log (the standard's log_tail): every line since it",
        "sinceSec": "optional float (default 300)"
      },
      "longRunning": false,
      "name": "fusion_alerts",
      "output": {
        "alerts": "[{at,text}]",
        "entries": "[{level, text}] (with sinceOffset)",
        "lines": "[str] (with sinceOffset)",
        "logFile": "str",
        "next": "int",
        "nextOffset": "int: pass as sinceOffset next time",
        "rotated": "bool: a new log was started, so the read began at 0",
        "truncated": "bool"
      },
      "statusVerb": null,
      "summary": "Fusion's OWN alert toasts, read from its log. Fusion draws error/warning toasts in CEF: they are invisible to Win32 enumeration AND to UIA, so a verb can look successful while Fusion is visibly complaining. This reads them, newest last.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "mode": "bottom",
        "refs": [
          "C1",
          "C2",
          "C3"
        ]
      },
      "input": {
        "allowOutside": "bool",
        "allowOverlap": "bool",
        "by": "courtyard|anchor, default courtyard",
        "dryRun": "bool",
        "expectDocument": "required",
        "expectedRevision": "optional",
        "gapMm": "distribute spacing (default even between the outer two)",
        "mode": "left|right|top|bottom|centerX|centerY|distributeX|distributeY (required)",
        "refs": "[ref] (two or more, required)",
        "to": "mm: the line (default from the group)"
      },
      "longRunning": false,
      "name": "fusion_align_parts",
      "output": {
        "mismatches": "[{ref, asked, got}]",
        "revision": "str",
        "targets": "[{ref, x, y}]"
      },
      "statusVerb": null,
      "summary": "Line parts up on a common left, right, top, bottom or centre line, or space them evenly (the standard's align_parts), by footprint box (pads, placement and documentation outlines, keepouts) or by anchor point. Rotation and side are kept. A part pushed off the board or onto another part is refused unless allowOutside / allowOverlap. Moved by name and read back.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "dryRun": true
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "the design"
      },
      "longRunning": false,
      "name": "fusion_annotate",
      "output": {
        "planned": "[{sheet, from, to}]",
        "renamed": "[..]"
      },
      "statusVerb": null,
      "summary": "Number every 'R?'-style designator with the lowest free number of its prefix, sheet by sheet, top-left first (the standard's annotate). Fusion names parts as they are added, so there is usually nothing to do.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_apply_fusion_update",
      "output": {
        "applied": "bool",
        "button": "str|null",
        "why": "str"
      },
      "statusVerb": null,
      "summary": "Readiness EXECUTOR (Rust port, Phase 3): click Fusion's update offer IN THE BACKGROUND when auto-update is on (sticky pref; fusion_set_auto_update). Never the exit-class buttons while a host op is active. Answers {applied, button, why}.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required",
        "pours": "required [{net, layer, points:[[x,y]...], isolate (mm, default 0.25), rank (default 1), width (mm, default 0.25), thermals (default true), orphans (default false)}]"
      },
      "longRunning": false,
      "name": "fusion_apply_pours",
      "output": {
        "added": "[net]",
        "filledAreaByLayerMm2": "{layer:mm2}",
        "kept": "[net]",
        "pours": "[{net,layer,outline,filledMm2,islands,filled}]",
        "revision": "str",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Draw copper pours from a plan: POLYGON per pour (net, layer 1 or 16, outline points, isolate, rank 1..6, width, thermals, orphans), skipping any already on the board with the same net, layer and outline, then RATSNEST fills them. The reply carries Fusion's own fill per pour (filledMm2, islands) and per layer. Removing a pour is not done here.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing",
        "names": [
          {
            "ref": "J1",
            "rotation": 90,
            "size": 1.5,
            "x": 10,
            "y": 20
          }
        ]
      },
      "input": {
        "comments": "[same] for the value text",
        "expectDocument": "required exact board name",
        "expectedRevision": "optional: refuse with stale_board if the board moved on",
        "lines": "[{x1, y1, x2, y2, width? (0.15), side?}]",
        "names": "[{ref, x, y, size?, rotation?, show?}] the designator text's own location (lower left before rotation), mm",
        "remove": "{texts:[raw], lines:[raw]} from fusion_silk_state",
        "texts": "[{text, x, y, size?, rotation?, side?: top|bottom}]"
      },
      "longRunning": false,
      "name": "fusion_apply_silkscreen",
      "output": {
        "after": "silk_state",
        "applied": "int",
        "failed": "int",
        "results": "[ok | err:...]",
        "revision": "str",
        "smashed": "[ref]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Land a silkscreen plan on the live board: designators (names) and values (comments) moved to their own location, sized, turned or hidden; free silkscreen texts and lines added (bottom ones mirrored); earlier free items removed by the raw handle fusion_silk_state gives. Parts not yet smashed are smashed first. Each pick is made with only the target's layer displayed, so a pad or wire is never taken instead, and the board's layer display is restored. Read back; if copper, parts or the outline moved, every command is undone. The edit side of a designator plan (silk_designators).",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "folderId": "optional str",
        "hubId": "optional str",
        "projectId": "optional str"
      },
      "longRunning": false,
      "name": "fusion_aps_browse",
      "output": {
        "items": "[{name,type,id}]"
      },
      "statusVerb": null,
      "summary": "Browse hubs/projects/folders without launching Fusion.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "name": "Adom AI Workspace",
        "parentFolderId": "urn:...",
        "projectId": "a.YnVz..."
      },
      "input": {
        "name": "required str",
        "parentFolderId": "required str",
        "projectId": "required str"
      },
      "longRunning": false,
      "name": "fusion_aps_create_folder",
      "output": {
        "folderId": "str"
      },
      "statusVerb": null,
      "summary": "Create a subfolder in a project (free; needs data:create scope). Use this to make an 'Adom AI Workspace' folder + per-task subfolders so the bridge never dumps loose files in the shared project root. See fusion-cloud-hygiene.",
      "timeoutSeconds": 50
    },
    {
      "example": {
        "query": "BME690 Molecule"
      },
      "input": {
        "fileName": "optional str",
        "query": "str OR projectId+urn",
        "saveDir": "optional str"
      },
      "longRunning": false,
      "name": "fusion_aps_download",
      "output": {
        "bytes": "int",
        "path": "str"
      },
      "statusVerb": null,
      "summary": "Download a cloud file to the local machine (no Fusion needed).",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "query": "BME690 Molecule"
      },
      "input": {
        "query": "str  OR  projectId+urn"
      },
      "longRunning": false,
      "name": "fusion_aps_file_info",
      "output": {
        "tip": "{...}",
        "versionCount": "int",
        "versions": "[...]"
      },
      "statusVerb": null,
      "summary": "Version history + who/when/size for a file (tip + recent versions).",
      "timeoutSeconds": 40
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_aps_forget_browser",
      "output": {
        "cleared": "bool",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Forget the remembered Autodesk sign-in browser (re-detect next time).",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "path": "/project/v1/hubs"
      },
      "input": {
        "path": "required str"
      },
      "longRunning": false,
      "name": "fusion_aps_get",
      "output": {
        "body": "obj",
        "status": "int"
      },
      "statusVerb": null,
      "summary": "Raw authenticated GET against a free APS path (dev/verify helper).",
      "timeoutSeconds": 40
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_aps_get_browser",
      "output": {
        "browser": "{name,exe,profileDir}|null",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Show the remembered Autodesk sign-in browser (None until set).",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "query": "BME690 Molecule"
      },
      "input": {
        "query": "required str",
        "wait": "optional bool"
      },
      "longRunning": true,
      "name": "fusion_aps_open",
      "output": {
        "match": "{name}",
        "opening": "bool",
        "statusVerb": "str"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Find a cloud design by name and open it in Fusion (any folder depth). Fire-and-poll.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "limit": 25
      },
      "input": {
        "limit": "optional int (default 25)"
      },
      "longRunning": false,
      "name": "fusion_aps_recent",
      "output": {
        "count": "int",
        "results": "[...]"
      },
      "statusVerb": null,
      "summary": "Most-recently-modified designs across the team hub, newest first.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "limit": 10,
        "query": "Molecule"
      },
      "input": {
        "hubId": "optional str",
        "limit": "optional int (default 50)",
        "projectId": "optional str",
        "query": "required str"
      },
      "longRunning": false,
      "name": "fusion_aps_search",
      "output": {
        "count": "int",
        "results": "[{name,id,projectName,lastModified}]"
      },
      "statusVerb": null,
      "summary": "Server-indexed search across the whole team hub: about 20-30 s hub-wide, a few seconds with projectId (not a 30-min folder walk). Budget 120 s. A ZERO from the server index is not absence: the reply then carries data.fallback (a name scan of the newest 400 items), data.completeness, and a hint to fusion_aps_browse a known sibling's folder (issue #85).",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "exe": "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe",
        "name": "Edge",
        "profileDir": "Default"
      },
      "input": {
        "exe": "str (browser binary) OR how:'extension'",
        "how": "optional 'extension'|'launch'",
        "name": "optional str",
        "profileDir": "optional str"
      },
      "longRunning": false,
      "name": "fusion_aps_set_browser",
      "output": {
        "browser": "{name,exe,profileDir}",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Remember the browser+profile that authed to Autodesk so every later sign-in reuses it (power users have many browsers/profiles; the OS default is usually the wrong one). Call after a driven sign-in succeeds.",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "clientId": "D5nn...EPAq"
      },
      "input": {
        "clientId": "required str"
      },
      "longRunning": false,
      "name": "fusion_aps_set_client_id",
      "output": {
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Set the org's APS (PKCE) client id used for cloud search. Get it from your org's members-only wiki settings: adom-wiki settings get <org> autodesk-aps (never from another machine's config file). When the org has none yet, the reply's hint gives the adom-wiki settings set command that shares it, so every other box adopts it in two calls (fusion-aps-org-setup skill). Public identifier, no secret.",
      "timeoutSeconds": 20
    },
    {
      "example": {},
      "input": {
        "allowDefaultBrowser": "optional bool",
        "exe": "optional str (browser binary to launch+remember)",
        "name": "optional str",
        "profileDir": "optional str (e.g. 'Default','Profile 2')"
      },
      "longRunning": false,
      "name": "fusion_aps_signin",
      "output": {
        "authUrl": "str",
        "needsExtensionOpen": "bool",
        "openedVia": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_aps_status",
      "summary": "Open the Autodesk sign-in in the REMEMBERED browser+profile (not the OS default); a background listener captures the token. Pass {exe,profileDir,name} to use+remember a specific browser, or {allowDefaultBrowser:true} to fall back to the OS default. If nothing is remembered, returns needsExtensionOpen so the caller opens authUrl in the user's real browser via nbrowser_open_window.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_aps_status",
      "output": {
        "configured": "bool",
        "neverCharge": "bool",
        "signedIn": "bool"
      },
      "statusVerb": null,
      "summary": "APS state: configured, signed in, token live, never-charge meter. When configured:false the hint sends you to your org's shared app ID on the wiki (adom-wiki settings get <org> autodesk-aps) before anything else; the fusion-aps-org-setup skill covers new boxes and first-time orgs.",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "folderId": "urn:...",
        "localPath": "C:/x.f3d",
        "projectId": "a.YnVz..."
      },
      "input": {
        "fileName": "optional str",
        "folderId": "required str (NON-ROOT subfolder)",
        "localPath": "required str",
        "projectId": "required str"
      },
      "longRunning": false,
      "name": "fusion_aps_upload",
      "output": {
        "bytes": "int",
        "itemUrn": "str"
      },
      "statusVerb": null,
      "summary": "Upload a local file as a NEW cloud file (free Data Management; needs data:write scope). \u26d4 FOLDER HYGIENE: NEVER pass a project ROOT folderId - the bridge REFUSES it (refused_root_upload). Loose files in a shared root clutter the team's cloud. Create/choose a real subfolder first (fusion_aps_create_folder under an 'Adom AI Workspace' folder), or just use fusion_make_3d_package / fusion_build_library_3d which auto-target a non-root workspace. To RELOCATE an existing file, MOVE it (preserves its urn) - do NOT delete + re-upload (mints a new urn, breaks 3D bindings). See the fusion-cloud-hygiene skill.",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "query": "BME690 Molecule"
      },
      "input": {
        "query": "str  OR  projectId+urn"
      },
      "longRunning": false,
      "name": "fusion_aps_versions",
      "output": {
        "versionCount": "int",
        "versions": "[...]"
      },
      "statusVerb": null,
      "summary": "Full (uncapped) version history of a file.",
      "timeoutSeconds": 40
    },
    {
      "example": {
        "includePhysicalProperties": true,
        "treatAsUnit": [
          "with fasteners"
        ]
      },
      "input": {
        "exclude": "optional [str] top-level name prefixes to skip",
        "includePhysicalProperties": "optional bool (adds volume_cm3/mass_kg per line)",
        "maxSeconds": "optional float (walk budget, default 20; the verb REFUSES fast with bom_walk_budget_exceeded + a fusion_export_bom redirect on electronics 3D PCBs instead of blocking Fusion for minutes - issue #659)",
        "outputPath": "optional str (Windows CSV path)",
        "treatAsUnit": "optional [str] name substrings counted as one unit (default ['with fasteners'])"
      },
      "longRunning": false,
      "name": "fusion_assembly_bom",
      "output": {
        "design": "str",
        "partCount": "int",
        "parts": "[{componentName, partNumber, description, material, quantity, bodies}]",
        "success": "bool",
        "totalInstances": "int"
      },
      "statusVerb": null,
      "summary": "Structured, kit-aware MECHANICAL bill of materials for the active Design assembly (the counterpart to the electronics-only fusion_export_bom). Recurses organizational subassemblies but counts a physical part or a purchased kit/unit ONCE, so hardware modeled inside a kit (a '... with fasteners' bracket, a bearing/pulley) is NOT double-counted the way a flat allOccurrences walk counts it. Matches Fusion's Manage -> BOM quantities. Optionally writes a CSV.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "lcscMissing": "the BOM lines without an LCSC number (default: read from the board's parts)",
        "panelMm": "[w, h] when it ships in a panel"
      },
      "longRunning": false,
      "name": "fusion_assembly_check",
      "output": {
        "board": "{parts, bottomSideParts, finestPitch, smallestChip, fiducials, ...}",
        "economic": "{ok, rules:[{rule, ok, detail}]}",
        "engine": "str",
        "linesWithoutLcsc": "[...]",
        "service": "economic | standard | null",
        "standard": "{ok, rules}"
      },
      "statusVerb": null,
      "summary": "Ready for JLCPCB assembly (the standard's assembly_check)? The board against both JLCPCB PCBA tiers as published (Economic and Standard): size, thickness and layers, parts on one or both sides, the smallest package and finest pin pitch, fiducials, and the BOM lines with no LCSC number (from the board's own part attributes); answers the cheapest tier every rule allows. The shared checks engine on the live board.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "filePath": "C:/Users/<user>/adom-lib/ADS8588SIPM.fusion.lbr",
        "modelPath": "C:/Users/<user>/adom-lib/ADS8588SIPM.step",
        "packageName": "ADS8588SIPM"
      },
      "input": {
        "filePath": "required str (.lbr WINDOWS path C:/...)",
        "modelPath": "required str (.step WINDOWS path C:/...)",
        "packageName": "optional str"
      },
      "longRunning": true,
      "name": "fusion_attach_3d_package",
      "output": {
        "_hint": "the Save-dialog click + verify steps",
        "data": "{steps}",
        "savePending": "bool",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "LOW-LEVEL primitive: attaches ONE model to ONE package. Prefer fusion_create_library with parts[]. Attach a real 3D chip model to a library package, end to end: opens the .lbr (library active), runs Electron.Create3DPackage to enter the Package3DEnvironment showing the footprint, imports the STEP + auto-orients it flat on the footprint, then executes Package3DStop (FINISH). This BINDS the 3D onto the deviceset (Content Manager shows the 3D nested under the package; the Packages 'Package' column flips Placeholder->part-name). ONE desktop-side step remains: Fusion pops a modal Save dialog (an OWNED popup) - the response _hint gives the exact desktop_ui_click to confirm it. AFTER: re-grab desktop_screenshot_window and check ownedPopupCount for errors; the 3D preview LAGS a beat before showing the real chip. Both paths (filePath/modelPath) are WINDOWS paths - stage from the container first.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "powerWidthMm": 0.6
      },
      "input": {
        "apply": "bool, default false",
        "expectDocument": "required: the board's name",
        "powerWidthMm": "default 0.5"
      },
      "longRunning": false,
      "name": "fusion_auto_classes",
      "output": {
        "applied": "bool",
        "applyArgs": "{net_classes, diff_pairs}",
        "engine": "str",
        "proposal": "{classes, pairs, unclassified}",
        "skipped": "[{name, why}]",
        "written": "[{name, success, class}]"
      },
      "statusVerb": null,
      "summary": "Net classes from the nets' own names (the standard's auto_classes), from the shared checks engine: GND, Power (VCC, VDD, 3V3, VBAT...), Clock, HighSpeed (USB, Ethernet, HDMI, PCIe, DDR, MIPI, LVDS, SATA...) and the differential pairs their names spell. A proposal first; apply:true writes the classes that carry a rule (Power's width, powerWidthMm) as Fusion net classes through fusion_add_rule. Fusion pairs nets by their names, so the pairs need no writing.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "nets": [
          "SDA",
          "SCL"
        ]
      },
      "input": {
        "drc": "bool, default true",
        "expectedRevision": "str",
        "lockPreroutes": "bool, default true (Fusion's autorouter always keeps existing tracks)",
        "nets": "[str] (default: every net with unconnected copper)"
      },
      "longRunning": true,
      "name": "fusion_autoroute",
      "output": {
        "added": "{tracks, vias}",
        "after": "{unconnected, errors}",
        "before": "{unconnected, errors}",
        "nets": "[str]",
        "revision": "str",
        "routed": "[str]",
        "success": "bool",
        "unrouted": "[str]"
      },
      "statusVerb": null,
      "summary": "Fusion's autorouter on the given nets, or on every net with unconnected copper. Existing tracks are kept (read back, or the run is undone); Fusion's DRC runs before and after. Refused before anything runs when a copper layer in use is switched off in the board's autorouter setup (Fusion would stop to ask): the reply names the layers.",
      "timeoutSeconds": 600
    },
    {
      "example": {
        "libraryPath": "C:/Temp/PART.lbr",
        "stepPath": "C:/Temp/PART.step"
      },
      "input": {
        "deviceset": "optional str (defaults to the library's first)",
        "libraryPath": "required str (WINDOWS .lbr path)",
        "stepPath": "required str (WINDOWS .step path)"
      },
      "longRunning": true,
      "name": "fusion_bind_library_3d",
      "output": {
        "bound": "bool",
        "reopened": "bool",
        "success": "bool",
        "wip_urn": "str"
      },
      "statusVerb": null,
      "summary": "LOW-LEVEL primitive: binds ONE STEP onto one deviceset. Prefer fusion_create_library with parts[] (which handles one part or many through a single path); reach for this only when you are driving a single bind deliberately. The CORRECT library in ONE call (the Library button's real bar: the 3D chip renders in the Content Manager preview): mints the part's 3D as a cloud f3d (make_3d_package), injects the wip_urn binding into the .lbr ON DISK (packages3d + package3dinstances), and reopens the library. Needs a signed-in Fusion session - the one cloud-dependent step in the wiki-to-EE circle. Autodesk's thumbnail preview lags ~2-3 min behind a fresh mint. NOTE: distinct from the older fusion_build_library_3d (multi-part batch pipeline).",
      "timeoutSeconds": 480
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required exact board name",
        "outputDir": "optional folder on this machine for bom.csv + bom-jlcpcb.csv"
      },
      "longRunning": false,
      "name": "fusion_board_bom",
      "output": {
        "boardOnly": "[str]",
        "csv": "str",
        "files": "{name:path}",
        "jlcpcbCsv": "str",
        "lines": "[{designators,quantity,value,package,mpn,manufacturer,mouser,digikey,lcsc}]",
        "missingPartNumbers": "{mouser,digikey,lcsc:[str]}"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The bill of materials from the live board's own part attributes: one line per MPN with designators, quantity, value, package, manufacturer and the Mouser, DigiKey and LCSC numbers, plus the JLCPCB form (Comment, Designator, Footprint, LCSC). Board-only parts (test pads) are listed as such, and any part missing a distributor number is named. Read-only; with outputDir it also writes bom.csv and bom-jlcpcb.csv there.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true,
        "stitching": {
          "net": "GND",
          "pitch": 5
        }
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "required",
        "fiducials": "[{x, y, size?, opening?, side?}]",
        "keepouts": "[{rect, layer?: all|F.Cu|B.Cu}]",
        "mountingHoles": "[{x, y, drill?, plated?, pad?, net?}] or {corners: {inset}, drill?, plated?}",
        "stitching": "{net, pitch?, size?, drill?, clearance?, edge?, region?, max?}"
      },
      "longRunning": false,
      "name": "fusion_board_features",
      "output": {
        "applied": "int",
        "planned": "{mountingHoles, fiducials, keepouts, stitching:{count, points}}",
        "results": "[ok|err: ...]"
      },
      "statusVerb": null,
      "summary": "Board furniture in one call (the standard's board_features): mounting holes (bare, or plated via-holes on a net; at points or the four corners), fiducials (a filled copper circle and its mask opening), keepouts (Fusion's restrict layers) and a stitching-via grid on a net, each spot clear of other copper, pads, holes and the edge. Read back; a mismatch undoes it.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_board_info",
      "output": {
        "rawXml": "str"
      },
      "statusVerb": null,
      "summary": "Raw board geometry XML (copper/arcs/lines) for the open board.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_board_outline",
      "output": {
        "alreadyThere": "int",
        "drawn": "0",
        "layer": "str",
        "outlineClosed": "bool",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Report the board edge the fab gets. Fusion's edge is its Dimension layer (20) and its Gerbers export it as the outline, so there is nothing to draw: this says how many outline items are there and whether they close. Change the shape with fusion_set_outline.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "drc": "bool, default true",
        "expectDocument": "required: the board's name",
        "outputDir": "default %TEMP%/adom-board-report",
        "title": "default the design's name",
        "vendor": "fab record, default jlcpcb"
      },
      "longRunning": false,
      "name": "fusion_board_report",
      "output": {
        "drcStoredInBoard": "bool",
        "engine": "str",
        "path": "the .html",
        "sections": "[...]",
        "sizeBytes": "int"
      },
      "statusVerb": null,
      "summary": "One shareable page for the board (the standard's board_report): every check the shared engine has, run on one bundle of the live board and its companions (stack-up, pours, rules, 3D bodies, a fab record, the schematic's parts and netlist), with Fusion's own DRC and a picture of the board, written as one self-contained HTML file on the Fusion machine. A section missing its input says which. Fusion stores its DRC result in the board (the document then reads as modified): drc:false skips it.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "fixed": "optional [{ref, deviceset, value?, x, y (mm, board frame), rot?, nets:{pin:net}}]",
        "libraryPath": "required .lbr on this machine",
        "name": "optional design name (letters, digits, _ -)",
        "outDir": "required folder on this machine",
        "outlineMm": "required [width, height]",
        "rules": "optional {clearance, edge, minWidth, minDrill, holeToHole, padRestringRatio, padRestring, viaRestring, copperUm}",
        "title": "optional sheet title"
      },
      "longRunning": false,
      "name": "fusion_board_seed",
      "output": {
        "brdPath": "str",
        "fixedParts": "int",
        "schPath": "str"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Write the design a new board starts from, as EAGLE source on this machine: the board outline, the fab's design rules (Fusion's own rules block with your clearance, edge distance, minimum width and drill, hole-to-hole, pad and via restring and copper weight; Fusion's defaults are 0.35 mm drill, 1 mm to the edge and a 25 % pad restring, wrong for most fabs), the fixed parts at their places with their nets, and the library they come from. Then fusion_new_electronics_from_eagle imports it as a linked schematic and board.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "hMm": 25,
        "wMm": 40
      },
      "input": {
        "expectedRevision": "str",
        "hMm": "float, default 15",
        "wMm": "float, default 15",
        "x0Mm": "float, default 0",
        "y0Mm": "float, default 0"
      },
      "longRunning": false,
      "name": "fusion_board_shape",
      "output": {
        "...": "as fusion_set_outline"
      },
      "statusVerb": null,
      "summary": "A rectangular board outline from its corner and size: fusion_set_outline {outline:{rect:[x0Mm,y0Mm,wMm,hMm]}}.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact board name"
      },
      "longRunning": false,
      "name": "fusion_board_source",
      "output": {
        "boardId": "str",
        "revision": "str",
        "source": "str (EAGLE .brd XML)"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Read the live board as EAGLE XML from a fresh export: parts, copper, vias, pours with Fusion's own computed fill, and the outline. Read-only. Feed it to adom-fields (it reads .brd) for current and heat, or to adom-aiflow, which converts it for its offline checks.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": true,
      "name": "fusion_board_stackup",
      "output": {
        "copperCount": "int",
        "copperLayers": "list",
        "copperThickness_mm": "list",
        "dielectricBonds": "list (prepreg/core order)",
        "fr4": "{x_mm,y_mm,dielectric_mm}",
        "layerSetup": "str"
      },
      "statusVerb": null,
      "summary": "Read a board's PHYSICAL fabrication stackup (see the pcb-stackup skill): copper layer count + copper/dielectric thicknesses from the EAGLE design rules (layerSetup/mtCopper/mtIsolate) plus the measured FR4 extent. A PCB is Cu/prepreg/Cu/core/.../Cu - the FR4 is NOT one slab. Use to build the stackup table + real-thickness exploded 3D view, and put a stackup table on every exported board's wiki page.",
      "timeoutSeconds": 200
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the board's name",
        "limit": "int, default 2000 (components listed)",
        "raw": "bool"
      },
      "longRunning": false,
      "name": "fusion_board_summary",
      "output": {
        "roundtripMs": "int",
        "summary": "{board, components, componentsTop, componentsBottom, nets, copperLayersInUse, copperLayersInUseNames, layersWithPrimitives, copperLayersAddressable, rules, rulesEnabled}"
      },
      "statusVerb": null,
      "summary": "One-screen summary of the open board (the standard's board_summary), shaped from one fusion_read_board round trip: the board (name, outline), its components with footprint, value, position and side, counts top and bottom, nets, the copper layers in use and addressable, layers carrying primitives, and the rule counts. raw:true answers read_board unshaped.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact board name"
      },
      "longRunning": false,
      "name": "fusion_bodies",
      "output": {
        "bodies": "[{ref,side,x0,y0,x1,y1,z0,z1,package,throughHole?,leadsPastFarSideMm?}]",
        "complete": "bool",
        "noBody": "[ref]",
        "returnedTo2d": "bool",
        "revision": "str",
        "surface": "{topZ,bottomZ}",
        "suspect": "[{ref,why:[str]}]",
        "tallest": "{top:{ref,heightMm},bottom}"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Each part's 3D body as a box, from the design's 3D PCB: footprint rectangle in the board frame (x0, y0, x1, y1 mm) and height range above the surface it sits on (z0 standoff, z1 top; below the board for bottom parts). Names the parts with no 3D model (noBody) and the ones whose body is not where the board puts the part (suspect: off its footprint, floating or sunk, from a wrong library model or a 3D PCB not yet updated). The tallest part per side. What a height or enclosure check reads. Switches the design to its 3D PCB and back to the 2D board inside Fusion; takes no window or mouse.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "boards": "int, default 1: multiplies quantities",
        "expectDocument": "the board's name",
        "outputDir": "folder for bom.csv and bom-jlcpcb.csv",
        "variant": "a variant's name (default the current one)",
        "write": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_bom",
      "output": {
        "alternates": "[{designator, alternatePart}]",
        "checks": "{missingMpn, missingManufacturer, missingPartNumbers, inconsistent, dnp, excludedKinds, sheetNotOnBoard, boardNotOnSheet}",
        "files": "[path] (write:false answers the files' text instead)",
        "fittedParts": "int",
        "lines": "[{quantity, designators, value, comment, description, footprint, package, mpn, manufacturer, mouser, digikey, lcsc, libReference}]",
        "outputDir": "str",
        "variants": "[str]"
      },
      "statusVerb": null,
      "summary": "The bill of materials (the standard's bom) through the shared engine: the schematic's parts with their attributes, the live board and the variant (variant names one; default the current), grouped one line per manufacturer part number, checked for what an order needs (missing MPN, maker, Mouser/DigiKey/LCSC numbers, lines mixing values, JLCPCB lines without LCSC, DNP, sheet and board mismatches), and the order files written to outputDir: bom.csv, bom-jlcpcb.csv, cpl-jlcpcb.csv, bom-mouser.csv, bom-digikey.csv.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "libraryPath": "C:/libs/buck.lbr",
        "nets": {
          "GND": [
            "R1.2"
          ]
        },
        "outline": {
          "cornerRadius": 1,
          "rect": [
            0,
            0,
            20,
            15
          ]
        },
        "parts": [
          {
            "footprint": "R0603",
            "ref": "R1",
            "rotation": 0,
            "x": 5,
            "y": 5
          }
        ],
        "pcbPath": "C:/Boards/buck.brd"
      },
      "input": {
        "layers": "2|4|6|8",
        "libraryPath": "a .lbr holding every footprint (required)",
        "nets": "{net: ['R1.1', 'U1.3']}",
        "open": "bool, default true",
        "outline": "{rect: [x0, y0, w, h], cornerRadius?} | {points: [[x, y]...]} (default: the parts' box + 2 mm)",
        "parts": "[{ref, footprint, x, y, rotation, comment?}] (required)",
        "pcbPath": "the .brd to write (required)"
      },
      "longRunning": false,
      "name": "fusion_build_board",
      "output": {
        "counts": "{}",
        "documentName": "str",
        "missingParts": "[ref]",
        "padsWired": "int",
        "placed": "int",
        "revision": "str",
        "unconnected": "int - the ratsnest to route",
        "unknownPins": "[]",
        "wrongPins": "[{pin, want, got}]"
      },
      "statusVerb": null,
      "summary": "A NEW board from a parts list and a netlist (the standard's build_board): outline (rect with rounded corners, or points), every footprint from one .lbr placed by its own origin, pad nets assigned, written as EAGLE source (pcbPath overwritten), opened in Fusion as a local design dialog-free, then read back pin by pin. Footprint pad names must match the netlist's pin numbers (R1.1 = pad 1 of R1). Coordinates mm, Y up.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "lbrPath": "C:/tmp/newlib/AdomBasicParts2.lbr",
        "parts": [
          {
            "lbrPath": "C:/tmp/newlib/R_4k7.lbr",
            "modelPath": "C:/tmp/newlib/R_4k7.step",
            "package": "R_4k7"
          }
        ]
      },
      "input": {
        "capture": "optional bool (default true)",
        "folderId": "optional str",
        "folderPath": "optional str under that project, created if missing (default Adom AI Workspace); the task subfolder goes under it",
        "lbrPath": "required str (combined .lbr WINDOWS path to bind + open)",
        "openWhenDone": "optional bool (default true)",
        "outLbrPath": "optional str (default: overwrite lbrPath)",
        "parts": "required [{package, lbrPath (per-part footprint .lbr), modelPath (.step)}]",
        "projectId": "optional str",
        "projectName": "optional str: save the .f3d into this project by name (never the active one; a missing name is refused)"
      },
      "longRunning": true,
      "name": "fusion_build_library_3d",
      "output": {
        "boundLbr": "str",
        "opened": "bool",
        "parts": "[{package,success,wip_urn,dims_mm,error}]",
        "partsBound": "int",
        "partsTotal": "int",
        "screenshots": "[{package,stage,path}]",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Build a RENDERING multi-part 3D library in ONE call - the whole programmatic pipeline. For each part it makes the footprint+chip f3d package (no GUI dialogs, optional before/after screenshots) and collects the wip_urn, then injects ALL bindings into the combined .lbr in one pass (no hand XML surgery) and opens the finished library once. A part minted before on this machine and account, with the same model, footprint, placement and destination, reuses its 3D package when its cloud file still exists (reused:true on the part, partsReused and partsMinted in the reply; freshMint:true, on the call or a part, makes it again). This is the verb for a basic-parts sampler / any many-part library; it replaces the per-part make_3d_package loop + manual binding. projectId/folderId default to the MAIN-project upload folder. Each part is independent, so re-run just the failed parts if Fusion resets mid-run.",
      "timeoutSeconds": 1800
    },
    {
      "example": {
        "runId": "a3f1c2d4e5b6"
      },
      "input": {
        "runId": "optional str (omit for the latest run in flight)"
      },
      "longRunning": true,
      "name": "fusion_cancel_run",
      "output": {
        "cancelRequested": "bool",
        "reason": "no_run_in_flight when false",
        "runId": "str",
        "stage": "str at the time of the request",
        "statusVerb": "fusion_prove_result"
      },
      "statusVerb": "fusion_prove_result",
      "summary": "STOP a library import that is in flight (fusion_install_library_bundle / fusion_create_library) - the user's escape hatch from a long run, wired to a Cancel button in web control. Cooperative, not a kill: the run finishes the part it is on (a STEP import cannot be interrupted mid-command without leaving a half-made design, up to ~60s), keeps every 3D package already minted and binds them into the library, closes its scratch documents, and leaves the library open in Fusion (not saved to the cloud). The run then reports stage:cancelled, verdict:cancelled, errorCode cancelled_by_user, cancelledAt (which stage) and how many parts were done, on the same fusion_prove_result poll the caller already makes; cancelRequested:true shows on the very next poll before the boundary is reached. Omit runId to cancel the latest run still in flight. Idempotent; a run that already ended answers alreadyFinished.",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "packages": [
          "ESP32-S3FN8",
          "ATSAMD51J20A-AUT"
        ]
      },
      "input": {
        "libraryPath": "optional str (.lbr on the box; required for the 3d view, defaults to the last library opened)",
        "packages": "required [<deviceset name>] (or 'package': single name)",
        "settle": "optional float secs after each EDIT before capture (default 1.5; raise if a shot shows the PREVIOUS part)",
        "views": "optional subset of ['symbol','footprint','3d','component'] (default ALL FOUR, in that assembly order - 3d opens the part's BOUND f3d (footprint + chip) by its urn, frames it, captures it and closes it unsaved; needs libraryPath; component is the ganged view last)"
      },
      "longRunning": true,
      "name": "fusion_capture_library_views",
      "output": {
        "captured": "[{package,view,path,ok}]",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Capture the LIBRARY-EDITOR views EEs trust: the schematic SYMBOL (full pinout), the FOOTPRINT (pads + layer stack), and the COMPONENT/device view (Content Manager: symbol + the package table with the footprint<->package Mapped check + pin/pad counts). The 3D before/after shots don't show these. Requires the .lbr OPEN in the Electronics Library workspace (fusion_open_lbr first). Runs EDIT <pkg>.sym/.pac/.dev + WINDOW FIT + a background hwnd screenshot per view; returns the PNG paths on the box (C:/tmp/conduit-screenshots - pull with desktop_pull_file). EDIT uses the DEVICESET name (e.g. ESP32-S3FN8).",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required",
        "pours": "required [{net, layer, points?:[[x,y]...] (omit when the net has one pour on that layer), width? or minWidthMm? (mm), isolate? or clearanceMm? (mm), thermals? (bool, or {on}), rank? or priority? (1-6), orphans? or keepIslands? (bool)}]"
      },
      "longRunning": false,
      "name": "fusion_change_pours",
      "output": {
        "changes": "[{net,layer,width,isolate,thermals,rank,orphans:[before,after],filledMm2:[before,after]}]",
        "revision": "str",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Change existing pours in place: the pen width (the narrowest copper the fill can reach; a pen wider than a throat leaves it empty) and the isolation. Each pour is named by net, layer and outline, picked on the midpoint of its longest edge, then RATSNEST refills. The readback proves each pour took its new width/isolate and that no track or via changed, and reports the filled area before and after.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "boardId": "optional",
        "dryRun": "bool",
        "expectDocument": "the board",
        "expectedRevision": "optional",
        "filter": "{drill?, diameter?, net?}: every via matching, with set",
        "set": "{drill?, diameter?} mm",
        "vias": "[{x, y, drill?, diameter?}] mm: the vias at these points"
      },
      "longRunning": false,
      "name": "fusion_change_vias",
      "output": {
        "changes": "[{id, before, after}]",
        "results": "[ok|err:...]",
        "revision": "str",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Change existing vias, and nothing but vias: drill and diameter, by position or by a filter on what they are now. Only the Vias layer is displayed while they're picked, so a track end or pad at the same point can't be taken instead, and the board's layer display goes back after. Read back: only the asked vias may differ, or every change is undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "mode": "courtyard",
        "thresholdMm": 0.2
      },
      "input": {
        "expectDocument": "required: the board's name",
        "includeSameNet": "bool (pads mode)",
        "maxPairs": "int",
        "mode": "courtyard|pads, default courtyard",
        "refs": "[ref] limit to these parts (default all)",
        "thresholdMm": "report pairs closer than this"
      },
      "longRunning": false,
      "name": "fusion_check_clearance",
      "output": {
        "bodiesUsed": "bool",
        "engine": "str",
        "mode": "str",
        "ok": "bool",
        "pairs": "[{parts, gapMm, at, side|layer}]"
      },
      "statusVerb": null,
      "summary": "Part-to-part clearance (the standard's check_clearance), from the shared checks engine on the live board and fusion_bodies: courtyard mode compares part boxes (pads and 3D bodies) on the same side; pads mode compares pad copper of different parts sharing a copper layer, by its real outline. Pairs closer than thresholdMm, nearest first.",
      "timeoutSeconds": 150
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_check_dialogs",
      "output": {
        "count": "int",
        "dialogs": "[{hwnd, title, text, buttons}]",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "List every Fusion dialog open now, each with its title, text and buttons read through UI Automation (no screenshot needed). The bridge expires unknown dialogs by itself before the next add-in verb; in-canvas alerts that have no window are in fusion_alerts.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "minImprovementMm": 0.5
      },
      "input": {
        "expectDocument": "required: the board's name",
        "minImprovementMm": "number",
        "parts": "[ref] (default every 2-pad part)"
      },
      "longRunning": false,
      "name": "fusion_check_orientation",
      "output": {
        "checked": "int",
        "engine": "str",
        "suggestions": "[{ref, from, to, savesMm}]"
      },
      "statusVerb": null,
      "summary": "Advisory (the standard's check_orientation): 2-pad parts whose rotation could be better, each orthogonal turn scored in place by airline length (a routable net's MST with the pad there; a plane-like net's distance to its nearest pad); parts whose best turn saves minImprovementMm are listed. Nothing moves: the shared checks engine on the live board.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "fileName": "BQ25792",
        "folderPath": "Molecules/XRP/Power",
        "projectName": "Main"
      },
      "input": {
        "fileName": "required str",
        "folderPath": "optional str (default the project root)",
        "projectName": "optional str (default the active project)"
      },
      "longRunning": false,
      "name": "fusion_check_recovery",
      "output": {
        "apiReliable": "bool",
        "fileId": "str",
        "fileName": "str",
        "hasRecovery": "bool",
        "project": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Ask whether a cloud file has a crash-recovery document waiting, which would raise Fusion's recovery modal on open. BEST-EFFORT: Fusion's Python API does not reliably expose this (apiReliable reports whether the property existed), so a false negative is possible; the dependable signal is an open that times out, and fusion_dismiss_blocking_dialogs clears the modal. Finds the file by exact name in one project folder.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "profile": "optional str (browser profile to name in the sign-in hint, e.g. edge:[email protected])"
      },
      "longRunning": false,
      "name": "fusion_claim_seat",
      "output": {
        "account": "obj",
        "holdsSeat": "bool",
        "license": "obj",
        "steps": "[{step, ok}]",
        "success": "bool"
      },
      "statusVerb": "fusion_readiness",
      "summary": "Make THIS machine the active Fusion seat, the first-class way to move a licence between boxes while testing. Starts Fusion if needed, then answers Autodesk's 'Active Sessions Exceeded' modal in the BACKGROUND (Continue): this box takes the seat and the other machine's Fusion suspends RESUMABLY, keeping its documents. Answers needs_signin (never a credential prompt) when the box is not signed in: run fusion_signin first. Confirms with fusion_account and reports the account and licence it ended up with.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "fileIds": [
          "urn:adsk.wipprod:dm.lineage:abc123"
        ],
        "projectName": "Adom"
      },
      "input": {
        "fileIds": "required [<lineage urn>]",
        "folderPath": "optional str (default root - where the files live)",
        "projectName": "optional str (default active project)"
      },
      "longRunning": true,
      "name": "fusion_cleanup_cloud_files",
      "output": {
        "deletedCount": "int",
        "failed": "[{fileId,error}]",
        "failedCount": "int",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "PRECISELY delete a list of cloud files by lineage urn - SAFE cleanup of AI-created clutter. Deletes ONLY the exact fileIds given (never name-guessing), so it can't touch a teammate's file in a shared folder. Loops server-side. Get the ids from fusion_aps_browse (item .id). Use this to remove f3d files the bridge created. A big list takes minutes (relay may time out at ~60s while deletes continue server-side - re-browse to confirm).",
      "timeoutSeconds": 1800
    },
    {
      "example": {
        "dryRun": true,
        "libraryPath": "C:/libs/parts.lbr"
      },
      "input": {
        "dryRun": "bool",
        "libraryPath": ".lbr on the Fusion machine (required)"
      },
      "longRunning": false,
      "name": "fusion_cleanup_libs",
      "output": {
        "backup": "str",
        "data": "{removed: int, items: ['component X' | 'symbol X' | 'footprint X']}"
      },
      "statusVerb": null,
      "summary": "Remove the empty leftovers from a library (the standard's cleanup_libs), offline in a .lbr: components with no device (Altium's factory Component_1 has the same role), and footprints and symbols with nothing drawn that no component uses. Anything with content stays, used or not. Written with a .bak and preflighted; dryRun lists what would go.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "from": "str",
        "libraryPath": "a .lbr on the Fusion machine",
        "to": "str"
      },
      "longRunning": false,
      "name": "fusion_clone_symbol",
      "output": {
        "from": "str",
        "primitives": "int",
        "to": "str"
      },
      "statusVerb": null,
      "summary": "Copy a component of a .lbr under a new name with copies of its symbols (the standard's clone_symbol).",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "includeScratch": true
      },
      "input": {
        "discardUnsaved": "bool, default false: close changed documents without saving (force also works)",
        "includeScratch": "bool, default false: also close never-saved scratch documents (closeUntitled also works)",
        "save": "bool, default false: save each changed document, then close it"
      },
      "longRunning": false,
      "name": "fusion_close_all_documents",
      "output": {
        "closed": "[name]",
        "keptOpen": "[{name, why}]",
        "remaining": "int",
        "saved": "[name]",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Close every open document without a save dialog; unsaved work is never lost by default (the standard's close_all_documents). A saved document with unsaved changes stays open and is listed in keptOpen, unless save (save it, then close: a new cloud version) or discardUnsaved (close without saving) says otherwise. Never-saved scratch documents close only with includeScratch, and a changed one only with discardUnsaved too. A named, never-saved, changed document is always kept: Fusion would ask where to save it.",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "save": false
      },
      "input": {
        "name": "optional str (default: active document)",
        "save": "optional bool default false: save a version, then close",
        "saveToClose": "optional bool: save a version only because the close needs it"
      },
      "longRunning": false,
      "name": "fusion_close_document",
      "output": {
        "closed": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Close ONE document without a modal save dialog. Omit name to close the active document. An unchanged document, or a never-saved scratch one, closes at once. A saved cloud document with unsaved changes is refused (unsaved_cloud_document): Fusion asks to save it even when told not to, so closing it means saving a version, which needs save:true (or saveToClose:true).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "hwnd": 123456
      },
      "input": {
        "hwnd": "required int (the dialog window)"
      },
      "longRunning": false,
      "name": "fusion_close_window",
      "output": {
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Close a DIALOG window by hwnd (WM_CLOSE, like clicking X) - for dialogs without Cancel/Escape handling (e.g. Recovered Documents). NOT a document closer; refuses without hwnd. Get the hwnd from a screenshot's dialogs array or desktop_list_windows. (Doc drift caught by the verb test suite 2026-08-14: this was described as 'close the active document' while the handler required hwnd.)",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "designator": "optional: one part (U1); omit for all",
        "expectDocument": "required exact active board name",
        "limit": "int, default 500"
      },
      "longRunning": false,
      "name": "fusion_component_data",
      "output": {
        "component": "{designator,pattern,comment,library,side,layer,xMm,yMm,rotation,box,wMm,hMm,pads,nets,has3d,locked,partNumber}",
        "components": "[...] (all)",
        "count": "int"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Placement data for one part or every part on the live board, in the background: footprint, value (comment), library, side and copper layer, position and rotation in mm, its extent (box, wMm, hMm: every footprint primitive but text), pad count, the nets on its pads, part number and whether it has a 3D model.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "designator": "required (U1)",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_component_pins",
      "output": {
        "count": "int",
        "designator": "str",
        "pins": "[{ref,name,key,x,y,sizeX,sizeY,rotation,layer,drill,net,shape}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Every pad of one part with its net, position, layer, size, shape and drill (mm), the same rows fusion_routing_state gives, for one part.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "resolutionMm": "raster step, default 0.25"
      },
      "longRunning": false,
      "name": "fusion_copper_balance",
      "output": {
        "engine": "str",
        "layers": "[{layer, percent, ...}]",
        "pairs": "[{layers, percent, differencePoints, ok}]"
      },
      "statusVerb": null,
      "summary": "Copper per layer and how evenly mirrored layers match (bow and twist through reflow), from the board's tracks, pads and Fusion's pour fills: the shared checks engine (adom-eda-checks) on the live board.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_copper_layers",
      "output": {
        "count": "int",
        "layers": "[{name,id,kind,displayed,primitives}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The board's copper layers in stack order (F.Cu, In1.Cu.., B.Cu) with Fusion's layer id, signal or plane, whether displayed, and primitives on each.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "from": "str",
        "libraryPath": "a .lbr on the Fusion machine",
        "to": "str"
      },
      "longRunning": false,
      "name": "fusion_copy_footprint",
      "output": {
        "from": "str",
        "primitives": "int",
        "to": "str"
      },
      "statusVerb": null,
      "summary": "Duplicate a footprint inside a .lbr under a new name (the standard's copy_footprint), offline and preflighted.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "box": [
          20,
          13,
          30,
          16
        ],
        "dryRun": true,
        "expectDocument": "BQ25792",
        "offset": [
          0,
          -10
        ],
        "refMap": {
          "C12": "C13"
        }
      },
      "input": {
        "box": "[x1, y1, x2, y2] mm (required)",
        "dryRun": "bool",
        "expectDocument": "required: the board's name",
        "keepUnmappedNets": "bool, default false",
        "layers": "[layer]",
        "netMap": "{'SIG': 'SIG2'}",
        "offset": "[dx, dy] mm (required)",
        "refMap": "{'U1': 'U5'}",
        "refPattern": "{from: 'CH1_*', to: 'CH2_*'}",
        "validate": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_copy_routing",
      "output": {
        "clashes": "[{item, at, touches}]",
        "copied": "{tracks, vias}",
        "drc": "{ran, newErrors}",
        "netMap": "{from: to}",
        "pairs": "{ref: ref}",
        "skipped": "[{item, why}]"
      },
      "statusVerb": null,
      "summary": "Copy the tracks and through vias inside a box to an offset (the standard's copy_routing), remapping nets by pairing parts (refMap or refPattern: each source pad's net goes to the partner pad's net), then netMap. A track is copied when both ends are in the box, a via when its centre is. A destination end on another net's copper is refused before anything is drawn (Fusion would ask to join the nets). Read back exactly; with validate (default) Fusion's DRC runs and any new error undoes the copy.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "folderName": "AI-Scratch",
        "projectName": "Main"
      },
      "input": {
        "folderName": "required str",
        "parentPath": "optional str (parent folder path; default the project root)",
        "projectName": "optional str (default the active project)"
      },
      "longRunning": false,
      "name": "fusion_create_cloud_folder",
      "output": {
        "alreadyExisted": "bool (only when it already existed)",
        "folderId": "str",
        "folderName": "str",
        "parentFolder": "str",
        "project": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Create a subfolder in a cloud project through the signed-in Fusion session's Data API (no APS needed). Idempotent: an existing folder of that name is returned with alreadyExisted:true instead of a duplicate. Folder names are matched case-insensitively. For an APS-side create without Fusion running, use fusion_aps_create_folder.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "libraryPath": "C:/libs/new.lbr",
        "name": "SOT-23",
        "pads": "1,-37,-40,24,28,rect,0;2,37,-40,24,28,rect,0;3,0,40,24,28,rect,0"
      },
      "input": {
        "description": "str",
        "dryRun": "bool",
        "footprints": "[{name, pads, ...}]",
        "libraryPath": "a .lbr on the Fusion machine (required; created if missing)",
        "name": "str (required)",
        "pads": "str or list (required)"
      },
      "longRunning": false,
      "name": "fusion_create_footprint",
      "output": {
        "footprints": "[{footprint, pads}]",
        "libraryState": "opened|created"
      },
      "statusVerb": null,
      "summary": "Create a footprint (an EAGLE package) from a pad list in a .lbr, offline (the standard's create_footprint): pads as 'des,x_mil,y_mil,w_mil,h_mil,rect|round,hole_mil;...' (hole 0 = SMD) or [{number, at, sizeMm, shape, drillMm}], with a documentation outline and >NAME/>VALUE. The library is created when the path does not exist; several at once with footprints. Preflighted before writing.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "libraryPath": "C:/Temp/PART.lbr",
        "stepPath": "C:/Temp/PART.step"
      },
      "input": {
        "kicadFootprintPath": "optional str",
        "kicadSymbolPath": "optional str",
        "libraryPath": "optional str (shape A, or output path for B)",
        "name": "optional str",
        "parts": "optional [{package, lbrPath, modelPath}] - THE canonical shape, any count",
        "pinMap": "optional {pinName: padName}",
        "stepPath": "optional str (required for proven)"
      },
      "longRunning": true,
      "name": "fusion_create_library",
      "output": {
        "started": "bool",
        "statusVerb": "str"
      },
      "statusVerb": "fusion_prove_result",
      "summary": "ONE-CALL library creation for web-control (one call = one consent). EVERY LIBRARY IS MULTI-PART - a single-part library is simply parts:[one entry], and there is no separate single-part verb to choose. Pass parts:[{package, lbrPath, modelPath}] for any number of parts; the older {libraryPath, stepPath} shape still works and is normalised into a one-element parts list, so both run the identical code path and the ETA scales with the part count either way. TWO entry shapes: A) {libraryPath, stepPath} - a ready .lbr plus the 3D; B) {kicadSymbolPath, kicadFootprintPath, stepPath, pinMap?} - KiCad sources; needs adom-lbr, which is Linux-container-only by platform rule, so on Windows/Mac boxes shape B refuses IMMEDIATELY (adom_lbr_unavailable, before any staging or Fusion launch - fusion_readiness reports kicadIngest up front). Convert at AUTHORING time in a container and use shape A. pinMap = explicit {pinName: padName} for when pin numbers do not match pad names (BGA-style). Chains convert -> bind 3D -> prove (four evidence frames + verdict) in the BACKGROUND and returns immediately; poll fusion_prove_result (stage narrates; top-level `verdict` proven/not_proven is the score - `stage:done` only means the chain finished). EVERY PART IS PROVED, not just the first: a 10-component library streams 40 evidence frames, FOUR per component (symbol, footprint, 3d, ganged) in assembly order, each tagged with `part` so a front end can group them as they arrive, and `provedParts[]` reports per-part pass/fail. The library is proven only if EVERY part is - one good part does not vouch for nine unchecked ones. On the FINAL fetch pass {inlineFrames:true} to get each evidence frame as a base64 thumbnailDataUrl a browser can render (plain polls return box paths only). The chain closes its library document on success AND failure - batches need no between-part sweeping. stepPath is required for a PROVEN library - no real 3D body without it.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "libraryPath": "C:/libs/new.lbr",
        "name": "LM358",
        "pins": "1,OUTA,right,100,1;2,-INA,left,100,1;3,+INA,left,200,1;8,V+,left,100,0;4,V-,left,200,0"
      },
      "input": {
        "bodyHeightMil": "default 600",
        "bodyWidthMil": "default 800",
        "description": "str",
        "designator": "default U",
        "dryRun": "bool",
        "libraryPath": "a .lbr on the Fusion machine (required; created if missing)",
        "name": "str (required)",
        "pins": "str (required)",
        "symbols": "[{name, pins, ...}]"
      },
      "longRunning": false,
      "name": "fusion_create_symbol",
      "output": {
        "libraryState": "opened|created",
        "symbols": "[{symbol, pins, parts}]"
      },
      "statusVerb": null,
      "summary": "Create a component in a .lbr, offline (the standard's create_symbol): an EAGLE deviceset with one rectangular symbol per part and its pins on the sides asked ('des,name,left|right|top|bottom,offset_mil[,part[,hiddenNet]];...'); part 0 and hidden-net pins go on a power gate placed on request. Pin numbers are kept so set_params {footprint} can join pins to pads.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the design"
      },
      "longRunning": false,
      "name": "fusion_cross_check",
      "output": {
        "boardComponents": "int",
        "matched": "int",
        "onBoardNotOnSheet": "[ref]",
        "onSheetNotOnBoard": "[ref]",
        "schematicComponents": "int"
      },
      "statusVerb": null,
      "summary": "The schematic's designators against the board's (the standard's cross_check): matched, on the sheet only (no board part), on the board only (placed there: logos, holes).",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the design's name (its schematic or board)",
        "path": "sheet number",
        "ref": "'U1'",
        "refs": "['U1','C3']",
        "select": "bool, default false",
        "symbolId": "'U1:G$1'"
      },
      "longRunning": false,
      "name": "fusion_cross_probe",
      "output": {
        "matches": "[{ref, linked, board:{ref,id,side,x,y,rotation}, schematic:{sheet,id,ref,symbol,value}}]",
        "selected": "[ref]",
        "symbolWithoutPart": "[ref]"
      },
      "statusVerb": null,
      "summary": "From a schematic part to the board part linked to it and back (the standard's cross_probe): Fusion links them by designator. Each match gives the board part (side, x, y, turn, package) and the schematic part (sheet, gate id, symbol, value); linked:false when one side is missing; symbolWithoutPart lists schematic parts with no board part. select:true highlights the matches in both editors.",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "nets": {
          "VBUS": 3
        }
      },
      "input": {
        "expectDocument": "required: the board's name",
        "nets": "{net: amps} (required)",
        "tempRiseC": "default 10"
      },
      "longRunning": false,
      "name": "fusion_current_capacity",
      "output": {
        "engine": "str",
        "nets": "[{net, amps, layers: [{layer, narrowestMm, neededMm, ok}], ok}]"
      },
      "statusVerb": null,
      "summary": "Per net and layer, the narrowest copper against the width a current needs (IPC-2221), and the vias a layer change needs: the shared checks engine on the live board.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "fileName": "verbtest-scratch",
        "folderPath": "AI-Scratch",
        "projectName": "Main"
      },
      "input": {
        "fileId": "optional str (lineage urn for a precise delete; lineageUrn is accepted as an alias)",
        "fileName": "required str unless fileId is given (exact name match in one folder)",
        "folderPath": "optional str (default the project root)",
        "projectName": "optional str (default the active project)"
      },
      "longRunning": false,
      "name": "fusion_delete_cloud_file",
      "output": {
        "fileId": "str",
        "fileName": "str",
        "folder": "str",
        "project": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "DESTRUCTIVE: delete ONE cloud file through the signed-in Fusion session's Data API. Looks in exactly one folder (projectName + folderPath, no recursion) for an exact case-insensitive name match, or for the lineage urn when fileId is given (the precise form; prefer it in shared folders). Refuses without fileName or fileId. Large folders time out on the scan; give a precise folderPath. Use fusion_cleanup_cloud_files to delete a LIST of urns with dryRun support.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "captions": "optional bool (default true: one desktop caption per stop)",
        "foreground": "optional bool (default false: background envelope, never steals focus)",
        "mode": "optional str ('tour' = the async showcase; poll fusion_demo_progress {demoId})",
        "preset": "optional str ('electronics' = library import, symbol, footprint, 3D chip, ganged component view, schematic, 2D board, 3D board - the eight-stop showcase; omit for the full tour incl. Data Hub, APS, MCP, exports)",
        "query": "optional str (design to demo; else picked from APS search)",
        "remote": "optional bool (tour mode: show ab's floaty glass PLAY/PAUSE/NEXT/BACK/STOP panel on the desktop; its presses drive the same transport flags as fusion_demo_control, so the dashboard buttons and the remote can be mixed)",
        "stage": "optional str ('skip_aps' to proceed without cloud search)"
      },
      "longRunning": true,
      "name": "fusion_demo",
      "output": {
        "apsSampleSearch": "[{name,project}]",
        "done": "bool",
        "narrate": "str",
        "screenshots": "[{label,path}]",
        "stage": "str",
        "steps": "[str]"
      },
      "statusVerb": "fusion_demo",
      "summary": "FIRST-TIME-USER DEMO in one verb - the thing to run when someone new wants to SEE what this bridge does (HD's installer calls this). Takes them from nothing to a real board: launches Fusion, FINISHES the Autodesk sign-in - it OPENS the sign-in in the user's NATIVE browser IN THE BACKGROUND (never interrupting their work) and returns signinWhere/signinProfile/signinSession so you can tell them exactly where it is waiting, then offer three paths: they finish it, you foreground it, or (with their OK) you drive it. Native browser via ABE/nbrowser_* because that profile is already signed into Autodesk - never pup, which is anonymous, sets up APS cloud search (or explains it if declined) and runs a LIVE sample search so they see 2-second results, then opens an electronics PROJECT and walks SCHEMATIC -> 2D BOARD -> 3D BOARD, screenshotting each view to show them. STAGED + RESUMABLE: every call advances as far as it safely can and returns stage/done/narrate/screenshots plus a _hint with the exact next action; keep calling it until done:true. NEVER leave a first-time user parked on the sign-in screen - that is the failure this verb exists to prevent. See the 'fusion-demo' skill. TOUR MODE: pass {mode:'tour'} for the ASYNC guided ELECTRONICS tour (John, 2026-09-04: Adom is an electronics prototyping company, so the tour shows electronics, never a mechanical part): eight beats over the bundled sample part - the library, the symbol, the footprint, the 3D chip minted from its STEP and bound into the user's hub, then a REAL board from the user's hub (BQ25792, the Adom charger; args.board or args.boardUrn override) in schematic, 2D board and 3D board, falling back to a generated solo board only when the hub has none, and a cloud search; multipart libraries are mentioned in the narration, never shown (a bind is minutes per part). Captions are 32px on one line so they never cover the remote. ab's glass remote (desktop_demo_panel id fusion-tour) drives it: play, pause, next, back, mute, unmute, X = stop, with an instant loopback callback plus a poll backstop, one FIFO for the panel and fusion_demo_control, an ack caption per press; captions narrate every beat and pre-rendered narration audio plays locally (mute is session-only, unmute replays the beat). Every beat is measured before it moves (front, title, painted, stable) and then moves (2D zoom through the add-in, 3D orbit and zoom through Fusion's camera, verified by capture). Returns {demoId, estimatedSec, steps} at once; fusion_demo_progress {demoId} carries step, beatIndex/beatCount, percent, paused, muted, stopping, panel, presses[], captions[], per-step verified/placed/foregrounded/motion, shots[] (one evidence frame per beat), windowsRestored and tourDocsClosed. Fusion is placed on 80% of the primary work area for the show and restored at the end. Pass legacy:true for the previous step-list tour.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "demoId": "tour-abc123",
        "imagesAs": "base64",
        "sinceShot": 3
      },
      "input": {
        "demoId": "required str (from fusion_demo mode:tour; omitted = the single running tour)",
        "imagesAs": "optional str paths|base64|both",
        "sinceShot": "optional int - shots you already received; response windows to the new ones"
      },
      "longRunning": false,
      "name": "fusion_demo_progress",
      "output": {
        "done": "bool",
        "percent": "int",
        "shotCount": "int",
        "shots": "list",
        "step": "str",
        "stepLabel": "str",
        "stepShot": "dict|absent"
      },
      "statusVerb": null,
      "summary": "Poll a running fusion_demo tour: {percent, elapsedSec, estimatedSec, step, stepLabel, done, failed, shots, shotCount, stepShot}. Poll ~1-2.5s and render a REAL progress bar. LIVE EVIDENCE (issue #30): each frame MAY carry stepShot {step, title, image} - a ~640px base64 capture the BRIDGE took at that step's completion, one per step, riding the first frame after it completes (render these during the run; the page should not guess-snap). shots[] streams too: mid-run it carries paths for every completed step; pass imagesAs:base64 + sinceShot:<count you have> to receive only NEW shots fully encoded. done:true = the full gallery (base64 by default). Finished tours are DISK-SNAPSHOTTED, so the final frame stays pollable even across a bridge respawn.",
      "timeoutSeconds": 15
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_describe",
      "output": {
        "success": "bool",
        "verbs": "[{name,summary,input,output,timeoutSeconds,statusVerb,longRunning,example}]"
      },
      "statusVerb": null,
      "summary": "Self-describe every verb the bridge exposes (this list) for ab's Verbs tab + runner. The reply carries `contribute` (source, mirror, issue and PR commands, the fusion-contributing skill); every failing reply carries `_contribute` with the same pointer.",
      "timeoutSeconds": 20
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_detect_layers",
      "output": {
        "copperLayers": "[int]",
        "layerCount": "int"
      },
      "statusVerb": null,
      "summary": "Detect 2-layer vs 4-layer board (ULP + CAM comparison).",
      "timeoutSeconds": 90
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_diagnostics",
      "output": {
        "addin": "{answering, activeDocument}",
        "bridge": "{version, exe, bundledAddin, cacheDir, stateDir}",
        "env": "{name: value}",
        "installs": "{fusionLauncher}",
        "running": "[{pid, image}]",
        "windows": "{mainTitle, needsSignin, licensingDialog, windows}"
      },
      "statusVerb": null,
      "summary": "Facts for a bug report (the standard's diagnostics), read without driving Fusion: the bridge's version, exe, bundled add-in and folders; the Fusion launcher found; Fusion's processes and windows (sign-in or licensing box up); whether the add-in answers and on which document; and the Adom, Fusion and Autodesk environment variables, with the values of any named like a credential never shown.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_action_ledger"
      },
      "longRunning": false,
      "name": "fusion_dialog_log",
      "output": {
        "...": "as fusion_action_ledger",
        "aliasOf": "fusion_action_ledger"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_action_ledger: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "name": "one pair by its name (omit to list)"
      },
      "longRunning": false,
      "name": "fusion_diff_pairs",
      "output": {
        "count": "int",
        "pairs": "[{name, pos, neg, by}]"
      },
      "statusVerb": null,
      "summary": "The board's differential pairs (the standard's diff_pairs), as Fusion keeps them: by the nets' names, two nets that differ only in a final _P/_N, P/N, +/- or DP/DN. Fusion has no pair object, so pos/neg/remove are refused with how to rename the nets instead.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "categories": "optional [str] dialog categories to act on (default: all blocking dialogs)"
      },
      "longRunning": false,
      "name": "fusion_dismiss_blocking_dialogs",
      "output": {
        "count": "int",
        "dialogs": "[...]",
        "dismissed": "[{title, category, answeredWith, closed}]"
      },
      "statusVerb": null,
      "summary": "Detect + classify (and optionally dismiss) blocking Fusion dialogs. Answers every one with the safe button (No/Cancel via WM_CLOSE, never Yes, never focus-stolen). {categories:[...]} narrows the sweep to those categories (e.g. [\"crash_report\"], the launch janitor's scope).",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_dismiss_blocking_dialogs"
      },
      "longRunning": false,
      "name": "fusion_dismiss_dialogs",
      "output": {
        "...": "as fusion_dismiss_blocking_dialogs",
        "aliasOf": "fusion_dismiss_blocking_dialogs"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_dismiss_blocking_dialogs: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "dryRun": true,
        "set": {
          "REVISION": "B"
        }
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "the design",
        "set": "{TITLE: ..., REVISION: ...}"
      },
      "longRunning": false,
      "name": "fusion_doc_params",
      "output": {
        "params": "[{name, value}]",
        "set": "int"
      },
      "statusVerb": null,
      "summary": "Read the schematic's global attributes (Fusion's title-block values), or set them with set: {NAME: value} (the standard's doc_params). Read back; a mismatch undoes the edit.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_document_info",
      "output": {
        "data": "the add-in's reply (openDocuments ...)",
        "kind": "project|schematic|board|library|model|other",
        "modified": "bool",
        "name": "str",
        "path": "Project/folder/name.ext|null",
        "productType": "str",
        "project": "str|null",
        "saved": "bool",
        "success": "bool",
        "version": "int|null"
      },
      "statusVerb": null,
      "summary": "The active document (the standard's document_info): its name, kind (project, schematic, board, library, model), whether it is saved and has unsaved changes, its cloud location, version and project. Read only; opens nothing. The add-in's fields (open documents and the rest) are kept beside them.",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "runId": "1a2b3c"
      },
      "input": {
        "runId": "required str (from fusion_new_electronics_from_eagle)"
      },
      "longRunning": false,
      "name": "fusion_eagle_import_status",
      "output": {
        "documentName": "str",
        "partsExpected": "int",
        "partsPlaced": "int",
        "result": "obj",
        "stage": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "The run record of a background fusion_new_electronics_from_eagle import: stage (started | done | failed), documentName, partsExpected (elements in the .brd), partsPlaced (read back from the board), placed[], and the final result. Poll it every few seconds after the import returned its runId.",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "dryRun": true,
        "libraryPath": "C:/libs/my.lbr",
        "name": "SOIC-8",
        "pads": [
          {
            "number": "1",
            "set": {
              "sizeMm": [
                1.5,
                0.6
              ]
            }
          }
        ]
      },
      "input": {
        "addPads": "[{number, type: smd|thru, at, sizeMm, drillMm?, shape?, layers?, rotation?}]",
        "dryRun": "bool",
        "graphics": "[{layer, mode: append|replace|delete, widthMm?, shapes: [{type: line|arc|rect|circle|poly, ...}]}]",
        "libraryPath": "a .lbr on the Fusion machine (required)",
        "metadata": "{description}",
        "name": "the footprint (required)",
        "pads": "[{number, set?: {sizeMm, at, shape, drillMm, layers, rotation, type, newNumber}, delete?: true}]",
        "renumber": "{map: {'1': 'A1'}} | {sequential: true, start?: 1}"
      },
      "longRunning": false,
      "name": "fusion_edit_footprint",
      "output": {
        "backup": "path",
        "footprint": "as fusion_read_footprint answers it",
        "summary": "{changed, renamed, connectsDropped}"
      },
      "statusVerb": null,
      "summary": "Edit one footprint of a .lbr in place, offline (the standard's edit_footprint): pads changed (size, position, shape, drill, layer, turn, type, number), deleted, added or renumbered (map or sequential), with the devices' connects following a renamed pad and a deleted pad's connects dropped and listed; graphics appended to, replaced on or deleted from a layer (line, arc, rect, circle, poly); the description set. The result must pass the same preflight as fusion_preflight_lbr before it is written; the old file is kept as .bak. 3D models are Fusion cloud links and are refused here.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "edits": [
          {
            "fields": {
              "MPN": "RC0402FR-0710KL"
            },
            "ref": "R5",
            "value": "10k"
          }
        ]
      },
      "input": {
        "dryRun": "bool",
        "edits": "[{ref, value?, newRef?, fields?: {name: value | null}, locked?: bool}] (required)",
        "expectDocument": "required: the board's name",
        "expectedRevision": "optional"
      },
      "longRunning": false,
      "name": "fusion_edit_parts",
      "output": {
        "edited": "[{ref, after: {ref, value, fields, locked}}]",
        "failed": "[{ref, error}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Edit placed parts (the standard's edit_parts): value, designator (newRef), any field (attribute; null removes it) and the lock, each read back. Fusion keeps board and schematic in step, so the edit is in the schematic too. dnp, excludeFromBom, excludeFromPos and mount are attributes on the part (DNP, EXCLUDE_FROM_BOM, EXCLUDE_FROM_POS, MOUNT), which fusion_board_bom, fusion_bom and fusion_export_pos honour; Fusion's own assembly variants and CAM outputs do not read them.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "pours": [
          {
            "clearanceMm": 0.3,
            "layer": 16,
            "net": "GND",
            "thermals": true
          }
        ]
      },
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required",
        "pours": "required [{net, layer, points?, minWidthMm?, clearanceMm?, thermals?, priority?, keepIslands?}]"
      },
      "longRunning": false,
      "name": "fusion_edit_pours",
      "output": {
        "changes": "[{net,layer,width,isolate,thermals,rank,orphans:[before,after],filledMm2:[before,after]}]",
        "revision": "str",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The EDA Bridge Standard's name for fusion_change_pours (marked aliasOf): change existing pours in place, named by id from fusion_pour_state or by net and layer, minimum width, clearance, thermals, rank and orphans, each read back after the refill. A pour's net cannot be moved in place in Fusion (a polygon belongs to its signal): that is refused with what to do instead.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "expectDocument": "the board",
        "expectedRevision": "optional",
        "tracks": "[{id, width?, layer?, start?, end?}] mm (required)"
      },
      "longRunning": false,
      "name": "fusion_edit_tracks",
      "output": {
        "changes": "[{id, before, after}]",
        "results": "[ok|err:...]",
        "revision": "str",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Change given tracks by the id routing_state returns: width, layer, ends (the standard's edit_tracks). Read back: only those tracks may differ, or every change is undone. An end moved at an angle draws the track again and deletes the old one, as Fusion's MOVE would bend it into two segments. Change a track's layer and its ends in two calls.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "x1": 0,
        "x2": 10,
        "y1": 0,
        "y2": 8
      },
      "input": {
        "frameDelayMs": "optional int (default 35)",
        "steps": "optional int (default 16)",
        "x1": "float",
        "x2": "float",
        "y1": "float",
        "y2": "float"
      },
      "longRunning": true,
      "name": "fusion_electron_pan",
      "output": {
        "box": "[...]",
        "output": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Smoothly PAN + zoom the view to frame a board-coordinate box (mm; get part positions from fusion_board_info). Animates from where the view last was.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "command": "set confirm yes;RUN 'C:/tmp/jlcpcb_smta_exporter.ulp' 'C:/tmp/jlc'"
      },
      "input": {
        "command": "required str"
      },
      "longRunning": false,
      "name": "fusion_electron_run",
      "output": {
        "output": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Run an EAGLE/Electron command in the open board (the generic extension point, e.g. RUN <ulp>).",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "name": "U1"
      },
      "input": {
        "name": "str (refdes, e.g. R1)",
        "properties": "optional bool (default true)",
        "x": "optional float",
        "y": "optional float"
      },
      "longRunning": true,
      "name": "fusion_electron_select",
      "output": {
        "deviceInfo": "str",
        "output": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "SELECT a part (by reference designator, or x/y board mm) and surface its properties - the way clicking a part reveals the properties panel. Great for showing life in a recording.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "factor": 3,
        "steps": 20
      },
      "input": {
        "factor": "float (default 2.0)",
        "fit": "optional bool",
        "frameDelayMs": "optional int (default 35)",
        "steps": "optional int (default 16)"
      },
      "longRunning": true,
      "name": "fusion_electron_zoom",
      "output": {
        "output": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Smoothly ZOOM the schematic/2D board for a recording (the whole motion is one call). factor>1 zooms in, <1 out; or fit:true. The loop runs in the add-in with a repaint per frame.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "entity": "Element",
        "fields": [
          "name",
          "x",
          "y",
          "angle"
        ]
      },
      "input": {
        "entity": "required str (class name, with or without the electronics. prefix)",
        "fields": "optional [str] property names to return",
        "filters": "optional [{property, op: eq|lt|gt, value}] (strings: eq only)",
        "limit": "optional int (default 100)",
        "offset": "optional int",
        "source": "optional auto|mcp|board (default auto)"
      },
      "longRunning": false,
      "name": "fusion_electronics_query",
      "output": {
        "count": "int",
        "entity": "str",
        "rows": "[dict]",
        "source": "mcp|board",
        "success": "bool",
        "total": "int"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "TYPED electronics read model: rows for one of Autodesk's 49 electronics entity classes (Element, Signal, Net, Layer, Via, Smd, Wire, Pad, Part, Instance, Pin, Sheet, Package, Library, Error, Variant...) over the ACTIVE electronics document, with filters, field projection and pagination. Served by Autodesk's own MCP electronics_read when its server answers (fusion_mcp_enable turns it on), else by the board_info geometry export for Board/Element/Library/Package/Layer/Signal/Wire/Error (coordinates in mm). `source` names which. Replaces reading board_info XML by hand.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "assembly": true,
        "quantities": [
          5,
          30
        ]
      },
      "input": {
        "assembly": "bool, default false: add an assembly estimate",
        "basicParts": "[ref] parts on the fab's basic list",
        "expectDocument": "required: the board's name",
        "quantities": "[5, 10, 30, 100] (default)"
      },
      "longRunning": false,
      "name": "fusion_estimate_cost",
      "output": {
        "assumptions": "[str]",
        "board": "{sizeMm, layers, thicknessMm, minTrackMm, minGapMm, minDrillMm, holes, smdParts, thtParts, ...}",
        "engine": "str",
        "prices": "[{quantity, board, assembly, total, currency}]",
        "source": "{name, url, read}"
      },
      "statusVerb": null,
      "summary": "The board's numbers a fab quote needs (size, layers, thickness, smallest track, gap and drill, holes, SMD and through-hole parts and joints, unique parts) and a rough price table at the quantities asked, every assumption stated and the price source named with the date it was read: the shared checks engine on the live board.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "command": "Electron.ImmediateRepaint /full"
      },
      "input": {
        "command": "required str",
        "expectDocument": "optional str (refuses wrong_document if the active doc does not match)"
      },
      "longRunning": false,
      "name": "fusion_execute_text_command",
      "output": {
        "output": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Run a raw Fusion TEXT COMMAND (app.executeTextCommand) - the escape hatch to Fusion internals (Electron.* electronics commands included). Electron.* commands need an ELECTRONICS document context (schematic/board view active). Guard risky calls with expectDocument.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "format": "stl",
        "outputPath": "C:/out/board.stl"
      },
      "input": {
        "expectDocument": "the design's name",
        "format": "required: stl|obj|glb|3mf|fbx|iges|sat|usdz|f3d|skp|step",
        "outputPath": "required: the file on the Fusion machine",
        "web": "bool (glb): optimized for a web viewer, default true"
      },
      "longRunning": true,
      "name": "fusion_export_3d",
      "output": {
        "bytes": "int",
        "components": "bool (always true: the 3D PCB holds the board and its parts)",
        "format": "str",
        "path": "str"
      },
      "statusVerb": null,
      "summary": "The board's 3D model in one format (the standard's export_3d): the design's 3D PCB is brought forward and Fusion's own exporter for the format writes the file. stl, obj, 3mf, fbx, iges, sat, usdz, f3d, skp and step; glb through the same optimizer as fusion_export_optimized_glb (web:false leaves it uncompressed). A format Fusion has no exporter for (vrml, ply, brep, ...) is refused by name, never faked.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/out/part.3mf"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_3mf",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to 3MF mesh.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "dpi": 300,
        "outputPath": "C:/Temp/board-assembly-top.png",
        "preset": "assembly_top"
      },
      "input": {
        "dpi": "optional int (default 300, max 600)",
        "layers": "optional [int] (EAGLE layer numbers; overrides preset)",
        "listPresets": "optional bool (return the presets instead of exporting)",
        "mirror": "optional bool (default false; accepted but not applied by the add-in today, the bottom-side mirror is done container-side)",
        "monochrome": "optional bool (default false)",
        "outputPath": "optional str (WINDOWS path; default C:/tmp/adom-board.png)",
        "preset": "optional str (default all)"
      },
      "longRunning": true,
      "name": "fusion_export_board_image",
      "output": {
        "activeWorkspace": "str",
        "dpi": "int",
        "fileSize": "int",
        "fileSizeKB": "int",
        "monochrome": "bool",
        "nextSteps": "[str]",
        "outputPath": "str",
        "preset": "str (custom when layers given)",
        "presetDescription": "str",
        "presets": "{name: description} (listPresets form only)",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Render the OPEN board (or schematic) to a PNG via EAGLE's EXPORT IMAGE with a layer preset: all, top_copper, bottom_copper, top_silkscreen, bottom_silkscreen, top_soldermask, bottom_soldermask, top_paste, bottom_paste, board_outline, drill, assembly_top, assembly_bottom, fabrication (or explicit EAGLE layer numbers). Requires an electronics editor to be active (fusion_show_2d_board or fusion_open_board first). Silkscreen presets fit the view to the board outline so the PNG maps onto the board bbox. Layer visibility is restored (DISPLAY ALL) afterwards. listPresets:true returns the preset table instead of exporting.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "outputPath": "C:/tmp/bom.csv"
      },
      "input": {
        "grouped": "optional bool (default true)",
        "outputPath": "optional str (default %TEMP%/adom-bom.csv)"
      },
      "longRunning": false,
      "name": "fusion_export_bom",
      "output": {
        "csv": "str (the file's text)",
        "data": "{outputPath, componentCount, uniquePartCount, grouped, withMpn, withLcsc, missingMpn, missingLcsc}",
        "output": "str"
      },
      "statusVerb": null,
      "summary": "Export a Bill of Materials CSV from the open board, in the background: Comment, Designator, Footprint, Quantity, Library (grouped by value, footprint, library and MPN) or one line per part, then each part's MPN, Manufacturer, LCSC, Mouser and DigiKey numbers from its attributes (Adom, LCSC/JLCPCB and SnapEDA attribute names all read; blank when a part has none). Switches to the board itself when the schematic or 3D view is in front.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "format": "step",
        "outputPath": "C:/Temp/TJA1050.step"
      },
      "input": {
        "format": "optional str (default step): step|stl|f3d|iges|sat|smt",
        "outputPath": "required str (WINDOWS path on the Fusion machine)"
      },
      "longRunning": true,
      "name": "fusion_export_cloud_file",
      "output": {
        "documentName": "str",
        "fileSize": "int",
        "format": "str",
        "outputPath": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Export the ACTIVE Fusion Design document to a local file on the Fusion machine in one of step, stl, f3d, iges, sat or smt (despite the name it does not fetch a cloud file by name; open the document first with fusion_open_cloud_file). Requires a Design document to be active. For the per-format verbs with their own timeouts see fusion_export_step and friends; this is the one-verb form with a format switch. Pull the file back with pull_file.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/tmp/cpl.csv"
      },
      "input": {
        "outputPath": "optional str",
        "side": "optional str (all|top|bottom)"
      },
      "longRunning": false,
      "name": "fusion_export_cpl",
      "output": {
        "bottomCount": "int",
        "topCount": "int"
      },
      "statusVerb": null,
      "summary": "Export the Component Placement List (pick-and-place) CSV.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "outputPath": "C:/out/sketch.dwg"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_dwg",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export 2D DWG.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "BQ25792",
        "layers": [
          "Edge.Cuts",
          "F.Cu"
        ]
      },
      "input": {
        "contours": "bool: the outline as closed polylines",
        "expectDocument": "required for the board form: the board's name",
        "layers": "[Edge.Cuts, F.Cu, In1.Cu, B.Cu, F.SilkS, B.SilkS, F.Fab, B.Fab, Dwgs.User or Fusion layer numbers] (the board form)",
        "outputDir": "folder on the Fusion machine (default %TEMP%/adom-dxf)",
        "outputPath": "the mechanical form's .dxf",
        "units": "mm|in, default mm"
      },
      "longRunning": true,
      "name": "fusion_export_dxf",
      "output": {
        "empty": "[layer]",
        "files": "[{layer, path, entities}]",
        "units": "str"
      },
      "statusVerb": null,
      "summary": "Board layers to DXF, one file per layer (the standard's export_dxf), when layers is given: the outline (Edge.Cuts: Dimension and Milling), copper (tracks as polylines carrying their width, arcs, vias, pads, Fusion's pour fill), silkscreen and fab (footprint and board lines, circles, rectangles, polygons, texts the readable way up). DXF R12, mm or inches, the board's origin, y up. Without layers it is Fusion's mechanical DXF of the active design (outputPath).",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "outputPath": "C:/Temp/TJA1050.brd"
      },
      "input": {
        "outputPath": "required str (WINDOWS path ending in .sch or .brd)"
      },
      "longRunning": false,
      "name": "fusion_export_eagle_source",
      "output": {
        "activeDocument": "str",
        "activeWorkspace": "str",
        "format": "str (sch|brd)",
        "innerZipEntry": "str",
        "savedTo": "str",
        "sizeBytes": "int",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Export the ACTIVE electronics document as plain EAGLE XML (.sch or .brd; the outputPath extension picks the format). Fusion's .fsch/.fbrd are ZIP containers with the EAGLE XML inside; this exports the container via Document.CopyToDesktop, extracts the inner XML, writes it to outputPath and deletes the intermediate file. The result opens in standalone EAGLE, imports into KiCad, and parses with any XML tool. The container holds whichever editor is ACTIVE, so since 1.10.35 the bridge switches to it first (Schematic Editor for .sch, PCB Editor for .brd; reply carries switchedView) instead of answering 'No .sch file found inside .fsch ZIP container' (page issue #95).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "outputPath": "C:/out/design.f3d"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_f3d",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export the active design as a Fusion archive (.f3d).",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/out/part.fbx"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_fbx",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to FBX mesh.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "outputDir": "folder on the Fusion machine (default %TEMP%/adom-gencad)"
      },
      "longRunning": false,
      "name": "fusion_export_gencad",
      "output": {
        "components": "int",
        "pads": "int",
        "path": "str",
        "shapes": "int",
        "signals": "int"
      },
      "statusVerb": null,
      "summary": "The board as GenCAD 1.4 (inches, the shared engine's writer) for assembly, test and fixture tools (the standard's export_gencad): outline, pads and padstacks, one shape per footprint with its pins, components (bottom parts mirrored), devices, signals with their nodes, and routes with tracks and vias.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_export_gerbers"
      },
      "longRunning": false,
      "name": "fusion_export_gerber",
      "output": {
        "...": "as fusion_export_gerbers",
        "aliasOf": "fusion_export_gerbers"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_export_gerbers: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "outputDir": "C:/tmp/jlc"
      },
      "input": {
        "outputDir": "optional str (default C:/tmp/adom-gerbers)"
      },
      "longRunning": true,
      "name": "fusion_export_gerbers",
      "output": {
        "fileCount": "int",
        "files": "[{name,size}]",
        "zipPath": "str"
      },
      "statusVerb": null,
      "summary": "Run the bundled JLCPCB CAM job (auto 2/4-layer) to produce the gerber + drill ZIP.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "outputPath": "C:/out/board.iges"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_iges",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to IGES.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "outputDir": "folder on the Fusion machine (default %TEMP%/adom-ipc2581)"
      },
      "longRunning": false,
      "name": "fusion_export_ipc2581",
      "output": {
        "arcs": "int",
        "components": "int (parts with pads)",
        "counts": "{...}",
        "engine": "str",
        "holes": "int",
        "nets": "int",
        "pads": "int",
        "path": "str",
        "pourIslands": "int",
        "traces": "int",
        "vias": "int"
      },
      "statusVerb": null,
      "summary": "The board as IPC-2581 revision C XML (mm), valid against the IPC-2581C schema (the standard's export_ipc2581), written by the shared engine's writer (adom-eda-checks) from Fusion's board model, stack-up and pour fills: layers and stack-up, outline, packages with their pins, components and BOM, nets, and on each copper layer the pads, traces, arcs, vias and the poured copper island by island with its holes, plus the drills. Mode ASSEMBLY: solder mask, paste and silkscreen are not in it (a fab order uses fusion_export_odb).",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "outputDir": "folder on the Fusion machine (default %TEMP%/adom-ipc356)"
      },
      "longRunning": false,
      "name": "fusion_export_ipc356",
      "output": {
        "nets": "int",
        "path": "str",
        "records": "{throughHole, smd}"
      },
      "statusVerb": null,
      "summary": "The board's IPC-D-356A netlist for bare-board electrical test (the standard's export_ipc356): a 317 record per drilled pad and via, a 327 record per SMD pad, with net, position, size, access side and mask, metric (UNITS CUST 1); net names over 14 characters as NNAME aliases.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "outputPath": "C:/Temp/TJA1050.scr"
      },
      "input": {
        "outputPath": "optional str (WINDOWS path for the .scr; default a temp file on the Fusion machine)"
      },
      "longRunning": false,
      "name": "fusion_export_lbr",
      "output": {
        "fileSize": "int",
        "outputPath": "str",
        "preview": "str (first 2000 chars)",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Export the electronics LIBRARY in front as an EAGLE .scr script via Electron.run EXPORT SCRIPT: a text dump of every symbol, package and device, the round-trip check that a library loaded correctly. Requires an electronics editor to be active (fusion_open_lbr puts the library in front). Returns the path, size and the first 2000 characters as a preview; pull the file to read the rest.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "libraryPath": "C:/libs/ADS8588SIPM.fusion.lbr",
        "part": "ADS8588SIPM"
      },
      "input": {
        "footprint": "only this package",
        "libraryPath": "a .lbr on the Fusion machine (required)",
        "outputDir": "default the library's folder",
        "part": "the deviceset's name, or Lib:Name (required)"
      },
      "longRunning": false,
      "name": "fusion_export_library_part",
      "output": {
        "exports": "{symbol, footprint, model, library}",
        "missing": "[model]",
        "models": "[{name, urn, type}]",
        "packages": "[str]",
        "symbols": "[str]"
      },
      "statusVerb": null,
      "summary": "One part of a .lbr into its own small library (the standard's export_library_part): the deviceset with only the symbols its gates use and the packages its devices use (or only one footprint). Offline, no Fusion. A Fusion library holds symbol and footprint together, so both exports name the one file; 3D packages are cloud items, listed by URN.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "formats": [
          "odb",
          "ipc2581"
        ]
      },
      "input": {
        "clean": "bool, default true: empty the folder first",
        "expectDocument": "the board's name (required)",
        "formats": "[odb, ipc2581]",
        "outputDir": "folder (default %TEMP%/adom-manufacturing/<board>)",
        "silkPrep": "bool, default true"
      },
      "longRunning": true,
      "name": "fusion_export_manufacturing",
      "output": {
        "dialogs": "[] (none raised)",
        "elapsedSec": "float",
        "files": "[relative paths]",
        "issues": "[{from, what}]",
        "outputDir": "str",
        "steps": "{silkPrep, gerbers, bom, odb?, ipc2581?}"
      },
      "statusVerb": null,
      "summary": "The manufacturing set in one call, in one folder (the standard's export_manufacturing): silkscreen prep first (silkPrep, default true: designators off the pads), the Gerbers and NC drill from the bundled JLCPCB CAM job (zipped, under gerber/), pick and place in CSV mm with JLCPCB's CPL (assembly/), the BOM and its order files (bom/), and with formats ODB++ (.tgz) and IPC-2581 beside them. Every step that fails is named in issues; nothing opens a dialog.",
      "timeoutSeconds": 420
    },
    {
      "example": {
        "outputPath": "C:/out/part.obj"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_obj",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to OBJ mesh.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "compression": "zip"
      },
      "input": {
        "compression": "zip|tgz|none, default zip",
        "expectDocument": "required: the board's name",
        "outputDir": "folder on the Fusion machine (default %TEMP%/adom-odb)"
      },
      "longRunning": false,
      "name": "fusion_export_odb",
      "output": {
        "camJob": "str",
        "files": "int",
        "layers": "[str] (the matrix)",
        "nets": "int",
        "path": "str"
      },
      "statusVerb": null,
      "summary": "The board as ODB++ through Fusion's own exporter (the standard's export_odb): copper, mask, paste, silkscreen, dielectrics, drill and rout, the netlist (eda/data) and the components in one tree, packed as asked. Fusion reports an error after writing the tree; the bridge finds the tree by its matrix, checks it and packs it.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "outputPath": "C:/out/board.glb"
      },
      "input": {
        "async": "bool - RECOMMENDED true: fires the whole export+optimize pipeline in the background and returns {exportId} instantly (the sync form can outlive the relay window on a cold Fusion session); poll fusion_fetch_optimized_glb {exportId}",
        "board": "bool default true (export the EAGLE .brd and send it, for the footprint + symbol JSON)",
        "compress": "draco (default) | quantize | none: none gives a plain GLB that wiki README and widget frames can load (they cannot reach a Draco decoder)",
        "gerbers": "bool default true (Gerber + Excellon from the bundled CAM job as <stem>-fab.zip; false is recorded in export.json)",
        "outputPath": "required str (.glb)",
        "pin": "str medium|large default medium (fallback only: the service reads the size from the MP marker names when they carry one)",
        "silkscreen": "bool default true",
        "wait": "int seconds default 15 (keep under the ~60s relay timeout; re-call fetch until complete)"
      },
      "longRunning": true,
      "name": "fusion_export_optimized_glb",
      "output": {
        "boardPath": "str|null",
        "exportRecordPath": "str|null (export.json beside the outputs)",
        "fabZipPath": "str|null",
        "footprintPath": "str|null",
        "gates": "object",
        "glbPath": "str",
        "jobId": "str",
        "meshesAfter": "int",
        "moleculeAnchored": "bool",
        "pending": "bool",
        "silkscreenApplied": "bool",
        "sizeBytes": "int",
        "symbolPath": "str|null",
        "webGlbPath": "str|null"
      },
      "statusVerb": null,
      "summary": "Fusion board -> wiki-grade optimized GLB. Exports STEP, the EAGLE .brd (board:true) and optional silkscreen and submits them to service-step2glb molecule mode (anchor to MP pins + silk bake + gold pins + join/weld/prune + Draco; with the board it also writes <stem>_footprint.json and <stem>_symbol.json beside the GLB, and <stem>.web.glb when the model is over the wiki inline budget). The reply carries the molecule-publish gates (gates.pinSize/pinSizeSource/footprintApplied/footprintPins/footprintRebase/warnings) and its _hint names any gate that is not met. Every export also writes <stem>-fab.zip (Gerber + mixed-plating Excellon + .gbrjob from the bundled JLCPCB CAM job) and export.json (tool and version, exporter version, every source file with sha256 and role including each file in the zip, and the stackup from the Gerber job), per board-look EXPORTERS.md. Nothing in the STEP or the Gerbers is renamed: ~465KB/~31 draw calls vs a raw ~16MB/~25000 that halts the viewer. Bounded-waits `wait`s (default 90); small boards return complete, big boards return {pending, jobId} - finish with fusion_fetch_optimized_glb. Use for a component page's component.parts.model_3d. STACKUP RULE (John 2026-07-15, see pcb-stackup skill): board bbox = the FR4 body, NEVER the whole assembly (components overhang edges + tower above); each overlay goes at ITS layer's z (copper at FR4-top, silk above mask); copper traces are REAL 35um 3D bodies colored like the FR4 - recolor them + translucent mask in the RAW GLB before optimizing to make routing visible; put the measured stackup table on the board's wiki page. PUBLISH EVERYTHING: a board's wiki page repo must carry EVERY exportable design file (.f3d/.step/.usdz/EAGLE .brd+.sch/Fusion .fbrd+.fsch/gerbers/BOM/CPL/GLBs/renders), not just the 3D - the page exists to share the design.",
      "timeoutSeconds": 200
    },
    {
      "example": {
        "board": true
      },
      "input": {
        "board": "bool",
        "expectDocument": "the design",
        "output": "the .pdf path (default Documents/<design>.pdf)"
      },
      "longRunning": false,
      "name": "fusion_export_pdf",
      "output": {
        "boardPdf": "path|null",
        "outputBytes": "int",
        "pdfPath": "path",
        "sheets": "int"
      },
      "statusVerb": null,
      "summary": "Every sheet of the design as one PDF (the standard's export_pdf), each page Fusion's own render of the sheet; board:true adds the board as a second PDF. Fusion has no assembly or fabrication print outputs.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "fab": "jlcpcb",
        "side": "both"
      },
      "input": {
        "excludeDnp": "bool, default true",
        "expectDocument": "the board's name",
        "fab": "jlcpcb",
        "format": "csv (default) | ascii | gerber (refused)",
        "outputDir": "folder (default %TEMP%/adom-pos)",
        "side": "both (default) | front | back",
        "smdOnly": "bool",
        "units": "mm (default) | in"
      },
      "longRunning": false,
      "name": "fusion_export_pos",
      "output": {
        "dnpLeftOut": "[ref]",
        "files": "[path]",
        "parts": "{front, back}: int per side"
      },
      "statusVerb": null,
      "summary": "The board's pick-and-place file (the standard's export_pos) from its own parts and pads: csv or ascii, mm or in, front, back or both (one file per side), smdOnly (a part with any surface pad), DNP parts of the current variant left out (excludeDnp, default true), and fab:'jlcpcb' for JLCPCB's CPL columns too. Fusion writes no Gerber position file, so format gerber is refused by name.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "outputPath": "C:/out/part.sat"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_sat",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to SAT (ACIS solid).",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/out/part.skp"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_skp",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to SketchUp (.skp).",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/Temp/TJA1050.fbrd"
      },
      "input": {
        "outputPath": "required str (WINDOWS path ending in .fsch, .fbrd or .flbr)"
      },
      "longRunning": false,
      "name": "fusion_export_source",
      "output": {
        "activeDocument": "str",
        "activeWorkspace": "str",
        "format": "str (fsch|fbrd|flbr)",
        "savedTo": "str",
        "sizeBytes": "int",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Export the ACTIVE electronics document in Fusion's native source format via Document.CopyToDesktop: .fbrd (board), .fsch (schematic) or .flbr (library); the outputPath extension picks the format. The container holds whichever editor is ACTIVE, so since 1.10.35 the bridge switches to it first: the Schematic Editor for a .fsch, the PCB Editor for a .fbrd (reply carries switchedView). A .flbr still needs the library open (fusion_open_lbr). For plain EAGLE XML use fusion_export_eagle_source.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the design",
        "outputPath": "the .net to write (default %TEMP%/adom-spice/<design>.net)"
      },
      "longRunning": false,
      "name": "fusion_export_spice",
      "output": {
        "analyses": "[line]",
        "dialect": "ngspice",
        "elements": "int",
        "includes": "[line]",
        "path": "str",
        "unmapped": "[part]"
      },
      "statusVerb": null,
      "summary": "The design's SPICE netlist (the standard's export_spice): EAGLE's own EXPORT SPICENETLIST of the open design's schematic, written on the Fusion machine with no dialog, in ngspice's dialect. Parts with no SPICE mapping come out as comments (unmapped); analyses and includes (.include/.lib/.model/.subckt) are listed.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "outputPath": "C:/out/board.step"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_step",
      "output": {
        "fileSizeKB": "int",
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export the active design to STEP (needs the 3D view).",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/out/part.stl"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_stl",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to STL mesh.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "outputPath": "C:/out/part.usdz"
      },
      "input": {
        "outputPath": "required str"
      },
      "longRunning": true,
      "name": "fusion_export_usdz",
      "output": {
        "format": "str"
      },
      "statusVerb": null,
      "summary": "Export to USDZ (AR / Hydrogen 3D).",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "action": "list|install|remove, default list"
      },
      "longRunning": false,
      "name": "fusion_extensions",
      "output": {
        "count": "int",
        "extensions": "[{id, name, version, kind}]"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "The Fusion add-ins and scripts installed for this user (the standard's extensions). Install and remove are refused: Fusion has no API for them.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "vendor": "jlcpcb"
      },
      "input": {
        "expectDocument": "required: the board's name",
        "fab": "a record instead",
        "limits": "{minTrack, minClearance, ...} mm",
        "process": "optional record process",
        "vendor": "jlcpcb|pcbway|oshpark ... (adom/pcb-design-rules)"
      },
      "longRunning": false,
      "name": "fusion_fab_check",
      "output": {
        "engine": "str",
        "fab": "the record",
        "measured": "{...}",
        "outsideLimits": "[{limit, boardMm, limitMm, at, source}]"
      },
      "statusVerb": null,
      "summary": "The board's smallest features (track, clearance, drill, annular ring, edge clearance, silk...) compared with a fab's limits: vendor names a record in adom/pcb-design-rules (fetched, the one for the board's copper layer count), or pass fab or limits. Each finding names the fab's page and the date it was read. The shared checks engine on the live board.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "jobId": "abc123",
        "outputPath": "C:/out/board.glb"
      },
      "input": {
        "boardSent": "optional bool (whether the job carried a board; decides the footprint gate)",
        "exportId": "str (async form from export_optimized_glb async:true - returns {phase, done, glbPath} instantly per poll)",
        "jobId": "str (service job form)",
        "outputPath": "str (.glb)",
        "wait": "int seconds default 15 (keep under the ~60s relay timeout; re-call fetch until complete)"
      },
      "longRunning": false,
      "name": "fusion_fetch_optimized_glb",
      "output": {
        "footprintPath": "str|null",
        "gates": "object",
        "glbPath": "str",
        "pending": "bool",
        "sizeBytes": "int",
        "status": "str",
        "symbolPath": "str|null",
        "webGlbPath": "str|null"
      },
      "statusVerb": null,
      "summary": "Finish a fusion_export_optimized_glb job: bounded-poll the optimizer by jobId and write the GLB to outputPath when complete. Re-call until status=complete (big boards tessellate a few minutes). No Fusion needed.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "count": 3,
        "near": "IC1",
        "sizeMm": [
          2,
          1.25
        ]
      },
      "input": {
        "at": "[x, y] instead of near",
        "check": "bool",
        "clearanceMm": "number",
        "count": "how many spots",
        "edgeMm": "number",
        "expectDocument": "required: the board's name",
        "near": "a designator to search round",
        "part": "the part to place (its size)",
        "side": "top|bottom",
        "sizeMm": "[w, h] instead of part"
      },
      "longRunning": false,
      "name": "fusion_find_space",
      "output": {
        "bodiesUsed": "bool",
        "engine": "str",
        "overlaps": "[...] (check)",
        "spots": "[{x, y, rotation?, distanceMm}]"
      },
      "statusVerb": null,
      "summary": "Free spots on the board for a part (the standard's find_space), from the shared checks engine on the live board and fusion_bodies: near a part (or at a point), for a part or a size, clear of every other part on that side, of that side's tracks and vias, and inside the outline, nearest first; pour hatch does not block a spot. check:true lists parts that already overlap or leave the outline.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "folder": "C:/libs",
        "query": "LM358"
      },
      "input": {
        "folder": "a folder of .lbr files",
        "kind": "symbol|footprint",
        "libraries": "[paths]",
        "query": "str (required)"
      },
      "longRunning": false,
      "name": "fusion_find_symbol",
      "output": {
        "best": "{name, library, exact}",
        "matches": "[{name, library, exact}]"
      },
      "statusVerb": null,
      "summary": "Find components (or footprints with kind:'footprint') by part of their name across .lbr files, offline (the standard's find_symbol): the exact match first, else the shortest name that contains the query. Fusion keeps no installed-library list a script can read, so name the libraries or a folder.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "body": {
          "l": 4.9,
          "w": 3.9
        },
        "dryRun": true,
        "family": "dual",
        "name": "SOIC-8",
        "padLength": 1.55,
        "padWidth": 0.6,
        "pins": 8,
        "pitch": 1.27,
        "span": 5.4
      },
      "input": {
        "ballPad": "bga mm",
        "body": "{w, l, height?, standoff?}",
        "cols": "bga",
        "courtyard": "margin mm, default 0.25",
        "description": "str",
        "dryRun": "bool",
        "exposedPad": "{w, h, x?, y?, number?}",
        "family": "chip | dual | sot | quad | bga",
        "leftPins": "sot",
        "libraryPath": ".lbr on the Fusion machine (required unless dryRun; created if missing)",
        "missing": "bga ['B2']",
        "name": "str (required)",
        "padLength": "mm, along the lead",
        "padShape": "roundrect | rect | round | oval",
        "padWidth": "mm, along the row",
        "pins": "dual/quad total",
        "pinsPerSideX": "quad",
        "pinsPerSideY": "quad",
        "pitch": "mm",
        "polarized": "chip: pin-1 dot",
        "rightPins": "sot",
        "rows": "bga",
        "silkClearance": "default 0.2",
        "silkWidth": "default 0.15",
        "span": "mm, pad centre to pad centre across the rows",
        "spanY": "quad top-bottom"
      },
      "longRunning": false,
      "name": "fusion_footprint_from_land_pattern",
      "output": {
        "courtyardLines": "int",
        "courtyardMm": "[x0, y0, x1, y1]",
        "engine": "str",
        "fabLines": "int",
        "footprint": "str",
        "padTable": "[[name, x, y, w, h]]",
        "pads": "int",
        "silkLines": "int"
      },
      "statusVerb": null,
      "summary": "A complete footprint from the land pattern a datasheet prints (the standard's footprint_from_land_pattern), laid out by the shared engine and written into a .lbr offline: pads numbered the standard way (chip, dual SOIC/TSSOP/DFN, SOT, quad QFP/QFN, BGA), an exposed pad, the courtyard (tKeepout), silkscreen kept 0.2 mm clear of copper with a pin-1 dot (tPlace), a fab outline with a pin-1 chamfer (tDocu). dryRun returns the pad table only. Preflighted before writing.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "designator": "U1"
      },
      "input": {
        "designator": "str (required)",
        "expectDocument": "required: the board's name"
      },
      "longRunning": false,
      "name": "fusion_footprint_primitives",
      "output": {
        "otherPrimitives": "{kind: n}",
        "pattern": "str",
        "primitives": "[{kind, layerId, ...}]",
        "side": "top|bottom"
      },
      "statusVerb": null,
      "summary": "Geometry of one placed part (the standard's footprint_primitives): its pads (with mask and paste), wires and arcs, and texts, placed on the board in mm and mil with layer ids; other kinds are counted.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "reason": "Showing you the routed board you asked to see"
      },
      "input": {
        "reason": "a sentence of 10 characters or more, written for the person at the PC (required)"
      },
      "longRunning": false,
      "name": "fusion_foreground",
      "output": {
        "hwnd": "int",
        "title": "str",
        "windowEtiquette": "str"
      },
      "statusVerb": null,
      "summary": "Bring Fusion in front of the user (the standard's foreground): the one sanctioned exception to running in the background. The user is told why in a notification and given three seconds before the window comes forward.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "dimensionsMm": {
          "A": 1.75,
          "D": 4.9,
          "E": 6.0,
          "E1": 3.9,
          "e": 1.27,
          "pins": 8
        },
        "family": "soic",
        "marking": "LM358",
        "outputPath": "C:/parts/LM358.step"
      },
      "input": {
        "dimensionsMm": "{A, D, E, E1, b, e, L, D2, E2, pins ...}: pins is the total pin count; D2/E2 the exposed pad (missing ones take the family's defaults)",
        "family": "required: chip|soic|qfn|qfp|sot23|dfn|bga|melf|ecap|crystal|header, or any Fusion generator type (dpak, plcc, dip ...)",
        "generator": "engine (default when the engine makes the family) | fusion",
        "marking": "text on the top face",
        "markingStyle": "raised|engraved",
        "outputPath": "the .step to write (on the Fusion machine)"
      },
      "longRunning": false,
      "name": "fusion_generate_body",
      "output": {
        "bboxMm": "{x, y, z}",
        "bodies": "[{x0,y0,x1,y1,z0,z1}]",
        "dimensionsMm": "every dimension used",
        "engine": "str (engine)",
        "family": "str",
        "generator": "engine (absent when Fusion's generator made it: that reply carries manifest)",
        "manifest": "obj (fusion)",
        "marking": "str|null",
        "stepPath": "str"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's generate_body: a part's 3D body from its family and datasheet dimensions (JEDEC letters A, D, E, E1, b, e, L, D2/E2 for an exposed pad, plus pins, the total pin count), optionally marked on top, written as a STEP on the Fusion machine. The shared writer (adom-eda-checks) makes chip, soic, qfn, qfp, sot23, dfn, bga, melf, ecap, crystal and header without Fusion; any other family, or generator:fusion, goes to Fusion's own package generator (fusion_generate_package: about 50 families, markings etched as real text), which gets pins converted to its own count.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "etch": "103",
        "outputStep": "C:/tmp/ADOM-R0603-103.step",
        "params": {
          "A": 0.45,
          "D": 1.6,
          "E": 0.8,
          "L": 0.3,
          "L1": 0.3
        },
        "type": "chip"
      },
      "input": {
        "etch": "optional str (marking text on the chip top: MPN / '103'; multi-line with newline, e.g. MPN+variant - laid along the LONGEST face axis)",
        "etchDepthMm": "optional float (marking height/depth, default 0.03)",
        "etchHeightMm": "optional float (text height; default auto-fit: top-5%-band face, 10% margin, width-aware)",
        "etchStyle": "optional str raised|engraved (default raised = thin WHITE positive extrude, silkscreen-style contrast; engraved = sunken cut)",
        "outputStep": "optional str (WINDOWS path; exports STEP incl. the marking)",
        "params": "optional dict (generator dims in MM by default, e.g. chip: {D,E,A,L,L1}; soic: {A,A1,b,D,E,E1,e,L,DPins}; omitted keys use EPG defaults)",
        "type": "required str (EPG family, e.g. chip|soic|qfn|qfp|bga|sot23|dfn2|melf|ecap|crystal|header_straight - see supportedTypes in the error for the full list)",
        "unitsCm": "optional bool (params already EPG-native cm)"
      },
      "longRunning": true,
      "name": "fusion_generate_package",
      "output": {
        "bodies": "[{name,vol}]",
        "epgDir": "str",
        "etched": "str|null",
        "manifest": "obj (settings+why+bboxes; also written as <step>.manifest.json sidecar for marking refreshes)",
        "manifestPath": "str|null",
        "stepPath": "str|null",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Generate an IPC-7351-compliant parametric 3D package via Fusion's BUILT-IN ElectronicsPackageGenerator (EPG) - ~50 package families (chip/soic/qfn/qfp/bga/sot23/dfn/melf/ecap/crystal/headers/...), each a few seconds, ZERO GUI. Optionally LASER-ETCH a marking (MPN / '103') into the body top as REAL cut geometry (survives STEP), and export STEP in the same call - the royalty-free, license-clean path to a whole component library (our own generated output, not vendor models). Proven live: 0603 + '103' etch + STEP in ~2s.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_get_app_state",
      "output": {
        "activeDocument": "str",
        "activeWorkspace": "str",
        "isElectronics": "bool"
      },
      "statusVerb": null,
      "summary": "Current app state: running, active document, workspace, isElectronics. The poll/status verb for long-running calls.",
      "timeoutSeconds": 20
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_get_design_info",
      "output": {
        "bodies": "int",
        "components": "int",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Design-level summary of the active design: components, bodies, sketches, units, root name.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_get_parameters",
      "output": {
        "parameters": "list",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "All user + model parameters of the active design (name, expression, value, unit).",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_get_preferences",
      "output": {
        "current": "obj"
      },
      "statusVerb": null,
      "summary": "Read current Fusion appearance/navigation preferences (theme, activeTheme, invertScrollZoom, orbitScheme, modelingOrientation, gestureNav, cameraPivot, lengthUnit) as friendly values - the same keys fusion_set_preference accepts.",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "maxTopMm": 8,
        "minGapMm": 0.25
      },
      "input": {
        "expectDocument": "required: the board's name",
        "limit": "tallest parts listed, default 25",
        "maxBottomMm": "below the bottom side",
        "maxTopMm": "height limit above the top side",
        "minGapMm": "default 0: collisions only",
        "regions": "[{rect:[x1,y1,x2,y2], maxMm, side?, name?}] lid features"
      },
      "longRunning": false,
      "name": "fusion_height_check",
      "output": {
        "collisions": "[...]",
        "complete": "bool",
        "engine": "str",
        "heights": "[{ref, side, heightMm, rect}]",
        "noBody": "[ref]",
        "ok": "bool",
        "overLimit": "[...]",
        "regionHits": "[...]",
        "tallest": "{top, bottom}",
        "tooClose": "[...]"
      },
      "statusVerb": null,
      "summary": "Will it fit the enclosure (the standard's height_check)? Each part's height from its 3D body (fusion_bodies), the parts over a top or bottom limit or under a lid region, and bodies that collide or come closer than minGapMm: the shared checks engine. Parts without a body are listed in noBody and the answer is complete:false, never a pass for them.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "z0": 50
      },
      "input": {
        "apply": "{scope}",
        "diff": "ohms, differential",
        "expectDocument": "required: the board's name",
        "gapMm": "pair gap",
        "z0": "ohms, single-ended"
      },
      "longRunning": false,
      "name": "fusion_impedance",
      "output": {
        "apply": "plan",
        "engine": "str",
        "layers": "[{layer, model, widthMm, ...}]"
      },
      "statusVerb": null,
      "summary": "The track width (and pair gap) for a target impedance on each copper layer, from the board's stack-up: the shared checks engine. apply:{scope} answers fusion_add_rule arguments (a plan; nothing changes).",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "filePath": "C:/Temp/TJA1050.fbrd"
      },
      "input": {
        "filePath": "required str (WINDOWS path to a .fsch, .fbrd or .flbr; must exist on the Fusion machine)"
      },
      "longRunning": true,
      "name": "fusion_import_electronics",
      "output": {
        "activeDocument": "str",
        "activeWorkspace": "str",
        "extension": "str",
        "filePath": "str",
        "fileType": "str",
        "nextSteps": "[str]",
        "postOpenCheck": "{required, steps}",
        "screenshots": "[{type,savedTo,sizeKB}] (sidecar shell) or postOpenScreenshot (exe shell)",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Import a Fusion-NATIVE electronics file (.fsch schematic, .fbrd board, .flbr library; NOT legacy EAGLE .sch/.brd/.lbr) from the Fusion machine as a NEW local document via Document.newDesignFromLocal. The document is unsaved: fusion_save_to_cloud persists it, fusion_close_document discards it. The bridge captures a post-open screenshot because Fusion can raise a blocking dialog the API cannot see.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true,
        "footprintSpec": "C:/specs/fp.spec",
        "libraryPath": "C:/libs/parts.lbr",
        "params": {
          "MPN": "TPS7A2033"
        },
        "symbolSpec": "C:/specs/sym.spec"
      },
      "input": {
        "comment": "str",
        "description": "str",
        "dryRun": "bool",
        "footprint": "an existing footprint for the symbol when no footprintSpec",
        "footprintSpec": "path or text: META|name|desc PAD|des|x|y|w|h|shape|hole|layer|crpct LINE ARC DISC (mm)",
        "libraryPath": ".lbr on the Fusion machine (pcbLib/schLib accepted: one Fusion library holds both)",
        "mode": "symbol display mode, default 0",
        "params": "{MPN: ...}",
        "step": ".step path (needs a symbol; signed-in Fusion)",
        "symbolSpec": "path or text: META|libref|desc|designator MODE RECT PIN|mode|number|name|x|y|orient|len|hide|etype LINE ARC (mils; x,y the pin's body end)"
      },
      "longRunning": false,
      "name": "fusion_import_part",
      "output": {
        "backup": "path",
        "footprint": "str",
        "steps": "[{build_footprint, padAliases, replaced}, {build_symbol, modesInSpec}, {add_models}, {params}, {add_body, wipUrn}]",
        "symbol": "str"
      },
      "statusVerb": null,
      "summary": "One call imports a whole part (the standard's import_part): the footprint spec and the symbol spec (the same files Altium's bridge takes) become a footprint, a symbol and a component in one .lbr, every pin joined to its pad by number (a repeated pad number becomes N@2... on the same pin), params and comment as attributes, preflighted before writing; a STEP is then minted and bound to the component, dialog-free. Importing again REPLACES the footprint, the symbol and the 3D body. An EAGLE symbol has one look: the spec's mode (default 0) is drawn.",
      "timeoutSeconds": 600
    },
    {
      "example": {
        "at": [
          0,
          0,
          -3
        ],
        "filePath": "C:/mech/enclosure.step"
      },
      "input": {
        "at": "[x, y, z] mm from the board origin, default [0, 0, 0]",
        "expectDocument": "the design's name",
        "filePath": "required str (the STEP on the Fusion machine)",
        "into": "'board' (default) or 'new'",
        "name": "the component's name (default the file's stem)",
        "rotation": "[rx, ry, rz] degrees, default [0, 0, 0]"
      },
      "longRunning": true,
      "name": "fusion_import_step",
      "output": {
        "bboxMm": "[x0, y0, z0, x1, y1, z1]",
        "bodies": "int",
        "documentsOpened": "int (0 when placed with the board)",
        "id": "the occurrence's path",
        "name": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Bring a STEP in as 3D geometry placed with the board (the standard's import_step): the design's 3D PCB is brought forward and the STEP is imported into it as a new component (an enclosure, a bracket, a mating part) at `at` mm and `rotation` degrees from the board origin, so fusion_bodies and fusion_height_check measure the board against it. A STEP that imports nothing leaves no component behind. into:'new' opens the STEP as its own new Fusion design instead (the earlier behaviour). Save the design afterwards to keep it.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "at": [
          5,
          20
        ],
        "dryRun": true,
        "layer": "F.SilkS",
        "svgPath": "C:/art/logo.svg",
        "widthMm": 8
      },
      "input": {
        "anchor": "topleft|center",
        "at": "[x, y] mm (required)",
        "dryRun": "bool",
        "expectDocument": "required: the board's name",
        "layer": "default F.SilkS (B.SilkS, F.Mask, B.Mask, F.Paste, B.Paste, or a non-copper Fusion layer)",
        "mirror": "default true on bottom layers",
        "scale": "default 1 (the SVG's own size)",
        "svg": "the SVG text instead",
        "svgPath": "an .svg on the Fusion machine",
        "toleranceMm": "row height and curve tolerance, default 0.02",
        "widthMm": "the artwork's width"
      },
      "longRunning": false,
      "name": "fusion_import_svg",
      "output": {
        "boxMm": "[x1, y1, x2, y2]",
        "ids": "[id]",
        "rects": "int",
        "shapes": "int",
        "sizeMm": "[w, h]",
        "skipped": "[{element, why}]"
      },
      "statusVerb": null,
      "summary": "Import SVG artwork (a logo, a label) onto the board (the standard's import_svg): paths, rects, circles, ellipses and polygons with their transforms; curves and arcs flattened to toleranceMm; a shape inside another is a hole. Fusion's POLYGON asks for a signal name in a dialog, so the artwork is drawn as rectangles row by row (toleranceMm rows, repeated rows merged). Bottom layers are mirrored so it reads from the back. Read back; if anything else changed, every rectangle is undone. Copper layers are refused: Fusion draws copper shapes as signal pours and asks for the name in a dialog.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "worldSpace": true
      },
      "input": {
        "occurrence": "optional str (substring filter on occurrence name, worldSpace only)",
        "worldSpace": "optional bool (resolve through occurrence transforms; default false = root component only)"
      },
      "longRunning": false,
      "name": "fusion_inspect_bodies",
      "output": {
        "bodies": "[{name,owner,bbox:{x,y,z},sizeMm,volumeMm3,areaMm2,faceCount,cylindricalFaceCount,appearance,material,isVisible}]",
        "bodyCount": "int",
        "documentName": "str",
        "success": "bool",
        "units": "str (mm)"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "GEOMETRY READ-BACK: what actually got built, in MILLIMETRES. Per body: bbox, sizeMm, volumeMm3, areaMm2, faceCount, cylindricalFaceCount, appearance, material, isVisible. Use this to VERIFY your own modelling - a body at the wrong Z (a double-applied offset, a part buried inside another) renders perfectly and is INVISIBLE in a screenshot, and this work is often matte-black parts on a dark canvas where pixels are a weak check. cylindricalFaceCount is the cheap way to confirm holes were actually cut: a symmetric cut that reaches nothing fails SILENTLY with no exception. Pass worldSpace:true to resolve bodies through their occurrence transforms (assembly placement); optionally filter with occurrence. Fusion's API is centimetres - this converts for you.",
      "timeoutSeconds": 130
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_install_fusion"
      },
      "longRunning": false,
      "name": "fusion_install",
      "output": {
        "...": "as fusion_install_fusion",
        "aliasOf": "fusion_install_fusion"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_install_fusion: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {},
      "longRunning": true,
      "name": "fusion_install_fusion",
      "output": {
        "alreadyInstalled": "bool?",
        "installing": "bool",
        "mode": "globalinstall|per-user",
        "statusVerb": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Install Fusion 360 FOR the user - downloads Autodesk's official Client Downloader and streams the free trial silently, with NO shell_execute and NO ab approval gate (runs inside the trusted bridge). Elevation-aware: --globalinstall when admin, PER-USER otherwise (a non-elevated globalinstall dies silently on UAC - learned live). Returns promptly; poll fusion_readiness (reports installing:true) until installed:true, then fusion_start. Declared as detect.installVerb so ab's bridge_readiness recommends it.",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "libraryName": "MyLib",
        "zipPath": "C:/Temp/MyLib.zip"
      },
      "input": {
        "capture": "optional bool (default true: bind + prove; false: place only)",
        "lbrPath": "str (staged .lbr, STEP models beside it)",
        "libraryName": "optional str (default: file stem)",
        "zipPath": "str (staged bundle zip on THIS machine) - or"
      },
      "longRunning": true,
      "name": "fusion_install_library_bundle",
      "output": {
        "fusion": "{installed, running, addinReady, status, message}",
        "installed": "bool",
        "libraryPath": "str",
        "partMetadata": "{ok, summary, warnings[]}",
        "partsToBind": "int",
        "partsTotal": "int",
        "runId": "str",
        "statusVerb": "fusion_prove_result",
        "unbound": "[{package, why}]"
      },
      "statusVerb": "fusion_prove_result",
      "summary": "COMPOSITE, the Fusion twin of kicad_install_library_bundle (#68): ONE call takes a staged Cloud Library bundle (zip of <Lib>.lbr + <Part>.step models, or a bare lbrPath with STEPs beside it), unpacks it safely, places it under ~/Documents/Adom Libraries/<name>/, pairs EVERY deviceset with its STEP by name (deviceset, package, normalised, prefix; a one-part library pairs its single model regardless), lints part numbers (partMetadata: MPN, manufacturer, Mouser/DigiKey/LCSC - reported, never blocking), pre-flights Fusion state (fusion{status}), and starts the same bind -> prove chain fusion_create_library runs. ASYNC BY CONTRACT: returns IMMEDIATELY with runId + statusVerb because a STEP bind is 3-15 minutes and cannot fit a relay window; poll fusion_prove_result (measured percent, four streamed proof frames per part, provedParts[], and an addin_restart_required payload the CALLER turns into the ask). PARTIAL SHIPS: a deviceset with no model is a NAMED skip in unbound[], the rest still bind; partsBound < partsTotal is the signal. Each part is minted on its own single-deviceset library (the Package3D generator loads the FIRST package of the open library, so a merged library would put every chip on part one's footprint), with the STEP placed exactly as published (orient:false, origin trusted), then all urns are bound into the merged library, and after prove the bound library is SAVED TO THE CLOUD under <project>/Adom Libraries so it appears in Fusion's Library Manager (cloudLibrary{saved, fileId, duplicatesBefore} in fusion_prove_result). Per-part scaffolding is deleted; the user is left with one library plus its per-package f3d folder. capture:false only places the files and returns. This is the one contract the wiki CLI (`library install --format fusion`) and the Export button both read; the recipe has one owner.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_instances",
      "output": {
        "count": "int",
        "instances": "[{pid, image, parentPid}]"
      },
      "statusVerb": null,
      "summary": "Every running Fusion (the standard's instances): pid, image and parent of each Fusion process. Fusion runs one instance per user, so verbs drive the one running.",
      "timeoutSeconds": 10
    },
    {
      "example": {},
      "input": {
        "probeMainThread": "optional bool (default true)"
      },
      "longRunning": false,
      "name": "fusion_interactive",
      "output": {
        "activeJobs": "bool|null",
        "addinBusy": "bool",
        "addinUp": "bool",
        "interactive": "bool",
        "mainThreadMs": "int|null"
      },
      "statusVerb": null,
      "summary": "Is Fusion taking input RIGHT NOW? Reads the add-in's busy flag (a long bridge command in flight), Fusion's own hasActiveJobs, and the main thread's latency on a trivial script (probeMainThread:false skips that and costs nothing). interactive:true means drive it; false means a load, a cloud open, or a bind is still running. The guided tour's narrator polls this every 1.5s and stamps fusion-busy / fusion-interactive transitions into the tour record, so a recording can be cut or sped up on them.",
      "timeoutSeconds": 20
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "outputDir": "the order folder (default %TEMP%/JLCPCB order <board>; emptied first)"
      },
      "longRunning": false,
      "name": "fusion_jlcpcb_order",
      "output": {
        "assemblyService": "economic | standard | null",
        "bomFiles": "[path] incl. bom-jlcpcb.csv, cpl-jlcpcb.csv",
        "folder": "path",
        "gerberZip": "{path, files}",
        "issues": "[{from, what, at?}]",
        "orderForm": "{layers, dimensionsMm, outerCopperOz, minTrackSpaceMm, minHoleMm}",
        "ready": "bool: fab fits, an assembly tier passes, no issues"
      },
      "statusVerb": null,
      "summary": "A JLCPCB order in one call (the standard's jlcpcb_order): the board against JLCPCB's fab limits (adom/pcb-design-rules), the Gerbers and drill zipped by the bundled JLCPCB CAM job, the JLCPCB BOM and pick-and-place (CPL), the assembly-tier check and the order-form values (layers, size, outer copper, smallest track/space and hole), in one folder written fresh, with every issue in one list. Fusion has no Silkscreen Preparation: silk goes out as drawn.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "skipCleanClose": "optional bool"
      },
      "longRunning": false,
      "name": "fusion_kill",
      "output": {
        "output": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Force-KILL Fusion 360 (taskkill /F) - the desperate path for when fusion_stop cannot close it (stuck modal / wedged process). Closes docs cleanly first when reachable.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_start"
      },
      "longRunning": false,
      "name": "fusion_launch",
      "output": {
        "...": "as fusion_start",
        "aliasOf": "fusion_start"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_start: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_layer_stack",
      "output": {
        "copperLayers": "int",
        "layers": "[{name,layerId,kind:signal|plane,copperUm,dielectricUm?,dk1000?,dielectric:[{kind,um,dk,material}],mid?}]",
        "notes": "[str]",
        "revision": "str",
        "source": "str",
        "totalUm": "num"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The board's stack-up in the background, from Fusion's own Layer Stack Manager data in the board: copper layers top to bottom (F.Cu, In1.Cu, ..., B.Cu) with copper thickness in micrometres, the dielectric below each (thickness, Dk x 1000, prepreg or core, material) and the total board thickness. What impedance, current-capacity and copper-balance checks read. A board with no Layer Stack Manager data falls back to its design rules and says the dielectric constant is unknown. No view switching (fusion_board_stackup is the older 2D/3D read).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_layers",
      "output": {
        "count": "int",
        "layers": "[{id,name,fusionName,kind,displayed,primitives}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The board's layer set: id, name (copper by the standard's names, the rest by Fusion's own: SilkscreenTop, BoardOutline...), kind (copper, silkscreen, mask, paste, outline, drill, keepout, documentation), whether it is displayed, and how many primitives it carries.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_layers_in_use",
      "output": {
        "copperLayersInUse": "[{layerId,name,primitives}]",
        "layersWithPrimitives": "[{layerId,name,primitives}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Which layers actually carry something: copper layers with copper (most first) and every layer with any primitive (board, footprints on their real side, signals; a via counts on each layer it passes).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "matchTo": "D_N",
        "net": "D_P"
      },
      "input": {
        "expectDocument": "required: the board's name",
        "matchTo": "a net whose length to match instead",
        "maxAmplitudeMm": "number",
        "net": "the net (required)",
        "pitchMm": "number",
        "targetMm": "the length to reach"
      },
      "longRunning": false,
      "name": "fusion_length_tune",
      "output": {
        "addedMm": "number",
        "engine": "str",
        "remove": "fusion_remove_items arguments",
        "revision": "str",
        "routeNet": "fusion_route_net arguments"
      },
      "statusVerb": null,
      "summary": "Plan the lengthening of a routed net (the standard's length_tune), from the shared checks engine: a serpentine in its longest straight track with room beside it, sized to add exactly what targetMm (or matching matchTo) needs, clear of other copper by the board's rule. Answers remove (that one track, fusion_remove_items arguments) and the routeNet that replaces it (fusion_route_net arguments).",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "tab": "private"
      },
      "input": {
        "tab": "optional str hub|public|private (default private)"
      },
      "longRunning": true,
      "name": "fusion_library_manager",
      "output": {
        "hwnd": "int",
        "libraries": "[str] (usually empty - see pitfall)",
        "success": "bool",
        "tab": "str",
        "tableReadable": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Open Fusion's Library Manager and switch to one of its three tabs. Hub Libraries = libraries saved in the Fusion hub (what our bind chain produces, and what Autodesk recommends for sharing). Private Libraries = library.io managed libraries in folders THIS account belongs to. Public Libraries = library.io's public catalogue. PITFALL: the library TABLE is CEF-drawn and exposes NOTHING to UIA, so libraries[] is normally empty and that is not a failure - screenshot the returned hwnd to read the rows.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "libraryPath": "C:/tmp/TJA1050.lbr"
      },
      "input": {
        "libraryPath": "required str (also accepts lbrPath/filePath/path)"
      },
      "longRunning": true,
      "name": "fusion_library_parts",
      "output": {
        "devicesets": "[{name, description, variants:[{fullName, device, technology, package, attributes, missing}]}]",
        "metadataOk": "bool",
        "success": "bool",
        "totals": "{devicesets, variants, withMpn, withDistributor}",
        "warnings": "[]"
      },
      "statusVerb": null,
      "summary": "Every ORDERABLE variant in a .lbr with its part numbers - offline, no Fusion needed. For an EE this is the point of the library: two variants can share ONE symbol, ONE footprint and ONE 3D body and still be different products (an AEC-Q100 automotive part vs the baseline one), and that difference lives ENTIRELY in the metadata. EAGLE spells the orderable identity as deviceset + device + technology: <device> carries the PACKAGE variant, <technology> carries the GRADE/temperature variant, and attributes hang off <technology>. Reports per-variant MPN / MANUFACTURER / MOUSER_PN / DIGIKEY_PN / LCSC_PN (the exact names this bridge's own BOM export reads), plus warnings when variants are indistinguishable, share an MPN, or a deviceset has no description. These warnings never block the library from opening - they say whether an EE could actually order from it.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "libraryPath": "C:/libs/power.lbr",
        "parts": [
          "TPS54202"
        ]
      },
      "input": {
        "libraryPath": "the .lbr on the Fusion machine",
        "parts": "[device set name]",
        "views": "[symbol, footprint, 3d, device] (default all)"
      },
      "longRunning": true,
      "name": "fusion_library_views",
      "output": {
        "aliasOf": "fusion_capture_library_views",
        "captured": "[{package, view, path, ok}]"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's library_views, served by fusion_capture_library_views: pictures of library parts (symbol, footprint, 3D body on the footprint, and the device view mapping pins to pads), each an image file.",
      "timeoutSeconds": 600
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_account"
      },
      "longRunning": false,
      "name": "fusion_license_status",
      "output": {
        "...": "as fusion_account",
        "aliasOf": "fusion_account"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_account: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "libraryPath": "C:/libs/parts.lbr"
      },
      "input": {
        "libraryPath": ".lbr on the Fusion machine (required)",
        "names": "[footprint or component names] (default all)"
      },
      "longRunning": false,
      "name": "fusion_lint_library",
      "output": {
        "checked": "int",
        "engine": "str",
        "errors": "int",
        "findings": "[{name, kind, rule, severity, detail}]",
        "infos": "int",
        "ok": "bool",
        "unread": "[]",
        "warnings": "int"
      },
      "statusVerb": null,
      "summary": "Is this library fit to ship (the standard's lint_library)? A .lbr read offline and judged by the shared checks engine: each footprint's pads (none, zero-size, unnumbered, duplicate numbers), courtyard (tKeepout), silkscreen, 3D package and description, and each component's pins against its footprint's pads, its linked footprint and its MPN. Every problem is a finding with a rule name and a severity.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "projectName": "Main"
      },
      "input": {
        "folderPath": "optional str",
        "projectName": "optional str (defaults to active project)"
      },
      "longRunning": true,
      "name": "fusion_list_cloud_files",
      "output": {
        "files": "list",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "List files/folders in a cloud project (optionally a subfolder).",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {},
      "longRunning": true,
      "name": "fusion_list_cloud_projects",
      "output": {
        "projects": "list",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "List the cloud PROJECTS visible to the signed-in Fusion session (hub walk - slow on big teams; prefer fusion_aps_search for finding files).",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_list_text_commands"
      },
      "longRunning": false,
      "name": "fusion_list_commands",
      "output": {
        "...": "as fusion_list_text_commands",
        "aliasOf": "fusion_list_text_commands"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_list_text_commands: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_list_designators",
      "output": {
        "count": "int",
        "designators": "[str]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Every part designator on the live board, in natural order (C2 before C11).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "projectName": "Default Project"
      },
      "input": {
        "budgetSeconds": "default 150",
        "depth": "folder depth, default 3",
        "projectName": "one project to walk (default: every project)"
      },
      "longRunning": false,
      "name": "fusion_list_installed_libraries",
      "output": {
        "complete": "bool",
        "count": "int",
        "foldersWalked": "int",
        "libraries": "[{name, project, folder, version, id, modified}]"
      },
      "statusVerb": null,
      "summary": "The libraries Fusion offers to place from (the standard's list_installed_libraries): the hub's electronics libraries (.flbr files), which Library Manager's Hub Libraries tab shows and fusion_install_library_bundle saves to. Fusion keeps no local list and draws that tab without UI Automation, so this walks the hub's projects and folders through the signed-in session, breadth first to a depth and within a time budget; complete:false when cut short.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "kind": "pcb",
        "libraryPath": "C:/libs/parts.lbr"
      },
      "input": {
        "kind": "sch (default) | pcb",
        "libraryPath": "the .lbr on the Fusion machine (alias filePath; required)",
        "limit": "int, default 500"
      },
      "longRunning": false,
      "name": "fusion_list_library",
      "output": {
        "data": "{kind, count, names}",
        "kind": "sch | pcb",
        "path": "str",
        "roundtripMs": "int"
      },
      "statusVerb": null,
      "summary": "Names in an EAGLE .lbr, offline (the standard's list_library): kind sch (the components, default) or pcb (the footprints); an EAGLE library holds both.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_list_nets",
      "output": {
        "count": "int",
        "nets": "[{name,pads,tracks,arcs,vias,pours,class}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Every net on the live board with its pad, track, arc, via and pour counts and its net class.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "filter": "Electron"
      },
      "input": {
        "filter": "optional str (substring, case-insensitive; default \"Electron\")"
      },
      "longRunning": false,
      "name": "fusion_list_text_commands",
      "output": {
        "commands": "[str] (first 50 matches)",
        "success": "bool",
        "total": "int"
      },
      "statusVerb": null,
      "summary": "List Fusion's internal TEXT COMMANDS (TextCommands.List) whose name contains filter, case-insensitive; the discovery tool for fusion_execute_text_command. Returns the first 50 matches plus the total count. Works best with an electronics editor active (the Electron.* family is what the default filter finds).",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "action": "frames",
        "since": 0
      },
      "input": {
        "action": "start|stop|status|frames",
        "intervalSec": "optional float (default 1.0)",
        "maxSec": "optional float (default 600)",
        "since": "frames only: return ticks newer than this"
      },
      "longRunning": true,
      "name": "fusion_live_feed",
      "output": {
        "frames": "[{tick, kind:main|popup, path, title, at}]",
        "running": "bool",
        "success": "bool",
        "tick": "int"
      },
      "statusVerb": null,
      "summary": "A ~1 fps look INTO Fusion while the bridge drives it, kept as a BOX-SIDE ring buffer (~10 min). Each tick records the Fusion main window (kind:main - the video) and every owned popup over it (kind:popup - dialogs, Browser/tool panels, the Adom banner; Fusion draws these as separate windows a main capture omits), each a path on this machine tied to its tick. Drain from the container with {action:frames, since:<tick>}, read_file each path, and publish where a human looks - tools/live_feed_drain.py does exactly that into shotlog. Proof frames are NOT here: fusion_prove_result evidence[] carries kind:proof with step labels, so the three kinds are distinguishable at the source. Exists so a human can see open tabs and dialogs during boot or a restart instead of guessing.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "errorsOnly": true,
        "sinceOffset": 0
      },
      "input": {
        "errorsOnly": "bool: only errors, warnings and alert toasts",
        "maxBytes": "int, default 200000",
        "sinceOffset": "int, default 0 (the start of the current log)"
      },
      "longRunning": false,
      "name": "fusion_log_tail",
      "output": {
        "alerts": "[{at,text}]",
        "entries": "[{level: alert|error|warning|info, text}] newest last",
        "lines": "[str]",
        "logFile": "str",
        "next": "int: pass as sinceOffset next time",
        "nextOffset": "int (same as next)",
        "rotated": "bool",
        "truncated": "bool: more was written than maxBytes"
      },
      "statusVerb": null,
      "summary": "What Fusion wrote to its own log since a byte offset (the standard's log_tail): every line, or with errorsOnly only error lines and alert toasts, plus the alerts among them and nextOffset for the next read. Catches a verb that looked successful while Fusion complained: Fusion draws its toasts in CEF, which neither window enumeration nor UI Automation sees. The same reader as fusion_alerts.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "captureLabel": "R_4k7",
        "lbrPath": "C:/tmp/newlib/R_4k7.lbr",
        "modelPath": "C:/tmp/newlib/R_4k7.step"
      },
      "input": {
        "captureLabel": "optional str (capture before/after)",
        "fileName": "optional str",
        "folderId": "optional str (default upload folder)",
        "folderPath": "optional str under that project, created if missing (default Adom AI Workspace); the task subfolder goes under it",
        "lbrPath": "required str (.lbr WINDOWS path; its FIRST package's footprint is loaded)",
        "modelPath": "required str (.step WINDOWS path)",
        "orient": "optional bool (default true). false = import exactly as authored: NO bounding-box reorientation and NO pin-1 rotation (1.10.8)",
        "placement": "optional {translation:[x,y,z] mm, rotation:[rx,ry,rz] deg (about X, then Y, then Z, extrinsic, about the origin), scale:1} from the manufacturer's authored transform. Bypasses every heuristic; the reply returns the applied 4x4 matrix (mm), verification (verified|mismatch), source {path, sha256, bytes} and warnings. Non-finite values, wrong shapes and any scale other than 1 are refused before Fusion is touched (invalid_placement / unsupported_scale)",
        "projectId": "optional str (default MAIN-project)",
        "projectName": "optional str: save the .f3d into this project by name (never the active one; a missing name is refused)"
      },
      "longRunning": true,
      "name": "fusion_make_3d_package",
      "output": {
        "after": "str|null",
        "before": "str|null",
        "dims_mm": "[x,y,z]",
        "f3d": "str",
        "success": "bool",
        "wip_urn": "str"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Create a RENDERING component 3D package (FOOTPRINT + chip, aligned) for ONE part, fully programmatically with ZERO GUI dialogs. Opens the .lbr, runs Electron.Create3DPackage to load the package's footprint into a generator doc, imports the STEP onto it, orients it flat, saveAs an .f3d (skips the FINISH Save dialog + the two unbeatable 'Fusion360' CEF modals), uploads the f3d via APS, and returns an fs.file:vf wip_urn to hand-write into the library's <packages3d>. projectId/folderId default to the MAIN-project upload folder. Pass captureLabel to also get a BEFORE (footprint) + AFTER (chip placed) screenshot. PITFALL: a RAW STEP upload binds but renders NOTHING ('Thumbnail download failed') - this verb makes an f3d, which renders. Prefer fusion_build_library_3d for many parts.",
      "timeoutSeconds": 200
    },
    {
      "example": {
        "devicesets": [
          "VL53L5CX",
          "VL53L7CX",
          "VL53L8CX"
        ],
        "libraryPath": "C:/Users/me/Downloads/Adom_ToF.lbr"
      },
      "input": {
        "devicesets": "optional [str] (default: every deviceset in the library)",
        "libraryPath": "required str (.lbr on the Fusion machine; a component page's .lbr or a merged bundle library)",
        "name": "optional str document name (default <library>-showcase)",
        "silkLabels": "optional bool (default true): the part name on layer 21 under each footprint"
      },
      "longRunning": true,
      "name": "fusion_make_showcase_project",
      "output": {
        "brdPath": "str",
        "documentName": "str",
        "parts": "[{ref, deviceset, package, symbol}]",
        "partsPlaced": "int (read back from the board)",
        "schPath": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Put a library's parts on a NEW schematic and board to SHOW THEM OFF: every deviceset in the .lbr (or the ones in devicesets[]) placed in a row on a fresh sheet and a fresh board, no nets, with the library's bound 3D urns carried across so the 3D PCB shows the real bodies. Generated as EAGLE source on the box and opened dialog-free (Document.newDesignFromLocal), so nothing touches the user's screen. This is THE verb for 'make a board with these new parts on it'; fusion_make_test_project is the one-part circuit variant. After it: fusion_show_2d_board / fusion_show_3d_board {capture:true}, fusion_schematic {action:\"show\"}, fusion_save_to_cloud. The name of each part is written on the top silkscreen under its footprint (silkLabels:false turns it off); fusion_make_test_project does the same.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "libraryPath": "C:/Temp/IN-S42ATR.lbr"
      },
      "input": {
        "device": "optional str: the DEVICE (package variant) to place, e.g. \"-HV\" (default: the deviceset's first device)",
        "deviceset": "optional str (defaults to the library's first deviceset)",
        "libraryPath": "required str (WINDOWS path .lbr; stage from container first)"
      },
      "longRunning": true,
      "name": "fusion_make_test_project",
      "output": {
        "brdPath": "str",
        "circuit": "str",
        "schPath": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Create a NEW electronics test project FROM SCRATCH around a library part - the Web Control demo's PROJECT button, and the answer to 'a customer only has a component page'. Generates a minimal test circuit server-side (the part + a generated 330R series resistor with VCC/GND stubs on a small board) as real EAGLE .sch/.brd, then imports the pair as a new electronics design. NO cloud, NO sign-in, no pre-existing content. After it, fusion_show_schematic / fusion_show_2d_board / fusion_show_3d_board all work on the result. Wiring uses the deviceset's own connects (first two pins), so 2-terminal parts get a real circuit and big ICs get a structurally-valid integration proof.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "description": "optional str",
        "name": "optional str (defaults to the library's own name)"
      },
      "longRunning": true,
      "name": "fusion_managed_library_create",
      "output": {
        "alerts": "[...]",
        "library": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Create a NEW managed library on library.io FROM the library in front (which must already be saved in a Fusion Hub). Drives MANAGE > LIBRARY.IO > Push, then completes Fusion's Create Managed Library dialog. PITFALL: a managed library created under one Autodesk account is NOT visible to another account until its managed FOLDER is shared on library.io - proven live, so do not assume hub membership shares it.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {
        "name": "optional str (exact library name from the picker; omit to list read-only)",
        "onUpdatePrompt": "optional str cancel|merge|replace (default cancel; replace OVERWRITES the local library)"
      },
      "longRunning": true,
      "name": "fusion_managed_library_link",
      "output": {
        "alerts": "[...]",
        "linkedTo": "str?",
        "listedOnly": "bool?",
        "managedLibraries": "[{name,type,version,managedFolder,description}]",
        "success": "bool",
        "updatePrompt": "obj?"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Link the library IN FRONT to an existing managed library on library.io. With no name, opens Fusion's Select Managed Library picker, returns its rows as records (name/type/version/managedFolder/description) and CANCELS - a safe read-only listing of what this Autodesk account can reach. With name, selects that row and confirms. SAFETY: after linking, Fusion offers to force-update your library FROM the managed one; 'Replace Local Library' would destroy your parts, so this verb answers CANCEL by default - pass onUpdatePrompt to choose deliberately. A managed library owned by ANOTHER Autodesk account does NOT appear until its managed FOLDER is shared with this account on library.io; being in the same Fusion hub is not enough.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "onUpdatePrompt": "optional str merge|replace|cancel (default merge)"
      },
      "longRunning": true,
      "name": "fusion_managed_library_pull",
      "output": {
        "alerts": "[...]",
        "library": "str",
        "success": "bool",
        "upToDate": "bool",
        "updatePrompt": "obj?"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Pull the newest version FROM library.io into the linked library in front. A pull ends in ONE of two CEF dialogs and BOTH block the add-in until answered: the force-update prompt when content differs (answered MERGE by default, since pull is an explicit request for the managed content - pass onUpdatePrompt:'replace' to overwrite local parts entirely, or 'cancel' to back out), or 'Up to Date' when already current. If neither appears, nothing was pulled and this reports failure rather than a false pass - Fusion greys Pull out on a library that was never linked.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {
        "onConfirm": "optional str create|cancel (default create)"
      },
      "longRunning": true,
      "name": "fusion_managed_library_push",
      "output": {
        "alerts": "[...]",
        "confirmed": "obj",
        "library": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Push a NEW VERSION of the library in front up to its linked managed library on library.io. Clicking the menu item alone does NOT push: Fusion raises a CEF 'Create New Version' confirmation and THAT is what creates the version, so this verb completes it and fails with confirm_missing rather than reporting a false pass. On a library that is not linked yet, Fusion offers Create Managed Library instead and this reports not_linked_yet - use fusion_managed_library_create. NOTE: Library Manager keeps showing the IMPORTED version number after a push, so the row gains an update-available badge instead of incrementing.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {},
      "longRunning": true,
      "name": "fusion_managed_library_unlink",
      "output": {
        "alerts": "[...]",
        "library": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Unlink the library in front from its managed library on library.io. Fusion greys this out on a library that was never linked, so a silent no-op there is expected.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "arguments": {
          "queryType": "summary"
        },
        "tool": "fusion_mcp_read"
      },
      "input": {
        "arguments": "optional obj (per that tool's inputSchema)",
        "timeout": "optional int seconds, default 120",
        "tool": "required str (from fusion_mcp_tools)"
      },
      "longRunning": true,
      "name": "fusion_mcp_call",
      "output": {
        "result": "obj",
        "tool": "str"
      },
      "statusVerb": "fusion_mcp_status",
      "summary": "Call any tool on Autodesk's Fusion MCP server (fusion_mcp_read, fusion_mcp_update, fusion_mcp_execute, fusion_mcp_electronics_read). The bridge handles the MCP streamable-HTTP handshake for you (initialize -> MCP-Session-Id -> notifications/initialized) and re-establishes a dropped session automatically. MCP acts on the ACTIVE Fusion document, so open one first. PREFER a native fusion_* verb when one exists - they are tested here and return richer hints - and reach for MCP for Autodesk's text-to-CAD surface.",
      "timeoutSeconds": 150
    },
    {
      "example": {},
      "input": {},
      "longRunning": true,
      "name": "fusion_mcp_enable",
      "output": {
        "alreadyOn": "bool",
        "enabled": "bool",
        "serverInfo": "obj",
        "steps": "list"
      },
      "statusVerb": "fusion_mcp_status",
      "summary": "Turn Autodesk's Fusion MCP server ON by driving Fusion's Preferences dialog for the user. Autodesk exposes NO API for this toggle, so the UI is the only route: this opens Preferences (Commands.Start PreferencesCommand), expands General, selects API, ticks 'Fusion MCP Server (runs locally on this device)', then clicks Apply and OK. Needs Fusion running; briefly uses the foreground and announces why with an on-screen caption. NEVER ask the user to do this by hand first - do it for them, then tell them it is handled. Note the setting is DISCARDED if Fusion is killed or restarted before Apply is clicked.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "uri": "optional str (omit to list)"
      },
      "longRunning": false,
      "name": "fusion_mcp_resources",
      "output": {
        "count": "int",
        "resources": "[str]",
        "result": "obj"
      },
      "statusVerb": "fusion_mcp_status",
      "summary": "List Autodesk MCP resources, or read one by uri. These are mostly the Electronics entity schemas (resource://mcp.electronics_schema_*) that describe what fusion_mcp_electronics_read can return.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_mcp_status",
      "output": {
        "enabled": "bool",
        "serverInfo": "obj",
        "toolCount": "int",
        "tools": "[{name,description}]"
      },
      "statusVerb": "fusion_mcp_status",
      "summary": "Is Autodesk's Fusion MCP server up, and what does it expose? Autodesk + Anthropic ship a LOCAL MCP server at http://127.0.0.1:27182/mcp exposing Fusion's own text-to-CAD surface (read geometry, execute/update features, read Electronics design data). It binds LOOPBACK on the user's machine and was built for Claude Desktop running there, so a CLOUD AI cannot reach it at all - this bridge runs on that machine and proxies it for you. Returns enabled, serverInfo and the live tool list. OFF by default: if it reports enabled:false, call fusion_mcp_enable and the bridge turns it on for the user.",
      "timeoutSeconds": 45
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_mcp_tools",
      "output": {
        "count": "int",
        "tools": "list"
      },
      "statusVerb": "fusion_mcp_status",
      "summary": "Full tool list from Autodesk's Fusion MCP server INCLUDING input schemas, so you can construct a valid fusion_mcp_call. These are Autodesk's tools, not this bridge's.",
      "timeoutSeconds": 45
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_mech_capabilities",
      "output": {
        "idempotency": "object",
        "operations": {
          "assembly_layout": {
            "description": "Read one scope's parts for planning an assembly order, without changing anything: every visible occurrence directly under the scope occurrence (or the root), each with path, name, component name, grounded, the number of its children and its box (axis-aligned, root space, mm, from its bodies and its children's; null for a part with no bodies), plus the scope component's unsuppressed joints and as-built joints ([partOne, partTwo, \"joint\"|\"asBuilt\"], \"\" for the scope's own geometry) and rigid groups as part paths, frameBodies (bodies of the scope component itself), document and scopeName. Journaled like efficiency_report: the first guarded read after the add-in loads registers every entity of a big assembly and can outlive the relay's 60 s, so follow it with fusion_mech_operation_status. Returns the current target; pass it to ray_cast.",
            "properties": {
              "maxBodies": {
                "description": "Bodies read per part for its box, breadth first through its children (default 200; a body proxy's box costs about 26 ms on a big assembly). A part whose walk stopped there has boxCapped:true.",
                "maximum": 20000,
                "minimum": 1,
                "type": "integer"
              },
              "operationId": {
                "type": "string"
              },
              "scope": {
                "description": "Full path of the occurrence whose parts to list (\"Panel:1\", \"Cell:1+Panel:1\"). Empty or omitted: the root component's.",
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "description": "Optional, as for inspect: the active document must be this one, and the model at revision when one is given. The reply carries the current target either way.",
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "description": "Refuse with stale_revision unless the model is still at this revision (costs the revision digest, about 5 s on a 4,579-occurrence assembly).",
                    "type": "string"
                  }
                },
                "required": [
                  "documentId"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId"
            ],
            "type": "object"
          },
          "assembly_properties": {
            "description": "High-accuracy physical properties of whole root assembly (default) or an exact Component/Occurrence/BRepBody. Returns mass kg, volume mm3, area mm2, center of mass mm, mean density kg/mm3 and definition/instance coordinate scope.",
            "properties": {
              "entity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "bom": {
            "description": "Structured component-definition and instance BOM; quantities by actual identity, root bodies plus nested children; purchased metadata collapses subtrees unless exploded. Physical mass includes all unsuppressed bodies exactly once per instance. Includes exact current active configuration provenance; incomplete configuration scope refuses. Visibility does not remove quantity. Returns the indented structure with item numbers, the flat purchasing list (make/buy, category, cost, mass), the extrusion cut list (and a bar plan with stockLengthMm), the fastener rollup, totals with cost coverage, and warnings for missing data.",
            "properties": {
              "budgetSeconds": {
                "description": "Stop the cloud reads of part numbers and descriptions (about 0.5 s each on a cloud assembly) once the call has run this long (default 40); the rest come back as nativePending, and the next run continues from what this one read.",
                "maximum": 3600,
                "minimum": 5,
                "type": "number"
              },
              "currency": {
                "description": "ISO 4217 code (USD, EUR) for lines with a unit cost and none of their own; default USD.",
                "type": "string"
              },
              "explodePurchased": {
                "type": "boolean"
              },
              "includeLibraries": {
                "description": "Count body-less groups named as a library (\"Vendor library\", a palette of parts kept to copy from). Default false: they are listed in excluded with reason library_group.",
                "type": "boolean"
              },
              "inferKits": {
                "description": "Count an assembly as one bought line when its name reads as a bought product (an imported .stp/STEP translator model, a McMaster number, a vendor note such as \"(vendor STEP)\" or \"(modelled)\", a maker's name) or its children are a circuit board's footprints. Default true. An explicit asPurchased or makeBuy wins, and so does a name that says it is made here (fabricated, 3D printed, machined).",
                "type": "boolean"
              },
              "kerfMm": {
                "description": "Saw kerf per cut in the bar plan; default 3.",
                "maximum": 50,
                "minimum": 0,
                "type": "number"
              },
              "nativeProperties": {
                "description": "Read part numbers and descriptions (default true; cached per component revision). false gives the structure, quantities and metadata attributes in seconds on a big cloud assembly.",
                "type": "boolean"
              },
              "physicalTotals": {
                "description": "Sum mass and volume over every body instance (default true). false skips that walk on a big assembly; per-line unit mass is still read.",
                "type": "boolean"
              },
              "stockLengthMm": {
                "description": "Stock bar length for the cut list's bar plan (first-fit decreasing).",
                "exclusiveMinimum": 0,
                "type": "number"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "bom_export": {
            "description": "Export flat grouped purchasing rows or structured parent/path/depth instance rows and supplier provenance to CSV with exclusive/atomic publication. This external effect is separate from model transactions. Both CSV modes include document/revision and current active configuration table/row provenance.",
            "properties": {
              "budgetSeconds": {
                "description": "As for bom (default 40): rows of components whose part number was left for later have it blank, and the response's nativePending counts them; export again to fill them in.",
                "maximum": 3600,
                "minimum": 5,
                "type": "number"
              },
              "currency": {
                "description": "ISO 4217 code (USD, EUR) for lines with a unit cost and none of their own; default USD.",
                "type": "string"
              },
              "explodePurchased": {
                "type": "boolean"
              },
              "filename": {
                "type": "string"
              },
              "includeLibraries": {
                "description": "Count body-less groups named as a library (\"Vendor library\", a palette of parts kept to copy from). Default false: they are listed in excluded with reason library_group.",
                "type": "boolean"
              },
              "inferKits": {
                "description": "Count an assembly as one bought line when its name reads as a bought product (an imported .stp/STEP translator model, a McMaster number, a vendor note such as \"(vendor STEP)\" or \"(modelled)\", a maker's name) or its children are a circuit board's footprints. Default true. An explicit asPurchased or makeBuy wins, and so does a name that says it is made here (fabricated, 3D printed, machined).",
                "type": "boolean"
              },
              "kerfMm": {
                "description": "Saw kerf per cut in the bar plan; default 3.",
                "maximum": 50,
                "minimum": 0,
                "type": "number"
              },
              "mode": {
                "description": "flat: the purchasing list with make/buy and its reason; structured: one row per instance; indented: item numbers and quantity per parent; cutlist: extrusions by profile and length; fasteners: hardware by part number; wires: each cut wire with gauge, color and length; order: bought lines merged by supplier part number.",
                "enum": [
                  "flat",
                  "structured",
                  "indented",
                  "cutlist",
                  "fasteners",
                  "wires",
                  "order"
                ]
              },
              "nativeProperties": {
                "description": "Read part numbers and descriptions (default true; cached per component revision). false gives the structure, quantities and metadata attributes in seconds on a big cloud assembly.",
                "type": "boolean"
              },
              "overwrite": {
                "type": "boolean"
              },
              "physicalTotals": {
                "description": "Sum mass and volume over every body instance (default true). false skips that walk on a big assembly; per-line unit mass is still read.",
                "type": "boolean"
              },
              "stockLengthMm": {
                "description": "Stock bar length for the cut list's bar plan (first-fit decreasing).",
                "exclusiveMinimum": 0,
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "filename"
            ],
            "type": "object"
          },
          "cad_import": {
            "description": "Import a pre-downloaded local STEP/SAT into a new wrapper component in Hybrid design. Validate optional expected SHA-256, record actual source/hash/supplier metadata, preserve camera, measure model recovery. Does not fetch URLs or create cloud documents. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
            "properties": {
              "asPurchased": {
                "type": "boolean"
              },
              "filename": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "parent": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "provenance": {
                "additionalProperties": false,
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "supplier": {
                    "type": "string"
                  },
                  "supplierPartNumber": {
                    "type": "string"
                  }
                },
                "required": [
                  "supplier",
                  "supplierPartNumber",
                  "sourceUrl"
                ],
                "type": "object"
              },
              "sha256": {
                "type": "string"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "filename",
              "provenance"
            ],
            "type": "object"
          },
          "cam_inspect": {
            "description": "Read the active document's CAM: setups, their operations' toolpath state, warnings and errors, and NC programs.",
            "properties": {},
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "cam_job": {
            "description": "Make a milling job: a setup on the given bodies, with optional stock (relative_box with offsets, fixed_box with a size, or solid stock bodies) and WCS origin (a stock or model box point, or the model origin); then operations in order: face, adaptive2d, pocket2d, contour2d, drill (cycle drill, peck or chip_break), adaptive, pocket_clearing, contour (3D contour), parallel or scallop, each with a tool from a Fusion library chosen by type, description, flutes and nearest diameter, and optional Fusion parameter overrides by name. 2D operations take faces (contour2d: their outside, inside or all loops; pocket2d and adaptive2d: pocket floors), else the outside of the setup bodies' silhouette or the bodies' pocket floors (upward faces below their top). Drill picks the bodies' holes of the drill's diameter unless holeFaces are given. Generates the toolpaths (an operation Fusion leaves untouched gets one more try) and reports every operation's status (generated, empty, error, outdated, suppressed, not_generated), warnings, errors and machining time. With post, writes G-code through a post from Fusion's library (FANUC, Grbl, HAAS - Next Generation Control, ...) into post.folder, named and numbered post.program; it does not post while an operation lacks a valid toolpath. Opens the Manufacture workspace once if the document has no CAM yet, then returns to the user's workspace and says so. Journaled.",
            "properties": {
              "bodies": {
                "items": {
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "type": "string"
              },
              "operationId": {
                "type": "string"
              },
              "operations": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cycle": {
                      "description": "drill: Fusion's drilling (G81), deep-drilling (G83) or chip-breaking (G73) cycle.",
                      "enum": [
                        "drill",
                        "peck",
                        "chip_break"
                      ],
                      "type": "string"
                    },
                    "faces": {
                      "description": "2D geometry: contour2d contours these faces' loops; pocket2d and adaptive2d clear these pocket floors. Without faces: the bodies' silhouette, or their pocket floors.",
                      "items": {
                        "type": "object"
                      },
                      "maxItems": 64,
                      "minItems": 1,
                      "type": "array"
                    },
                    "holeFaces": {
                      "items": {
                        "type": "object"
                      },
                      "maxItems": 512,
                      "type": "array"
                    },
                    "loops": {
                      "description": "contour2d: which loops of each face (or of the silhouette) to contour; outside by default.",
                      "enum": [
                        "outside",
                        "inside",
                        "all"
                      ],
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "parameters": {
                      "type": "object"
                    },
                    "peckDepthMm": {
                      "description": "Peck depth for cycle peck or chip_break.",
                      "exclusiveMinimum": 0,
                      "maximum": 1000,
                      "type": "number"
                    },
                    "strategy": {
                      "enum": [
                        "face",
                        "adaptive2d",
                        "pocket2d",
                        "contour2d",
                        "drill",
                        "adaptive",
                        "pocket_clearing",
                        "contour",
                        "parallel",
                        "scallop"
                      ],
                      "type": "string"
                    },
                    "tool": {
                      "additionalProperties": false,
                      "properties": {
                        "description": {
                          "description": "A substring of the tool's description, case-insensitive.",
                          "type": "string"
                        },
                        "diameterMm": {
                          "exclusiveMinimum": 0,
                          "maximum": 200,
                          "type": "number"
                        },
                        "flutes": {
                          "maximum": 50,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "library": {
                          "description": "milling (default), hole (default for drills), document, or a library name cam_tools lists.",
                          "type": "string"
                        },
                        "type": {
                          "description": "Tool type as Fusion names it: flat end mill, ball end mill, bull nose end mill, drill, chamfer mill, ...",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "strategy"
                  ],
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "post": {
                "additionalProperties": false,
                "properties": {
                  "comment": {
                    "description": "Program comment, written after the program number.",
                    "type": "string"
                  },
                  "folder": {
                    "type": "string"
                  },
                  "machine": {
                    "type": "string"
                  },
                  "program": {
                    "description": "Program name or number, and the file's name (FANUC and HAAS take a number, 1 to 9999).",
                    "type": "string"
                  }
                },
                "required": [
                  "folder"
                ],
                "type": "object"
              },
              "stock": {
                "additionalProperties": false,
                "description": "relative_box (Fusion's default) takes offsetMm sides/top/bottom; fixed_box takes sizeMm [x, y, z]; solid takes stock bodies.",
                "properties": {
                  "bodies": {
                    "items": {
                      "type": "object"
                    },
                    "maxItems": 32,
                    "minItems": 1,
                    "type": "array"
                  },
                  "mode": {
                    "enum": [
                      "relative_box",
                      "fixed_box",
                      "solid"
                    ],
                    "type": "string"
                  },
                  "offsetMm": {
                    "additionalProperties": false,
                    "properties": {
                      "bottom": {
                        "maximum": 1000,
                        "minimum": 0,
                        "type": "number"
                      },
                      "sides": {
                        "maximum": 1000,
                        "minimum": 0,
                        "type": "number"
                      },
                      "top": {
                        "maximum": 1000,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "sizeMm": {
                    "items": {
                      "exclusiveMinimum": 0,
                      "maximum": 10000,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "timeoutSeconds": {
                "maximum": 3600,
                "minimum": 10,
                "type": "number"
              },
              "wcs": {
                "additionalProperties": false,
                "description": "The work coordinate system's origin: a box point of the stock (stock_point) or of the model (model_point), top center by default (top 1 to 4 are the top corners at x-min y-min, x-max y-min, x-min y-max, x-max y-max), or the model origin. The axes stay the model's.",
                "properties": {
                  "origin": {
                    "enum": [
                      "stock_point",
                      "model_point",
                      "model_origin"
                    ],
                    "type": "string"
                  },
                  "point": {
                    "enum": [
                      "top center",
                      "top 1",
                      "top 2",
                      "top 3",
                      "top 4",
                      "top side 1",
                      "top side 2",
                      "top side 3",
                      "top side 4",
                      "center",
                      "middle 1",
                      "middle 2",
                      "middle 3",
                      "middle 4",
                      "middle side 1",
                      "middle side 2",
                      "middle side 3",
                      "middle side 4",
                      "bottom center",
                      "bottom 1",
                      "bottom 2",
                      "bottom 3",
                      "bottom 4",
                      "bottom side 1",
                      "bottom side 2",
                      "bottom side 3",
                      "bottom side 4"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "bodies",
              "operations"
            ],
            "type": "object"
          },
          "cam_tools": {
            "description": "List the tools of one of Fusion's tool libraries, with diameter, corner radius and flute length in mm: library milling or hole (Fusion's metric samples; milling by default), any sample or local library by its name, or document (the tools this document's CAM already uses). Filter by type, description (a substring) and diameter range. Every reply also lists the libraries cam_job can name.",
            "properties": {
              "description": {
                "type": "string"
              },
              "library": {
                "description": "milling, hole, document, or a library name from the reply's libraries (Milling Tools (Inch), a local library, ...).",
                "type": "string"
              },
              "limit": {
                "maximum": 500,
                "minimum": 1,
                "type": "integer"
              },
              "maxDiameterMm": {
                "maximum": 1000,
                "minimum": 0,
                "type": "number"
              },
              "minDiameterMm": {
                "maximum": 1000,
                "minimum": 0,
                "type": "number"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "op"
            ],
            "type": "object"
          },
          "component_create": {
            "description": "Create a native internal component and its first occurrence in a Hybrid design. parent is a component definition; edits to it affect every instance. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
            "properties": {
              "metadata": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "asPurchased": {
                    "type": "boolean"
                  },
                  "category": {
                    "description": "e.g. extrusion, fastener, printed, machined, sheet metal, electronics, cable.",
                    "maxLength": 60,
                    "minLength": 1,
                    "type": "string"
                  },
                  "currency": {
                    "description": "ISO 4217 code such as USD.",
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "excludeFromBom": {
                    "type": "boolean"
                  },
                  "finish": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "leadTimeDays": {
                    "maximum": 3650,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "makeBuy": {
                    "enum": [
                      "make",
                      "buy"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "notes": {
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "partNumber": {
                    "type": "string"
                  },
                  "process": {
                    "description": "How a made part is made: 3D print, laser cut, CNC, bent sheet...",
                    "maxLength": 120,
                    "type": "string"
                  },
                  "revision": {
                    "maxLength": 40,
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "stock": {
                    "description": "The stock a linear part is cut from (2020, 4040, 8020-1010...): the cut list groups by it.",
                    "maxLength": 60,
                    "type": "string"
                  },
                  "supplier": {
                    "type": "string"
                  },
                  "supplierPartNumber": {
                    "type": "string"
                  },
                  "unitCost": {
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "parent": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "name"
            ],
            "type": "object"
          },
          "component_metadata": {
            "description": "Update component-definition name/part number/description and persistent supplier or BOM attributes. Shared occurrences all see this metadata.",
            "properties": {
              "changes": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "asPurchased": {
                    "type": "boolean"
                  },
                  "category": {
                    "description": "e.g. extrusion, fastener, printed, machined, sheet metal, electronics, cable.",
                    "maxLength": 60,
                    "minLength": 1,
                    "type": "string"
                  },
                  "currency": {
                    "description": "ISO 4217 code such as USD.",
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "excludeFromBom": {
                    "type": "boolean"
                  },
                  "finish": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "leadTimeDays": {
                    "maximum": 3650,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "makeBuy": {
                    "enum": [
                      "make",
                      "buy"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "notes": {
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "partNumber": {
                    "type": "string"
                  },
                  "process": {
                    "description": "How a made part is made: 3D print, laser cut, CNC, bent sheet...",
                    "maxLength": 120,
                    "type": "string"
                  },
                  "revision": {
                    "maxLength": 40,
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "stock": {
                    "description": "The stock a linear part is cut from (2020, 4040, 8020-1010...): the cut list groups by it.",
                    "maxLength": 60,
                    "type": "string"
                  },
                  "supplier": {
                    "type": "string"
                  },
                  "supplierPartNumber": {
                    "type": "string"
                  },
                  "unitCost": {
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [],
                "type": "object"
              },
              "component": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "changes"
            ],
            "type": "object"
          },
          "configuration_inspect": {
            "description": "Read the loaded Design configuration graph without activation or recompute: ordinary rows, the separate native reserved test row, all supported typed cells including inactive/test cells, exact controlled-source links and current ordinary row. Unreadable fields and unknown/theme/hierarchical/inserted scopes remain explicit incomplete diagnostics. Configuration lifecycle and configured-design model mutations remain disabled pending native recovery/archive gates.",
            "properties": {},
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "construction_axis": {
            "description": "Create a parametric axis from native references (edge/circular face/two intersecting planes/two distinct points). Root-space external geometry requires exact occurrence context. For cross-component geometry into a non-root target component, creationOccurrence must identify a root-context instance of that target. Returns component-space native axis geometry/health. No direct-only infinite-line or preview snap APIs.",
            "properties": {
              "component": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "creationOccurrence": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "entities": {
                "items": {
                  "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 2,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "edge",
                  "circular_face",
                  "two_planes",
                  "two_points"
                ]
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "type",
              "entities"
            ],
            "type": "object"
          },
          "drawing_create": {
            "description": "Make a 2D drawing of the active design with Fusion's automatic drawing: sheets laid out by Fusion, each with a base view and its projected views (front, top, right), an optional isometric view, a filled title block and automatic dimensions. The design must be saved to the cloud with no unsaved changes (or pass useSavedVersion); the drawing is a new cloud file next to the design, or in folderId, never in a project's root folder. Fusion picks the views' scale for the sheet size; the API cannot set it. Takes about 30 s for a part. Journaled. Follow with drawing_export.",
            "properties": {
              "configuration": {
                "description": "Configuration name for a configured design; the active one by default.",
                "type": "string"
              },
              "content": {
                "description": "Draw every part, or only the visible ones.",
                "enum": [
                  "full",
                  "visible"
                ],
                "type": "string"
              },
              "datum": {
                "description": "Origin for baseline and ordinate dimensions on part sheets.",
                "enum": [
                  "model_origin",
                  "bottom_left",
                  "bottom_right",
                  "top_left",
                  "top_right"
                ],
                "type": "string"
              },
              "dimensions": {
                "description": "Automatic dimension strategy; overall by default, none for views only.",
                "enum": [
                  "none",
                  "overall",
                  "automatic",
                  "baseline",
                  "chain",
                  "ordinate",
                  "symmetric",
                  "symmetric_baseline",
                  "symmetric_ordinate"
                ],
                "type": "string"
              },
              "folderId": {
                "description": "Cloud folder to put the drawing in; the design's folder by default.",
                "type": "string"
              },
              "holeNotes": {
                "enum": [
                  "hole_and_thread",
                  "hole",
                  "thread",
                  "none"
                ],
                "type": "string"
              },
              "name": {
                "description": "Name for the drawing file; Fusion's is '<design> Drawing'.",
                "type": "string"
              },
              "omit": {
                "additionalProperties": false,
                "description": "Parts left out of part sheets: names containing these comma-separated keywords (Bolt,Screw,Nut,Washer by default) and, with fasteners, any part Fusion recognizes as a fastener.",
                "properties": {
                  "fasteners": {
                    "type": "boolean"
                  },
                  "keywords": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "operationId": {
                "type": "string"
              },
              "orientation": {
                "enum": [
                  "landscape",
                  "portrait"
                ],
                "type": "string"
              },
              "sheetSize": {
                "description": "A4 to A0 with iso, A to E with asme; A3 or B by default.",
                "enum": [
                  "A4",
                  "A3",
                  "A2",
                  "A1",
                  "A0",
                  "A",
                  "B",
                  "C",
                  "D",
                  "E"
                ],
                "type": "string"
              },
              "sheets": {
                "additionalProperties": false,
                "description": "Which sheets Fusion makes: the main assembly, subassemblies, one per part (component), sheet metal; levels first or all.",
                "properties": {
                  "assembly": {
                    "type": "boolean"
                  },
                  "components": {
                    "type": "boolean"
                  },
                  "levels": {
                    "enum": [
                      "first",
                      "all"
                    ],
                    "type": "string"
                  },
                  "partsList": {
                    "type": "boolean"
                  },
                  "sheetMetal": {
                    "type": "boolean"
                  },
                  "subassemblies": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "standard": {
                "description": "Drawing standard; iso by default.",
                "enum": [
                  "iso",
                  "asme"
                ],
                "type": "string"
              },
              "style": {
                "enum": [
                  "visible",
                  "visible_and_hidden",
                  "shaded_and_hidden",
                  "shaded"
                ],
                "type": "string"
              },
              "tangentEdges": {
                "enum": [
                  "off",
                  "full",
                  "shortened"
                ],
                "type": "string"
              },
              "units": {
                "description": "mm for iso, in for asme by default.",
                "enum": [
                  "mm",
                  "in"
                ],
                "type": "string"
              },
              "useSavedVersion": {
                "description": "Draw the last saved version even though the design has unsaved changes.",
                "type": "boolean"
              },
              "views": {
                "additionalProperties": false,
                "description": "Base and projected views (default true) and an isometric view beside them (default true).",
                "properties": {
                  "isometric": {
                    "type": "boolean"
                  },
                  "orthographic": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "drawing_export": {
            "description": "Export a drawing made by drawing_create to PDF, DWG and DXF (absolute paths on the PC), staged and published with byte counts and SHA-256. The first call opens the drawing in Fusion and answers drawing_not_ready (retryable, retryAfterSeconds); call again with a new operationId. Never in the call that opens it: an export sent while Fusion's Edit Auto Dimensions command runs on a newly opened drawing blocks Fusion's main thread for 10 minutes. A later call ends that command if it is running, and exports once the sheets read, Fusion runs no command and the drawing engine is idle and quiet. A drawing opened by someone else is refused (drawing_open_elsewhere). DXF holds the active sheet; with a DXF the reply also gives the scale Fusion chose, read from its dimensions. close:true closes the drawing and the design its open brought in. Journaled.",
            "properties": {
              "close": {
                "description": "Close the drawing in Fusion after exporting, with the design its open brought in when that was not open before and is unmodified, and put the previously active document back (default false).",
                "type": "boolean"
              },
              "drawing": {
                "additionalProperties": false,
                "description": "The drawing's cloud file, as drawing_create returned it.",
                "properties": {
                  "fileId": {
                    "type": "string"
                  }
                },
                "required": [
                  "fileId"
                ],
                "type": "object"
              },
              "dwg": {
                "description": "Absolute .dwg path.",
                "type": "string"
              },
              "dwgFormat": {
                "enum": [
                  "autocad",
                  "simplified"
                ],
                "type": "string"
              },
              "dxf": {
                "description": "Absolute .dxf path (the active sheet).",
                "type": "string"
              },
              "dxfSplines": {
                "description": "Keep splines as splines (default true).",
                "type": "boolean"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "type": "boolean"
              },
              "pdf": {
                "description": "Absolute .pdf path; one PDF of every sheet unless pdfSheets.",
                "type": "string"
              },
              "pdfLineWeights": {
                "description": "Print line weights (default true).",
                "type": "boolean"
              },
              "pdfSheets": {
                "description": "Sheets for the PDF, like \"1-3\" or \"1,4\"; every sheet by default.",
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "drawing"
            ],
            "type": "object"
          },
          "drawing_status": {
            "description": "Whether a drawing is open and ready for drawing_export: its sheets read, Fusion's active command, the drawing engine's unfinished commands and how long its log has been quiet, and the sheets with their views. Changes nothing.",
            "properties": {
              "drawing": {
                "additionalProperties": false,
                "description": "The drawing's cloud file, as drawing_create returned it.",
                "properties": {
                  "fileId": {
                    "type": "string"
                  }
                },
                "required": [
                  "fileId"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "drawing"
            ],
            "type": "object"
          },
          "efficiency_report": {
            "description": "Read what makes the design slow to recompute, open and edit, held against the efficiency playbook (skills/fusion-design-efficiency): timeline make-up and health, Position snapshots, Move features, size, repeated definitions made by Paste New, instance-weighted faces, imported history, wires in a parametric design, big sketches, pattern compute options, modeled threads, meshes and empty components. Returns metrics and findings (rule, severity, measured, limit, fix). Read-only and needs no revision digest. It is journaled like bom_export, so a long report on a big design is followed with fusion_mech_operation_status after the relay's 60 s; passes past budgetSeconds are skipped and listed, with complete:false.",
            "properties": {
              "budgetSeconds": {
                "description": "Stop the costly passes after this many seconds (default 120).",
                "maximum": 600,
                "minimum": 5,
                "type": "number"
              },
              "computeTiming": {
                "description": "Also time a full computeAll (slow on big designs; default false).",
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "entity_delete": {
            "description": "Delete sketch geometry or independently deletable timeline features. Model transaction and semantic recovery cover downstream failures; document and external file deletion are excluded.",
            "properties": {
              "entity": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "entity"
            ],
            "type": "object"
          },
          "exploded_preview_create": {
            "description": "Create finite copied solid-BRep presentation graphics in the exact active blank unsaved Design proven by a committed current-session new_design result. Regenerates the guarded source plan; leaves source active. Exclusive session lease, no source moves/visibility writes, no model transaction, automatic document close, render or capture. Live capability and native backend qualification are separate from durable operation receipts.",
            "properties": {
              "creationOperationId": {
                "type": "string"
              },
              "expectedPlanId": {
                "type": "string"
              },
              "planner": {
                "additionalProperties": false,
                "properties": {
                  "playback": {
                    "enum": [
                      "explode",
                      "assemble"
                    ],
                    "type": "string"
                  },
                  "sampleTimes": {
                    "items": {
                      "maximum": 3600,
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 62,
                    "type": "array"
                  },
                  "steps": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "durationSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 3600,
                          "type": "number"
                        },
                        "instruction": {
                          "type": "string"
                        },
                        "moves": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "direction": {
                                "items": {
                                  "maximum": 1000000000.0,
                                  "minimum": -1000000000.0,
                                  "type": "number"
                                },
                                "maxItems": 3,
                                "minItems": 3,
                                "type": "array"
                              },
                              "distance": {
                                "exclusiveMinimum": 0,
                                "maximum": 1000000.0,
                                "type": "number"
                              },
                              "frame": {
                                "enum": [
                                  "world",
                                  "parent",
                                  "local"
                                ],
                                "type": "string"
                              },
                              "occurrence": {
                                "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                                "type": "object"
                              }
                            },
                            "required": [
                              "occurrence",
                              "direction",
                              "distance",
                              "frame"
                            ],
                            "type": "object"
                          },
                          "maxItems": 128,
                          "minItems": 1,
                          "type": "array"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "durationSeconds",
                        "moves"
                      ],
                      "type": "object"
                    },
                    "maxItems": 32,
                    "minItems": 1,
                    "type": "array"
                  },
                  "unit": {
                    "enum": [
                      "mm"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "unit",
                  "steps"
                ],
                "type": "object"
              },
              "sessionId": {
                "type": "string"
              },
              "sourceTarget": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sourceTarget",
              "creationOperationId",
              "expectedPlanId",
              "planner"
            ],
            "type": "object"
          },
          "exploded_preview_dispose": {
            "description": "Delete only the exact retained graphics tree and leave the blank document open for caller. Supports a narrowly proven cleanup after unresolved terminal storage without rewriting that history; no global Undo or close. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
            "properties": {
              "expectedGeneration": {
                "maximum": 1000000000,
                "minimum": 0,
                "type": "integer"
              },
              "previewId": {
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "previewId",
              "expectedGeneration"
            ],
            "type": "object"
          },
          "exploded_preview_inspect": {
            "description": "Main-thread live preview ownership/geometry/history observation. Cached operation receipts do not establish current graphics liveness. Old-session history remains separately readable through mech_operation_status; no native reference adoption or lifecycle repair is provided here.",
            "properties": {
              "previewId": {
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "previewId"
            ],
            "type": "object"
          },
          "exploded_preview_sample": {
            "description": "Apply one server-stored absolute sample to exact-owned graphics; preserve active document. Source must remain unchanged. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
            "properties": {
              "expectedGeneration": {
                "maximum": 1000000000,
                "minimum": 0,
                "type": "integer"
              },
              "previewId": {
                "type": "string"
              },
              "sampleIndex": {
                "maximum": 63,
                "minimum": 0,
                "type": "integer"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "previewId",
              "expectedGeneration",
              "sampleIndex"
            ],
            "type": "object"
          },
          "exploded_preview_show": {
            "description": "Explicitly activate the exact-owned presentation in Fusion; refuse an intervening foreign active document. No OS foreground, camera change or capture. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
            "properties": {
              "expectedGeneration": {
                "maximum": 1000000000,
                "minimum": 0,
                "type": "integer"
              },
              "previewId": {
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "previewId",
              "expectedGeneration"
            ],
            "type": "object"
          },
          "exploded_view_plan": {
            "description": "Read-only source-bound exploded assembly plan. Normalized translation directions in immutable home world/parent/local axes; simultaneous moves within ordered steps. Descendants inherit ancestor translations once, plus own moves. Bounded deterministic sample matrices and exact home reverse endpoint. No native moves, graphics, BOM quantity changes, render/video or storyboard creation. Complete configuration identity required.",
            "properties": {
              "playback": {
                "enum": [
                  "explode",
                  "assemble"
                ],
                "type": "string"
              },
              "sampleTimes": {
                "items": {
                  "maximum": 3600,
                  "minimum": 0,
                  "type": "number"
                },
                "maxItems": 62,
                "type": "array"
              },
              "sessionId": {
                "type": "string"
              },
              "steps": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "durationSeconds": {
                      "exclusiveMinimum": 0,
                      "maximum": 3600,
                      "type": "number"
                    },
                    "instruction": {
                      "type": "string"
                    },
                    "moves": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "direction": {
                            "items": {
                              "maximum": 1000000000.0,
                              "minimum": -1000000000.0,
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 3,
                            "type": "array"
                          },
                          "distance": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000000.0,
                            "type": "number"
                          },
                          "frame": {
                            "enum": [
                              "world",
                              "parent",
                              "local"
                            ],
                            "type": "string"
                          },
                          "occurrence": {
                            "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "occurrence",
                          "direction",
                          "distance",
                          "frame"
                        ],
                        "type": "object"
                      },
                      "maxItems": 128,
                      "minItems": 1,
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "durationSeconds",
                    "moves"
                  ],
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "target",
              "unit",
              "steps"
            ],
            "type": "object"
          },
          "exploded_view_render": {
            "description": "Render an exploded-view animation for operators: play the same steps as exploded_view_plan on the real occurrences, save one viewport image per frame from a fixed camera (fitted to the most exploded state) with joint, sketch and construction glyphs hidden unless glyphs:true, then revert every move and verify each instance is back home and the document state unchanged. Refuses a design with an uncaptured move. Journaled; follow a long render with fusion_mech_operation_status. Returns the frame folder, timed captions from the steps' titles and instructions, and the ffmpeg line that joins the frames into MP4 (Fusion's API has no video export).",
            "properties": {
              "fit": {
                "description": "Fit the camera to the most exploded state first (default true); false keeps the current view.",
                "type": "boolean"
              },
              "folder": {
                "description": "Absolute folder on the PC for frame_00000.png ... (created if missing).",
                "type": "string"
              },
              "fps": {
                "description": "Frames per second (default 24).",
                "maximum": 60,
                "minimum": 1,
                "type": "integer"
              },
              "glyphs": {
                "description": "Keep joint, joint origin, sketch, origin and construction glyphs in the images, as the design shows them (default false: they are hidden through Object Visibility for the capture and every switch is put back; the document is not marked modified).",
                "type": "boolean"
              },
              "height": {
                "description": "Frame height in pixels (default 720).",
                "maximum": 2160,
                "minimum": 240,
                "type": "integer"
              },
              "holdSeconds": {
                "description": "Hold the last pose this long (default 1).",
                "maximum": 30,
                "minimum": 0,
                "type": "number"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "description": "Replace frames already in folder (default false).",
                "type": "boolean"
              },
              "playback": {
                "enum": [
                  "explode",
                  "assemble"
                ],
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "steps": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "durationSeconds": {
                      "exclusiveMinimum": 0,
                      "maximum": 3600,
                      "type": "number"
                    },
                    "instruction": {
                      "type": "string"
                    },
                    "moves": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "direction": {
                            "items": {
                              "maximum": 1000000000.0,
                              "minimum": -1000000000.0,
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 3,
                            "type": "array"
                          },
                          "distance": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000000.0,
                            "type": "number"
                          },
                          "frame": {
                            "enum": [
                              "world",
                              "parent",
                              "local"
                            ],
                            "type": "string"
                          },
                          "occurrence": {
                            "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "occurrence",
                          "direction",
                          "distance",
                          "frame"
                        ],
                        "type": "object"
                      },
                      "maxItems": 128,
                      "minItems": 1,
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "durationSeconds",
                    "moves"
                  ],
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              },
              "width": {
                "description": "Frame width in pixels (default 1280).",
                "maximum": 3840,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "unit",
              "steps",
              "folder"
            ],
            "type": "object"
          },
          "exploded_view_stills": {
            "description": "Step images for assembly instructions, from one fixed orthographic camera, with joint, sketch and construction glyphs hidden unless glyphs:true: per step, in assembly order, the step's parts hovering where they go with earlier steps seated and later steps out of view (before), then seated (after); step_000_after.png shows nothing assembled, so consecutive images differ by exactly the parts that came in. Returns each moved part's box and centre in both images, normalized to the image, and the camera. Moves only the parts whose pose changes, reverts every move, restores the camera and verifies each instance is back home. Up to 64 steps and 2048 moves. Journaled; follow a long run with fusion_mech_operation_status.",
            "properties": {
              "camera": {
                "description": "auto (default): the isometric view that best shows the parts coming in, framing the moved parts seated and exploded; fit: the current view direction, framing them; current: the view as it is. Always orthographic.",
                "enum": [
                  "auto",
                  "fit",
                  "current"
                ],
                "type": "string"
              },
              "context": {
                "description": "auto (default): when every moved part sits in one subassembly, everything outside it is moved out of view in every image (and back afterwards); keep: show the whole design.",
                "enum": [
                  "auto",
                  "keep"
                ],
                "type": "string"
              },
              "folder": {
                "description": "Absolute folder on the PC for step_000_after.png (nothing assembled) and step_NNN_before.png / step_NNN_after.png per step (created if missing).",
                "type": "string"
              },
              "glyphs": {
                "description": "Keep joint, joint origin, sketch, origin and construction glyphs in the images, as the design shows them (default false: they are hidden through Object Visibility for the capture and every switch is put back; the document is not marked modified).",
                "type": "boolean"
              },
              "height": {
                "description": "Frame height in pixels (default 720).",
                "maximum": 2160,
                "minimum": 240,
                "type": "integer"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "description": "Replace step images already in folder (default false).",
                "type": "boolean"
              },
              "sessionId": {
                "type": "string"
              },
              "steps": {
                "description": "Steps in ASSEMBLY order. Each move gives the direction and distance its part comes from (the way it moves out when exploded).",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "instruction": {
                      "type": "string"
                    },
                    "moves": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "direction": {
                            "items": {
                              "maximum": 1000000000.0,
                              "minimum": -1000000000.0,
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 3,
                            "type": "array"
                          },
                          "distance": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000000.0,
                            "type": "number"
                          },
                          "frame": {
                            "enum": [
                              "world",
                              "parent",
                              "local"
                            ],
                            "type": "string"
                          },
                          "occurrence": {
                            "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "occurrence",
                          "direction",
                          "distance",
                          "frame"
                        ],
                        "type": "object"
                      },
                      "maxItems": 2048,
                      "minItems": 1,
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "moves"
                  ],
                  "type": "object"
                },
                "maxItems": 64,
                "minItems": 1,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              },
              "width": {
                "description": "Frame width in pixels (default 1280).",
                "maximum": 3840,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "unit",
              "steps",
              "folder"
            ],
            "type": "object"
          },
          "export": {
            "description": "Export entire design using runtime-checked API. Preflight and unique same-filesystem staging preserve the destination on failure; publish only nonempty verified output. Availability differs by Fusion build. STL numeric coordinates use mm.",
            "properties": {
              "format": {
                "default": "step",
                "enum": [
                  "step",
                  "stl",
                  "3mf",
                  "f3d",
                  "iges",
                  "sat",
                  "smt",
                  "usdz",
                  "fbx",
                  "skp"
                ]
              },
              "outputPath": {
                "type": "string"
              },
              "overwrite": {
                "default": false,
                "type": "boolean"
              },
              "refinement": {
                "default": "medium",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "outputPath"
            ],
            "type": "object"
          },
          "feature_create": {
            "description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit. Rectangular and circular patterns repeat exactly one of bodies, features, faces or occurrences (a component pattern, built in the occurrences' shared parent so the part stays one definition); computeOption is identical (default), optimized or adjust and does not apply to component patterns.",
            "oneOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "direction": {
                    "enum": [
                      "positive",
                      "negative",
                      "symmetric"
                    ]
                  },
                  "distance": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "taper": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "extrude"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles",
                  "distance"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "revolve"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles",
                  "axis",
                  "angle"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "edges": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "radius": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "fillet"
                    ]
                  }
                },
                "required": [
                  "type",
                  "edges",
                  "radius"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "distance": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "edges": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "chamfer"
                    ]
                  }
                },
                "required": [
                  "type",
                  "edges",
                  "distance"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "thickness": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "type": {
                    "enum": [
                      "shell"
                    ]
                  }
                },
                "required": [
                  "type",
                  "faces",
                  "thickness"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "depth": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "diameter": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "points": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "hole"
                    ]
                  }
                },
                "required": [
                  "type",
                  "points",
                  "diameter",
                  "depth",
                  "bodies"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "loft"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "path": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "sweep"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles",
                  "path"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "body": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keepTools": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "tools": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "type": {
                    "enum": [
                      "combine"
                    ]
                  }
                },
                "required": [
                  "type",
                  "body",
                  "tools",
                  "operation"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "extend": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "split"
                    ]
                  }
                },
                "required": [
                  "type",
                  "bodies",
                  "plane"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "origin": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "translation": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "type": {
                    "enum": [
                      "move"
                    ]
                  }
                },
                "required": [
                  "type",
                  "bodies"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "mirror"
                    ]
                  }
                },
                "required": [
                  "type",
                  "bodies",
                  "plane"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "axis2": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "computeOption": {
                    "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",
                    "enum": [
                      "identical",
                      "optimized",
                      "adjust"
                    ]
                  },
                  "count": {
                    "maximum": 1000,
                    "minimum": 2,
                    "type": "integer"
                  },
                  "count2": {
                    "maximum": 1000,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "features": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrences": {
                    "items": {
                      "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "spacing": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "spacing2": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "rectangular_pattern"
                    ]
                  }
                },
                "required": [
                  "type",
                  "axis",
                  "count",
                  "spacing"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "computeOption": {
                    "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",
                    "enum": [
                      "identical",
                      "optimized",
                      "adjust"
                    ]
                  },
                  "count": {
                    "maximum": 1000,
                    "minimum": 2,
                    "type": "integer"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "features": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrences": {
                    "items": {
                      "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "circular_pattern"
                    ]
                  }
                },
                "required": [
                  "type",
                  "axis",
                  "count"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "draft"
                    ]
                  }
                },
                "required": [
                  "type",
                  "faces",
                  "plane",
                  "angle"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "designation": {
                    "type": "string"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "internal": {
                    "type": "boolean"
                  },
                  "modeled": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "threadClass": {
                    "type": "string"
                  },
                  "threadType": {
                    "type": "string"
                  },
                  "type": {
                    "enum": [
                      "thread"
                    ]
                  }
                },
                "required": [
                  "type",
                  "faces",
                  "internal",
                  "threadType",
                  "designation",
                  "threadClass"
                ],
                "type": "object"
              }
            ],
            "properties": {
              "angle": {},
              "axis": {},
              "axis2": {},
              "bodies": {},
              "body": {},
              "component": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "computeOption": {},
              "count": {},
              "count2": {},
              "depth": {},
              "designation": {},
              "diameter": {},
              "direction": {},
              "distance": {},
              "edges": {},
              "extend": {},
              "faces": {},
              "features": {},
              "internal": {},
              "keepTools": {},
              "modeled": {},
              "name": {
                "type": "string"
              },
              "occurrences": {},
              "operation": {},
              "origin": {},
              "path": {},
              "plane": {},
              "points": {},
              "profiles": {},
              "radius": {},
              "spacing": {},
              "spacing2": {},
              "tangentChain": {},
              "taper": {},
              "thickness": {},
              "threadClass": {},
              "threadType": {},
              "tools": {},
              "translation": {},
              "type": {
                "enum": [
                  "extrude",
                  "revolve",
                  "fillet",
                  "chamfer",
                  "shell",
                  "hole",
                  "loft",
                  "sweep",
                  "combine",
                  "split",
                  "move",
                  "mirror",
                  "rectangular_pattern",
                  "circular_pattern",
                  "draft",
                  "thread"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type"
            ],
            "type": "object"
          },
          "feature_edit": {
            "description": "Rename/suppress a feature or change expressions of model parameters whose createdBy is that exact feature; read health and abort on downstream errors.",
            "properties": {
              "feature": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "parameters": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "suppressed": {
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "feature"
            ],
            "type": "object"
          },
          "geometry_query": {
            "description": "Complete body-scoped topology query, no arbitrary first-match selection. selection one (default) refuses zero/multiple matches; many may return empty. Geometry types are exact native types; size ranges inclusive in mm/mm2, near is minimum distance in the explicit frame; direction is outward planar face normal or linear edge tangent. Returned refs retain instance context even for component-space filters. Exceeding maxResults fails rather than truncating.",
            "properties": {
              "body": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "filters": {
                "additionalProperties": false,
                "properties": {
                  "area": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "max": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "min": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "direction": {
                    "additionalProperties": false,
                    "properties": {
                      "orientation": {
                        "enum": [
                          "same",
                          "parallel"
                        ]
                      },
                      "tolerance": {
                        "maximum": 90,
                        "minimum": 0,
                        "type": "number"
                      },
                      "vector": {
                        "items": {
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      }
                    },
                    "required": [
                      "vector"
                    ],
                    "type": "object"
                  },
                  "length": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "max": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "min": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "near": {
                    "additionalProperties": false,
                    "properties": {
                      "point": {
                        "items": {
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "tolerance": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "point",
                      "tolerance"
                    ],
                    "type": "object"
                  },
                  "radius": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "max": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "min": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "Plane",
                      "Cylinder",
                      "Cone",
                      "Sphere",
                      "Torus",
                      "NurbsSurface",
                      "Line3D",
                      "Arc3D",
                      "Circle3D",
                      "Ellipse3D",
                      "EllipticalArc3D",
                      "NurbsCurve3D",
                      "Point3D",
                      "degenerate"
                    ]
                  }
                },
                "required": [],
                "type": "object"
              },
              "kind": {
                "enum": [
                  "faces",
                  "edges",
                  "vertices"
                ]
              },
              "maxResults": {
                "maximum": 1024,
                "minimum": 1,
                "type": "integer"
              },
              "selection": {
                "enum": [
                  "one",
                  "many"
                ]
              },
              "space": {
                "enum": [
                  "root",
                  "component"
                ]
              }
            },
            "required": [
              "op",
              "target",
              "body",
              "kind",
              "space"
            ],
            "type": "object"
          },
          "health": {
            "description": "Read timeline warnings/errors. recompute:true also requires current target revision, sessionId and operationId.",
            "properties": {
              "recompute": {
                "default": false,
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "inspect": {
            "description": "Inspect the active Design without mutation. Returns target identity/revision, native component-space bodies and occurrence transforms, parameters and feature health.",
            "properties": {
              "bodyMetrics": {
                "description": "Read each body's physical properties and bounding box (about 10 ms a body). Default: true for designs of 200 components or fewer.",
                "type": "boolean"
              },
              "componentProperties": {
                "description": "Read each component's part number and description (cloud reads, about 0.6 s each per component on a cloud document). Default: true for 200 components or fewer.",
                "type": "boolean"
              },
              "detail": {
                "description": "target: only the target, document and counts (what a write or a BOM needs), for an assembly too big for a full inspect inside the relay's budget. Default full.",
                "enum": [
                  "full",
                  "target"
                ]
              },
              "health": {
                "description": "Read timeline health (about 22 ms a timeline item). Default: true for timelines of 200 items or fewer; otherwise use op health.",
                "type": "boolean"
              }
            },
            "required": [
              "op"
            ],
            "type": "object"
          },
          "inspect_entity": {
            "properties": {
              "entity": {
                "description": "Exact reference returned by inspect; resolves uniquely with document/revision/type/occurrence guards.",
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "entity"
            ],
            "type": "object"
          },
          "interference": {
            "description": "Analyze root-context occurrences/body proxies; returns overlap volume mm3 or touching. Does not create interference bodies.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 2,
                "type": "array"
              },
              "includeTouching": {
                "type": "boolean"
              },
              "volumeTolerance": {
                "minimum": 0,
                "type": "number"
              }
            },
            "required": [
              "op",
              "target",
              "entities"
            ],
            "type": "object"
          },
          "joint_create": {
            "description": "Create an as-built joint without moving occurrences. Non-rigid motion requires explicit joint geometry; x/y/z are joint-coordinate directions. Limits and drive values use mm/deg. Seven native motion types; ball uses joint Z pitch/X yaw; planar uses native primary slide direction reported on readback. Use regular_joint_create for geometry-solving placement.",
            "oneOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "rigid"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "revolute"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "slideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "slideValue": {
                    "type": "number"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "slider"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "slideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "slideValue": {
                    "type": "number"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "cylindrical"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "slideAxis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "slideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "slideValue": {
                    "type": "number"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "pin_slot"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "primarySlideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "primarySlideValue": {
                    "type": "number"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "secondarySlideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "secondarySlideValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "planar"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "pitchLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "pitchValue": {
                    "type": "number"
                  },
                  "rollLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rollValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "ball"
                    ]
                  },
                  "yawLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "yawValue": {
                    "type": "number"
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              }
            ],
            "properties": {
              "axis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "geometry": {
                "additionalProperties": false,
                "properties": {
                  "entity": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keyPoint": {
                    "enum": [
                      "center",
                      "start",
                      "middle",
                      "end"
                    ]
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "occurrenceOne": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "occurrenceTwo": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "pitchLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "pitchValue": {
                "type": "number"
              },
              "primarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "primarySlideValue": {
                "type": "number"
              },
              "rollLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rollValue": {
                "type": "number"
              },
              "rotationLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rotationValue": {
                "type": "number"
              },
              "secondarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "secondarySlideValue": {
                "type": "number"
              },
              "slideAxis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "slideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "slideValue": {
                "type": "number"
              },
              "suppressed": {
                "type": "boolean"
              },
              "type": {
                "enum": [
                  "rigid",
                  "revolute",
                  "slider",
                  "cylindrical",
                  "pin_slot",
                  "planar",
                  "ball"
                ]
              },
              "yawLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "yawValue": {
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type",
              "occurrenceOne",
              "occurrenceTwo"
            ],
            "type": "object"
          },
          "joint_delete": {
            "description": "Delete one selected Joint or AsBuiltJoint with recovery verification.",
            "properties": {
              "joint": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "joint"
            ],
            "type": "object"
          },
          "joint_edit": {
            "description": "Edit joint name/suppression, enabled limits, rest and drive values; wrong motion type or out-of-limit values fail with recovery. For driven root joints, active motion links must preserve their settings and their partner motion must follow the native ratio; a coupling mismatch aborts.",
            "properties": {
              "joint": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "pitchLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "pitchValue": {
                "type": "number"
              },
              "primarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "primarySlideValue": {
                "type": "number"
              },
              "rollLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rollValue": {
                "type": "number"
              },
              "rotationLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rotationValue": {
                "type": "number"
              },
              "secondarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "secondarySlideValue": {
                "type": "number"
              },
              "slideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "slideValue": {
                "type": "number"
              },
              "suppressed": {
                "type": "boolean"
              },
              "yawLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "yawValue": {
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "joint"
            ],
            "type": "object"
          },
          "joint_origin_create": {
            "description": "Create a native component-definition joint origin from guarded native geometry, with mm offsets/deg angle and optional straight axis references. Child occurrence origin references are exposed by inspect_entity(occurrence).",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "component": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "flipped": {
                "type": "boolean"
              },
              "geometry": {
                "additionalProperties": false,
                "properties": {
                  "edge": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "entity": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keyPoint": {
                    "enum": [
                      "center",
                      "start",
                      "middle",
                      "end"
                    ]
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "offsetX": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetY": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetZ": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "xAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "zAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "geometry"
            ],
            "type": "object"
          },
          "joint_origin_delete": {
            "description": "Delete a native joint origin; unhealthy downstream joints cause transaction rollback.",
            "properties": {
              "origin": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "origin"
            ],
            "type": "object"
          },
          "joint_origin_edit": {
            "description": "Edit a native joint origin definition; rolls before its timeline item and restores the original marker in finally. Recomputes and verifies attachment, axes, offsets, angle, name and flip.",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "flipped": {
                "type": "boolean"
              },
              "geometry": {
                "additionalProperties": false,
                "properties": {
                  "edge": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "entity": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keyPoint": {
                    "enum": [
                      "center",
                      "start",
                      "middle",
                      "end"
                    ]
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "offsetX": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetY": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetZ": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "origin": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "xAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "zAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "origin"
            ],
            "type": "object"
          },
          "material_assign": {
            "description": "Assign a loaded library or document material to an exact native Component/BRepBody; verify material ID readback with model transaction recovery. Query assembly_properties for resulting mass.",
            "properties": {
              "entity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "libraryId": {
                "type": "string"
              },
              "materialId": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "entity",
              "materialId"
            ],
            "type": "object"
          },
          "material_list": {
            "description": "List loaded material libraries and matching materials by stable library/material IDs. Omit libraryId to search the document's materials and then every loaded library; each row names the libraryId material_assign needs (null for the document's own).",
            "properties": {
              "libraryId": {
                "type": "string"
              },
              "limit": {
                "maximum": 1000,
                "minimum": 1,
                "type": "integer"
              },
              "query": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "mcmaster_discover": {
            "description": "Discover Fusion native Insert McMaster-Carr command and requirements in the active design.",
            "properties": {},
            "required": [
              "op"
            ],
            "type": "object"
          },
          "mcmaster_open": {
            "description": "Invoke Fusion native McMaster UI in the targeted Hybrid design. Interactive external operation: completion/insert/cancel stays with Fusion; inspect afterward. Idempotency records launch only.",
            "properties": {},
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "measure": {
            "description": "Native engineering minimum distance or angle in root assembly space. Non-root definition refs require an occurrence context. Distance needs2 entities; angle needs2 lines/planes or3 points (second apex). Returns mm/deg and native witness positions in root mm. witnessValidation identifies native points or native geometry directions used for valid parallel angles with degenerate native points; degenerate point angles and unavailable/inconsistent witnesses fail.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 3,
                "minItems": 2,
                "type": "array"
              },
              "space": {
                "enum": [
                  "root"
                ]
              },
              "type": {
                "enum": [
                  "distance",
                  "angle"
                ]
              }
            },
            "required": [
              "op",
              "target",
              "type",
              "space",
              "entities"
            ],
            "type": "object"
          },
          "motion_link_create": {
            "description": "Create a native motion link between two root-owned joints, or two different motions of jointOne when jointTwo is omitted. Positive ratio magnitudes use mm for translation and deg for rotation; reversed selects opposite direction. Requires the November 2025+ API; no script fallback.",
            "properties": {
              "jointOne": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "jointTwo": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "motionOne": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "motionTwo": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "reversed": {
                "type": "boolean"
              },
              "valueOne": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "valueTwo": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "jointOne",
              "motionOne",
              "motionTwo",
              "valueOne",
              "valueTwo"
            ],
            "type": "object"
          },
          "motion_link_delete": {
            "description": "Delete a root-owned motion link under the same transaction/recovery contract.",
            "properties": {
              "link": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "link"
            ],
            "type": "object"
          },
          "motion_link_edit": {
            "description": "Edit a root-owned motion link ratio, degree-of-freedom pair, direction, name or suppression. Joint membership is immutable; recreate the link to change members. Verify exact joint identities, ratio, flags and health.",
            "properties": {
              "link": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "motionOne": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "motionTwo": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "reversed": {
                "type": "boolean"
              },
              "suppressed": {
                "type": "boolean"
              },
              "valueOne": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "valueTwo": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "link"
            ],
            "type": "object"
          },
          "new_design": {
            "description": "Create an unnamed unsaved parametric hybrid Design; name is retained as requestedName metadata to keep failure recovery free of save dialogs. Optional box dimensions in mm create a driving-parameter fixture. Never edits an existing document.",
            "properties": {
              "box": {
                "additionalProperties": false,
                "properties": {
                  "depth": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  "height": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  "width": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "depth"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId"
            ],
            "type": "object"
          },
          "occurrence_delete": {
            "description": "Delete one selected occurrence through the shared transaction executor.",
            "properties": {
              "occurrence": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "occurrence"
            ],
            "type": "object"
          },
          "occurrence_insert": {
            "description": "Insert another occurrence of an existing definition; independentCopy:true uses Paste New to create a separate definition. Nested placement is in parent component coordinates. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
            "properties": {
              "component": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "independentCopy": {
                "type": "boolean"
              },
              "parent": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "component"
            ],
            "type": "object"
          },
          "occurrence_update": {
            "description": "Set occurrence pose in its assembly context and capture position; explicit grounding/ungrounding. Grounded or constrained transforms fail with recovery.",
            "properties": {
              "grounded": {
                "type": "boolean"
              },
              "groundedToParent": {
                "type": "boolean"
              },
              "method": {
                "description": "How a new transform is kept. auto (default): edit the occurrence's initial position when Fusion allows it (a root-level occurrence without joints or patterns), which adds nothing to the timeline, else capture a Position snapshot. initial_position: refuse rather than capture. capture: always capture a snapshot. The reply's placement says which was used.",
                "enum": [
                  "auto",
                  "initial_position",
                  "capture"
                ],
                "type": "string"
              },
              "occurrence": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "occurrence"
            ],
            "type": "object"
          },
          "parameter_batch": {
            "description": "Atomic sequential create/set/delete parameter edits with one recompute+health gate; delete supports user parameters only. Any failure aborts all edits and reports semantic recovery.",
            "properties": {
              "changes": {
                "items": {
                  "oneOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "action": {
                          "enum": [
                            "create"
                          ]
                        },
                        "comment": {
                          "type": "string"
                        },
                        "expression": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "unit": {
                          "enum": [
                            "mm",
                            "deg",
                            "kg",
                            ""
                          ]
                        }
                      },
                      "required": [
                        "action",
                        "name",
                        "expression",
                        "unit"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "action": {
                          "enum": [
                            "set"
                          ]
                        },
                        "expression": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "action",
                        "name",
                        "expression"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "action": {
                          "enum": [
                            "delete"
                          ]
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "action",
                        "name"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 128,
                "minItems": 1,
                "type": "array"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "changes"
            ],
            "type": "object"
          },
          "parameter_create": {
            "properties": {
              "comment": {
                "type": "string"
              },
              "expression": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "unit": {
                "enum": [
                  "mm",
                  "deg",
                  "kg",
                  ""
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "name",
              "expression",
              "unit"
            ],
            "type": "object"
          },
          "parameter_set": {
            "description": "Set an expression, recompute and inspect health. Failure restores old expression and reports a semantic recovery witness; not an atomic transaction.",
            "properties": {
              "expression": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "name",
              "expression"
            ],
            "type": "object"
          },
          "plane_create": {
            "description": "Create offset plane (offset in mm) or angled plane around axis (angle in deg).",
            "oneOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "offset": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "offset"
                    ]
                  }
                },
                "required": [
                  "type",
                  "offset"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "angle"
                    ]
                  }
                },
                "required": [
                  "type",
                  "axis",
                  "angle"
                ],
                "type": "object"
              }
            ],
            "properties": {
              "angle": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "axis": {
                "oneOf": [
                  {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  }
                ]
              },
              "component": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "offset": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "plane": {
                "oneOf": [
                  {
                    "enum": [
                      "xy",
                      "xz",
                      "yz"
                    ]
                  },
                  {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  }
                ]
              },
              "type": {
                "enum": [
                  "offset",
                  "angle"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type"
            ],
            "type": "object"
          },
          "ray_cast": {
            "description": "Cast batches of rays against named occurrences, without changing anything (assembly planning: what a part seats on, what blocks its way in, whether a tool reaches a screw). Each ray is cast against each occurrence it names, in that occurrence's own component coordinates, about a millisecond on a part, where a ray against a big subassembly's component (thousands of bodies) took a quarter of a second. Returns hits: a row per ray answered, [[occurrence index, distance in mm rounded to 0.01], ...], one entry per occurrence the ray meets within length (its nearest hit), nearest first; a ray that starts inside a body meets that body's exit face. Also cast (rays answered, in order), complete, missing (indexes with no occurrence at that path), failed (casts Fusion refused) and seconds. Not journaled: it stops at budgetSeconds or before its reply passes 1 MiB (stopped: budget|reply_bytes) and the caller sends the remaining rays. Requests over the CLI's argument limit (128 KiB) go in several calls.",
            "properties": {
              "budgetSeconds": {
                "description": "Stop casting after this many seconds (default 30) so the reply comes back inside the relay's 60 s; the reply then has complete:false and answers the first `cast` rays. Send the rest in another call.",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              },
              "occurrences": {
                "description": "Full root-context paths of the occurrences the rays are cast against; each ray names its own by index.",
                "items": {
                  "type": "string"
                },
                "maxItems": 4096,
                "type": "array"
              },
              "rays": {
                "description": "Rays in root space. Each is cast against each occurrence it names, in that occurrence's own component coordinates; hidden bodies count too. An empty list only checks the target.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "against": {
                      "description": "Indexes into occurrences.",
                      "items": {
                        "maximum": 4095,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxItems": 256,
                      "minItems": 1,
                      "type": "array"
                    },
                    "direction": {
                      "description": "Direction (any nonzero length).",
                      "items": {
                        "maximum": 1000000000.0,
                        "minimum": -1000000000.0,
                        "type": "number"
                      },
                      "maxItems": 3,
                      "minItems": 3,
                      "type": "array"
                    },
                    "length": {
                      "description": "Hits farther than this (mm) are dropped.",
                      "exclusiveMinimum": 0,
                      "maximum": 1000000000.0,
                      "type": "number"
                    },
                    "origin": {
                      "description": "Start point, mm.",
                      "items": {
                        "maximum": 1000000000.0,
                        "minimum": -1000000000.0,
                        "type": "number"
                      },
                      "maxItems": 3,
                      "minItems": 3,
                      "type": "array"
                    }
                  },
                  "required": [
                    "origin",
                    "direction",
                    "length",
                    "against"
                  ],
                  "type": "object"
                },
                "maxItems": 8192,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "description": "From assembly_layout or inspect. The active document must be this one; with revision the model must still be at it. Without revision no digest is computed and the reply's target carries none.",
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "description": "Refuse with stale_revision unless the model is still at this revision (costs the revision digest, about 5 s on a 4,579-occurrence assembly).",
                    "type": "string"
                  }
                },
                "required": [
                  "documentId"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              }
            },
            "required": [
              "op",
              "target",
              "unit",
              "rays"
            ],
            "type": "object"
          },
          "regular_joint_create": {
            "description": "Create a geometry-solving regular joint in the root component using two distinct instance-context attachments or joint origins. All seven native motion families; offsets mm, angle and angular limits deg. Read back freshly resolved attachment graph, native parameters and root-space occurrence placement. Root/non-root sides must be unambiguous; both grounded and ancestor/descendant pairs are refused. Inferred joints are unsupported. Existing pending positions must be captured or reverted first. Before applying drive values, checks native joint-transform anchor offset magnitude/axiality and zero-angle axis collinearity. Native joint matrices have explicit provenance; physical angle/flip sense requires independent occurrence-geometry acceptance.",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "axis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "flipped": {
                "type": "boolean"
              },
              "geometryOne": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "geometryTwo": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "locked": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "offset": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "pitchLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "pitchValue": {
                "type": "number"
              },
              "primarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "primarySlideValue": {
                "type": "number"
              },
              "rollLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rollValue": {
                "type": "number"
              },
              "rotationLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rotationValue": {
                "type": "number"
              },
              "secondarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "secondarySlideValue": {
                "type": "number"
              },
              "slideAxis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "slideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "slideValue": {
                "type": "number"
              },
              "type": {
                "enum": [
                  "rigid",
                  "revolute",
                  "slider",
                  "cylindrical",
                  "pin_slot",
                  "planar",
                  "ball"
                ]
              },
              "yawLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "yawValue": {
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type",
              "geometryOne",
              "geometryTwo"
            ],
            "type": "object"
          },
          "regular_joint_edit": {
            "description": "Redefine root-owned regular joint geometry, motion family, offsets, angle, flip or lock. Restore timeline in finally and verify after recompute. Use joint_edit for name, suppression, limits and drive values; joint_delete for deletion.",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "axis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "flipped": {
                "type": "boolean"
              },
              "geometryOne": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "geometryTwo": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "joint": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "locked": {
                "type": "boolean"
              },
              "offset": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetX": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetY": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "slideAxis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "type": {
                "enum": [
                  "rigid",
                  "revolute",
                  "slider",
                  "cylindrical",
                  "pin_slot",
                  "planar",
                  "ball"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "joint"
            ],
            "type": "object"
          },
          "render_image": {
            "description": "Render a photoreal image with Fusion's local renderer: from a standard view fitted to the design (iso by default) or the current view, at a size and quality (25 to 100; 75 by default), in a lighting environment (a Fusion library one or an .hdr/.exr file) and with a backdrop (the environment or a colour), optionally on a transparent background or without the ground. The renderer never draws joint, sketch or construction glyphs; a standard view is fitted with them hidden, so it frames the parts. Waits for the render, then restores the camera, every render setting and the document's scene. The image reaches filename only when the render finished in time; one that runs past timeoutSeconds is cancelled and writes nothing. Journaled: a large, high-quality render runs for minutes, so follow it with fusion_mech_operation_status.",
            "properties": {
              "background": {
                "description": "What shows behind the model: \"environment\" (the environment image) or a colour \"#rrggbb\". Default: the document's own backdrop. Not with transparent.",
                "type": "string"
              },
              "environment": {
                "description": "The environment that lights the scene: a Fusion library environment by name or id, any case (Sharp Highlights, Rim Highlights, Cool Light, Warm Light, Soft Light, Grid Light, Crossroads, Dry lake bed, Field, Photobooth, Plaza, Skylight, Snow Field; render_scene_inspect lists them), or an absolute path to an .hdr or .exr image. Default: the document's own. The document's backdrop stays as it is unless background says otherwise.",
                "type": "string"
              },
              "filename": {
                "description": "Absolute .png or .jpg path on the PC.",
                "type": "string"
              },
              "ground": {
                "description": "Show the ground plane (shadows and reflections); default leaves the document's setting.",
                "type": "boolean"
              },
              "height": {
                "maximum": 4320,
                "minimum": 64,
                "type": "integer"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "type": "boolean"
              },
              "quality": {
                "description": "25 to 100: 75 is Fusion's Final and 100 its Excellent. Fusion refuses less than 25.",
                "maximum": 100,
                "minimum": 25,
                "type": "integer"
              },
              "timeoutSeconds": {
                "description": "Default 600. A render still running then is cancelled (its render process is ended) and writes nothing.",
                "maximum": 3600,
                "minimum": 10,
                "type": "number"
              },
              "transparent": {
                "type": "boolean"
              },
              "view": {
                "enum": [
                  "iso",
                  "iso-left",
                  "front",
                  "back",
                  "top",
                  "bottom",
                  "left",
                  "right",
                  "current"
                ],
                "type": "string"
              },
              "width": {
                "maximum": 7680,
                "minimum": 64,
                "type": "integer"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "filename"
            ],
            "type": "object"
          },
          "render_scene_inspect": {
            "description": "Guarded main-thread read of current viewport camera, render settings and up to 32 environments. Optional detached world-mm camera is constructed and read back without viewport assignment. Missing fields return PARTIAL; observationComplete covers only bounded available scope. sceneWitnessComplete and renderQualified remain false. No rendering, workspace activation or scene writes.",
            "properties": {
              "camera": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "extents": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": 1e-06,
                          "type": "number"
                        },
                        "maxItems": 2,
                        "minItems": 2,
                        "type": "array"
                      },
                      "eye": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "space": {
                        "enum": [
                          "world"
                        ],
                        "type": "string"
                      },
                      "target": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "orthographic"
                        ],
                        "type": "string"
                      },
                      "unit": {
                        "enum": [
                          "mm"
                        ],
                        "type": "string"
                      },
                      "upVector": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      }
                    },
                    "required": [
                      "type",
                      "space",
                      "unit",
                      "eye",
                      "target",
                      "upVector",
                      "extents"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "angleUnit": {
                        "enum": [
                          "deg"
                        ],
                        "type": "string"
                      },
                      "eye": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "perspectiveAngle": {
                        "exclusiveMinimum": 0,
                        "maximum": 179.999999999,
                        "type": "number"
                      },
                      "space": {
                        "enum": [
                          "world"
                        ],
                        "type": "string"
                      },
                      "target": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "perspective"
                        ],
                        "type": "string"
                      },
                      "unit": {
                        "enum": [
                          "mm"
                        ],
                        "type": "string"
                      },
                      "upVector": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      }
                    },
                    "required": [
                      "type",
                      "space",
                      "unit",
                      "eye",
                      "target",
                      "upVector",
                      "perspectiveAngle",
                      "angleUnit"
                    ],
                    "type": "object"
                  }
                ]
              },
              "maxEnvironments": {
                "maximum": 32,
                "minimum": 0,
                "type": "integer"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "target"
            ],
            "type": "object"
          },
          "rigid_group_create": {
            "description": "Create a native rigid group from exact occurrence instances; includeChildren defaults true.",
            "properties": {
              "includeChildren": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "occurrences": {
                "items": {
                  "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 2,
                "type": "array"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "occurrences"
            ],
            "type": "object"
          },
          "rigid_group_delete": {
            "description": "Delete an exact rigid group with transaction recovery.",
            "properties": {
              "group": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "group"
            ],
            "type": "object"
          },
          "rigid_group_edit": {
            "description": "Rename or suppress an exact rigid group with transaction recovery.",
            "properties": {
              "group": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "suppressed": {
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "group"
            ],
            "type": "object"
          },
          "sketch_constraint": {
            "description": "Constrain entities in one sketch. midpoint order is point,line; symmetry order entity1,entity2,symmetryLine. fix sets one entity fixed.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "type": {
                "enum": [
                  "horizontal",
                  "vertical",
                  "coincident",
                  "parallel",
                  "perpendicular",
                  "tangent",
                  "equal",
                  "concentric",
                  "collinear",
                  "midpoint",
                  "symmetry",
                  "fix"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "type",
              "entities"
            ],
            "type": "object"
          },
          "sketch_create": {
            "description": "Create a native component-definition sketch on an origin/construction plane or planar face. Coordinates in subsequent geometry are sketch-space mm.",
            "properties": {
              "component": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "plane": {
                "oneOf": [
                  {
                    "enum": [
                      "xy",
                      "xz",
                      "yz"
                    ]
                  },
                  {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "sketch_curve_edit": {
            "description": "Edit one native sketch curve with sketch-space mm pick. trim removes the nearest segment; extend chooses nearest endpoint; split requires an interior on-curve point; break uses neighboring intersections. Fresh replacement refs are returned; original may be deleted. In-place extend returns the original with a fresh ref only after its geometry change survives recompute. No change or empty break/split fails. Full trim deletion requires allowDelete true. Linked/derived/deferred-compute geometry refused.",
            "properties": {
              "action": {
                "enum": [
                  "trim",
                  "extend",
                  "split",
                  "break"
                ]
              },
              "allowDelete": {
                "type": "boolean"
              },
              "createConstraints": {
                "type": "boolean"
              },
              "curve": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "pick": {
                "items": {
                  "type": "number"
                },
                "maxItems": 3,
                "minItems": 2,
                "type": "array"
              },
              "sketch": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "sketch",
              "curve",
              "action",
              "pick"
            ],
            "type": "object"
          },
          "sketch_diagnostics": {
            "description": "Read native sketch health/message, fully-constrained/fixed/linked/reference flags, geometric constraints and driving dimensions. Reports no solver DOF count or conflict-set explanation; no recompute/mutation.",
            "properties": {
              "sketch": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "sketch"
            ],
            "type": "object"
          },
          "sketch_dimension": {
            "description": "Add driving dimensions. Distance uses two point references; radius/diameter one curve; angle two lines. Numeric expressions use mm or deg.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "expression": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "parameterName": {
                "type": "string"
              },
              "position": {
                "items": {
                  "type": "number"
                },
                "maxItems": 3,
                "minItems": 2,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "type": {
                "enum": [
                  "distance",
                  "horizontal",
                  "vertical",
                  "radius",
                  "diameter",
                  "angle"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "type",
              "entities",
              "expression",
              "position"
            ],
            "type": "object"
          },
          "sketch_edit": {
            "description": "Move sketch points/endpoints/centers in sketch-space mm, change radius or construction/fixed flags; solver failure aborts the operation.",
            "properties": {
              "changes": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "center": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "construction": {
                    "type": "boolean"
                  },
                  "end": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "fixed": {
                    "type": "boolean"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "radius": {
                    "type": "number"
                  },
                  "start": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              },
              "entity": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "entity",
              "changes"
            ],
            "type": "object"
          },
          "sketch_geometry": {
            "description": "Create a transactionally grouped set of sketch primitives. Numeric geometry uses mm and arc sweeps/polygon angles use deg.",
            "properties": {
              "items": {
                "items": {
                  "oneOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "position": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "point"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "position"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "construction": {
                          "type": "boolean"
                        },
                        "end": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "line"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "start",
                        "end"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "construction": {
                          "type": "boolean"
                        },
                        "end": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "rectangle"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "start",
                        "end"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "center": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "radius": {
                          "exclusiveMinimum": 0,
                          "type": "number"
                        },
                        "type": {
                          "enum": [
                            "circle"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "center",
                        "radius"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "center": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "sweep": {
                          "type": "number"
                        },
                        "type": {
                          "enum": [
                            "arc"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "center",
                        "start",
                        "sweep"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "angle": {
                          "type": "number"
                        },
                        "center": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "radius": {
                          "exclusiveMinimum": 0,
                          "type": "number"
                        },
                        "sides": {
                          "maximum": 128,
                          "minimum": 3,
                          "type": "integer"
                        },
                        "type": {
                          "enum": [
                            "polygon"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "center",
                        "radius",
                        "sides"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "construction": {
                          "type": "boolean"
                        },
                        "end": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "slot"
                          ]
                        },
                        "width": {
                          "exclusiveMinimum": 0,
                          "type": "number"
                        }
                      },
                      "required": [
                        "type",
                        "start",
                        "end",
                        "width"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "closed": {
                          "type": "boolean"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "points": {
                          "items": {
                            "items": {
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 2,
                            "type": "array"
                          },
                          "maxItems": 128,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "spline"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "points"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 128,
                "minItems": 1,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "items"
            ],
            "type": "object"
          },
          "sketch_offset": {
            "description": "Modern createOffsetInput/addOffset2. Curves must be native 2D, unique, in connected flow order (never reordered). Nonzero signed mm number/expression: positive right, negative left; a single circle/ellipse positive outside. Topology matched defaults true. Read back native signed distance, parent/child refs and controlling parameter after recompute. No retired Sketch.offset fallback.",
            "properties": {
              "curves": {
                "items": {
                  "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "distance": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "sketch": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "topologyMatched": {
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "sketch",
              "curves",
              "distance"
            ],
            "type": "object"
          },
          "sketch_project": {
            "description": "Project selected topology into a sketch with Fusion associative projection.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "entities"
            ],
            "type": "object"
          },
          "transaction_probe": {
            "description": "Verify runtime PTransaction abort+commit using temporary user parameters, remove probe data and compare semantic restoration. Required once per running add-in session before feature/sketch/atomic-batch writes. Returns fresh target; inspect again for current references.",
            "properties": {},
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          }
        },
        "sessionId": "str",
        "success": "bool",
        "transactions": "object"
      },
      "statusVerb": null,
      "summary": "Discover typed mechanical operations, exact input schemas, units, recovery limitations and the current add-in session ID (null while no add-in session is live). Served by the bridge exe from the add-in's schema and session file.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "operationId": "required str",
        "sessionId": "required str"
      },
      "longRunning": false,
      "name": "fusion_mech_operation_status",
      "output": {
        "currentSessionId": "str",
        "historical": "bool",
        "history": "durable identity/phase/timestamps",
        "observedResult": "bounded unconfirmed current-session result or null",
        "phase": "admitted|dispatched|executing|succeeded|failed|not_executed",
        "reconciliationRequired": "bool",
        "result": "recorded terminal result or null",
        "state": "running|succeeded|failed|interrupted|reconciliation_required",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Read durable typed-operation history by recorded sessionId and operationId, including after HTTP timeout or add-in restart. Returns the recorded request digest, source version, target identity, phase/timestamps and terminal result. Historical nonterminal work is interrupted/unknown and never replayed. Admission without a durable dispatch claim or uncertain persistence requires reconciliation. Missing history never proves no execution. The bridge exe reads the journal itself, so this answers while Fusion is busy, hung or closed; it never starts/restarts Fusion, touches windows or dismisses dialogs. SQLite recovery may repair only the app-owned journal.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "op": "inspect"
      },
      "input": {
        "op": "required enum: inspect|inspect_entity|new_design|parameter_set|parameter_create|health|export|transaction_probe|sketch_create|sketch_geometry|sketch_constraint|sketch_dimension|sketch_project|sketch_edit|plane_create|feature_create|feature_edit|entity_delete|parameter_batch|component_create|occurrence_insert|occurrence_update|occurrence_delete|component_metadata|joint_create|joint_edit|joint_delete|interference|bom|bom_export|cad_import|mcmaster_discover|mcmaster_open|material_list|material_assign|rigid_group_create|rigid_group_edit|rigid_group_delete|assembly_properties|geometry_query|measure|sketch_curve_edit|sketch_offset|construction_axis|sketch_diagnostics|joint_origin_create|joint_origin_edit|joint_origin_delete|regular_joint_create|regular_joint_edit|motion_link_create|motion_link_edit|motion_link_delete|configuration_inspect|render_scene_inspect|exploded_view_plan|exploded_preview_create|exploded_preview_sample|exploded_preview_show|exploded_preview_dispose|exploded_preview_inspect|efficiency_report|exploded_view_render|exploded_view_stills|render_image|cam_tools|cam_job|cam_inspect|assembly_layout|ray_cast|drawing_create|drawing_export|drawing_status",
        "operationId": "required unique write ID; reuse unchanged for retry",
        "operationSchemas": {
          "assembly_layout": {
            "description": "Read one scope's parts for planning an assembly order, without changing anything: every visible occurrence directly under the scope occurrence (or the root), each with path, name, component name, grounded, the number of its children and its box (axis-aligned, root space, mm, from its bodies and its children's; null for a part with no bodies), plus the scope component's unsuppressed joints and as-built joints ([partOne, partTwo, \"joint\"|\"asBuilt\"], \"\" for the scope's own geometry) and rigid groups as part paths, frameBodies (bodies of the scope component itself), document and scopeName. Journaled like efficiency_report: the first guarded read after the add-in loads registers every entity of a big assembly and can outlive the relay's 60 s, so follow it with fusion_mech_operation_status. Returns the current target; pass it to ray_cast.",
            "properties": {
              "maxBodies": {
                "description": "Bodies read per part for its box, breadth first through its children (default 200; a body proxy's box costs about 26 ms on a big assembly). A part whose walk stopped there has boxCapped:true.",
                "maximum": 20000,
                "minimum": 1,
                "type": "integer"
              },
              "operationId": {
                "type": "string"
              },
              "scope": {
                "description": "Full path of the occurrence whose parts to list (\"Panel:1\", \"Cell:1+Panel:1\"). Empty or omitted: the root component's.",
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "description": "Optional, as for inspect: the active document must be this one, and the model at revision when one is given. The reply carries the current target either way.",
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "description": "Refuse with stale_revision unless the model is still at this revision (costs the revision digest, about 5 s on a 4,579-occurrence assembly).",
                    "type": "string"
                  }
                },
                "required": [
                  "documentId"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId"
            ],
            "type": "object"
          },
          "assembly_properties": {
            "description": "High-accuracy physical properties of whole root assembly (default) or an exact Component/Occurrence/BRepBody. Returns mass kg, volume mm3, area mm2, center of mass mm, mean density kg/mm3 and definition/instance coordinate scope.",
            "properties": {
              "entity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "bom": {
            "description": "Structured component-definition and instance BOM; quantities by actual identity, root bodies plus nested children; purchased metadata collapses subtrees unless exploded. Physical mass includes all unsuppressed bodies exactly once per instance. Includes exact current active configuration provenance; incomplete configuration scope refuses. Visibility does not remove quantity. Returns the indented structure with item numbers, the flat purchasing list (make/buy, category, cost, mass), the extrusion cut list (and a bar plan with stockLengthMm), the fastener rollup, totals with cost coverage, and warnings for missing data.",
            "properties": {
              "budgetSeconds": {
                "description": "Stop the cloud reads of part numbers and descriptions (about 0.5 s each on a cloud assembly) once the call has run this long (default 40); the rest come back as nativePending, and the next run continues from what this one read.",
                "maximum": 3600,
                "minimum": 5,
                "type": "number"
              },
              "currency": {
                "description": "ISO 4217 code (USD, EUR) for lines with a unit cost and none of their own; default USD.",
                "type": "string"
              },
              "explodePurchased": {
                "type": "boolean"
              },
              "includeLibraries": {
                "description": "Count body-less groups named as a library (\"Vendor library\", a palette of parts kept to copy from). Default false: they are listed in excluded with reason library_group.",
                "type": "boolean"
              },
              "inferKits": {
                "description": "Count an assembly as one bought line when its name reads as a bought product (an imported .stp/STEP translator model, a McMaster number, a vendor note such as \"(vendor STEP)\" or \"(modelled)\", a maker's name) or its children are a circuit board's footprints. Default true. An explicit asPurchased or makeBuy wins, and so does a name that says it is made here (fabricated, 3D printed, machined).",
                "type": "boolean"
              },
              "kerfMm": {
                "description": "Saw kerf per cut in the bar plan; default 3.",
                "maximum": 50,
                "minimum": 0,
                "type": "number"
              },
              "nativeProperties": {
                "description": "Read part numbers and descriptions (default true; cached per component revision). false gives the structure, quantities and metadata attributes in seconds on a big cloud assembly.",
                "type": "boolean"
              },
              "physicalTotals": {
                "description": "Sum mass and volume over every body instance (default true). false skips that walk on a big assembly; per-line unit mass is still read.",
                "type": "boolean"
              },
              "stockLengthMm": {
                "description": "Stock bar length for the cut list's bar plan (first-fit decreasing).",
                "exclusiveMinimum": 0,
                "type": "number"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "bom_export": {
            "description": "Export flat grouped purchasing rows or structured parent/path/depth instance rows and supplier provenance to CSV with exclusive/atomic publication. This external effect is separate from model transactions. Both CSV modes include document/revision and current active configuration table/row provenance.",
            "properties": {
              "budgetSeconds": {
                "description": "As for bom (default 40): rows of components whose part number was left for later have it blank, and the response's nativePending counts them; export again to fill them in.",
                "maximum": 3600,
                "minimum": 5,
                "type": "number"
              },
              "currency": {
                "description": "ISO 4217 code (USD, EUR) for lines with a unit cost and none of their own; default USD.",
                "type": "string"
              },
              "explodePurchased": {
                "type": "boolean"
              },
              "filename": {
                "type": "string"
              },
              "includeLibraries": {
                "description": "Count body-less groups named as a library (\"Vendor library\", a palette of parts kept to copy from). Default false: they are listed in excluded with reason library_group.",
                "type": "boolean"
              },
              "inferKits": {
                "description": "Count an assembly as one bought line when its name reads as a bought product (an imported .stp/STEP translator model, a McMaster number, a vendor note such as \"(vendor STEP)\" or \"(modelled)\", a maker's name) or its children are a circuit board's footprints. Default true. An explicit asPurchased or makeBuy wins, and so does a name that says it is made here (fabricated, 3D printed, machined).",
                "type": "boolean"
              },
              "kerfMm": {
                "description": "Saw kerf per cut in the bar plan; default 3.",
                "maximum": 50,
                "minimum": 0,
                "type": "number"
              },
              "mode": {
                "description": "flat: the purchasing list with make/buy and its reason; structured: one row per instance; indented: item numbers and quantity per parent; cutlist: extrusions by profile and length; fasteners: hardware by part number; wires: each cut wire with gauge, color and length; order: bought lines merged by supplier part number.",
                "enum": [
                  "flat",
                  "structured",
                  "indented",
                  "cutlist",
                  "fasteners",
                  "wires",
                  "order"
                ]
              },
              "nativeProperties": {
                "description": "Read part numbers and descriptions (default true; cached per component revision). false gives the structure, quantities and metadata attributes in seconds on a big cloud assembly.",
                "type": "boolean"
              },
              "overwrite": {
                "type": "boolean"
              },
              "physicalTotals": {
                "description": "Sum mass and volume over every body instance (default true). false skips that walk on a big assembly; per-line unit mass is still read.",
                "type": "boolean"
              },
              "stockLengthMm": {
                "description": "Stock bar length for the cut list's bar plan (first-fit decreasing).",
                "exclusiveMinimum": 0,
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "filename"
            ],
            "type": "object"
          },
          "cad_import": {
            "description": "Import a pre-downloaded local STEP/SAT into a new wrapper component in Hybrid design. Validate optional expected SHA-256, record actual source/hash/supplier metadata, preserve camera, measure model recovery. Does not fetch URLs or create cloud documents. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
            "properties": {
              "asPurchased": {
                "type": "boolean"
              },
              "filename": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "parent": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "provenance": {
                "additionalProperties": false,
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "supplier": {
                    "type": "string"
                  },
                  "supplierPartNumber": {
                    "type": "string"
                  }
                },
                "required": [
                  "supplier",
                  "supplierPartNumber",
                  "sourceUrl"
                ],
                "type": "object"
              },
              "sha256": {
                "type": "string"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "filename",
              "provenance"
            ],
            "type": "object"
          },
          "cam_inspect": {
            "description": "Read the active document's CAM: setups, their operations' toolpath state, warnings and errors, and NC programs.",
            "properties": {},
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "cam_job": {
            "description": "Make a milling job: a setup on the given bodies, with optional stock (relative_box with offsets, fixed_box with a size, or solid stock bodies) and WCS origin (a stock or model box point, or the model origin); then operations in order: face, adaptive2d, pocket2d, contour2d, drill (cycle drill, peck or chip_break), adaptive, pocket_clearing, contour (3D contour), parallel or scallop, each with a tool from a Fusion library chosen by type, description, flutes and nearest diameter, and optional Fusion parameter overrides by name. 2D operations take faces (contour2d: their outside, inside or all loops; pocket2d and adaptive2d: pocket floors), else the outside of the setup bodies' silhouette or the bodies' pocket floors (upward faces below their top). Drill picks the bodies' holes of the drill's diameter unless holeFaces are given. Generates the toolpaths (an operation Fusion leaves untouched gets one more try) and reports every operation's status (generated, empty, error, outdated, suppressed, not_generated), warnings, errors and machining time. With post, writes G-code through a post from Fusion's library (FANUC, Grbl, HAAS - Next Generation Control, ...) into post.folder, named and numbered post.program; it does not post while an operation lacks a valid toolpath. Opens the Manufacture workspace once if the document has no CAM yet, then returns to the user's workspace and says so. Journaled.",
            "properties": {
              "bodies": {
                "items": {
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "type": "string"
              },
              "operationId": {
                "type": "string"
              },
              "operations": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cycle": {
                      "description": "drill: Fusion's drilling (G81), deep-drilling (G83) or chip-breaking (G73) cycle.",
                      "enum": [
                        "drill",
                        "peck",
                        "chip_break"
                      ],
                      "type": "string"
                    },
                    "faces": {
                      "description": "2D geometry: contour2d contours these faces' loops; pocket2d and adaptive2d clear these pocket floors. Without faces: the bodies' silhouette, or their pocket floors.",
                      "items": {
                        "type": "object"
                      },
                      "maxItems": 64,
                      "minItems": 1,
                      "type": "array"
                    },
                    "holeFaces": {
                      "items": {
                        "type": "object"
                      },
                      "maxItems": 512,
                      "type": "array"
                    },
                    "loops": {
                      "description": "contour2d: which loops of each face (or of the silhouette) to contour; outside by default.",
                      "enum": [
                        "outside",
                        "inside",
                        "all"
                      ],
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "parameters": {
                      "type": "object"
                    },
                    "peckDepthMm": {
                      "description": "Peck depth for cycle peck or chip_break.",
                      "exclusiveMinimum": 0,
                      "maximum": 1000,
                      "type": "number"
                    },
                    "strategy": {
                      "enum": [
                        "face",
                        "adaptive2d",
                        "pocket2d",
                        "contour2d",
                        "drill",
                        "adaptive",
                        "pocket_clearing",
                        "contour",
                        "parallel",
                        "scallop"
                      ],
                      "type": "string"
                    },
                    "tool": {
                      "additionalProperties": false,
                      "properties": {
                        "description": {
                          "description": "A substring of the tool's description, case-insensitive.",
                          "type": "string"
                        },
                        "diameterMm": {
                          "exclusiveMinimum": 0,
                          "maximum": 200,
                          "type": "number"
                        },
                        "flutes": {
                          "maximum": 50,
                          "minimum": 1,
                          "type": "integer"
                        },
                        "library": {
                          "description": "milling (default), hole (default for drills), document, or a library name cam_tools lists.",
                          "type": "string"
                        },
                        "type": {
                          "description": "Tool type as Fusion names it: flat end mill, ball end mill, bull nose end mill, drill, chamfer mill, ...",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "strategy"
                  ],
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "post": {
                "additionalProperties": false,
                "properties": {
                  "comment": {
                    "description": "Program comment, written after the program number.",
                    "type": "string"
                  },
                  "folder": {
                    "type": "string"
                  },
                  "machine": {
                    "type": "string"
                  },
                  "program": {
                    "description": "Program name or number, and the file's name (FANUC and HAAS take a number, 1 to 9999).",
                    "type": "string"
                  }
                },
                "required": [
                  "folder"
                ],
                "type": "object"
              },
              "stock": {
                "additionalProperties": false,
                "description": "relative_box (Fusion's default) takes offsetMm sides/top/bottom; fixed_box takes sizeMm [x, y, z]; solid takes stock bodies.",
                "properties": {
                  "bodies": {
                    "items": {
                      "type": "object"
                    },
                    "maxItems": 32,
                    "minItems": 1,
                    "type": "array"
                  },
                  "mode": {
                    "enum": [
                      "relative_box",
                      "fixed_box",
                      "solid"
                    ],
                    "type": "string"
                  },
                  "offsetMm": {
                    "additionalProperties": false,
                    "properties": {
                      "bottom": {
                        "maximum": 1000,
                        "minimum": 0,
                        "type": "number"
                      },
                      "sides": {
                        "maximum": 1000,
                        "minimum": 0,
                        "type": "number"
                      },
                      "top": {
                        "maximum": 1000,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "type": "object"
                  },
                  "sizeMm": {
                    "items": {
                      "exclusiveMinimum": 0,
                      "maximum": 10000,
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "timeoutSeconds": {
                "maximum": 3600,
                "minimum": 10,
                "type": "number"
              },
              "wcs": {
                "additionalProperties": false,
                "description": "The work coordinate system's origin: a box point of the stock (stock_point) or of the model (model_point), top center by default (top 1 to 4 are the top corners at x-min y-min, x-max y-min, x-min y-max, x-max y-max), or the model origin. The axes stay the model's.",
                "properties": {
                  "origin": {
                    "enum": [
                      "stock_point",
                      "model_point",
                      "model_origin"
                    ],
                    "type": "string"
                  },
                  "point": {
                    "enum": [
                      "top center",
                      "top 1",
                      "top 2",
                      "top 3",
                      "top 4",
                      "top side 1",
                      "top side 2",
                      "top side 3",
                      "top side 4",
                      "center",
                      "middle 1",
                      "middle 2",
                      "middle 3",
                      "middle 4",
                      "middle side 1",
                      "middle side 2",
                      "middle side 3",
                      "middle side 4",
                      "bottom center",
                      "bottom 1",
                      "bottom 2",
                      "bottom 3",
                      "bottom 4",
                      "bottom side 1",
                      "bottom side 2",
                      "bottom side 3",
                      "bottom side 4"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "bodies",
              "operations"
            ],
            "type": "object"
          },
          "cam_tools": {
            "description": "List the tools of one of Fusion's tool libraries, with diameter, corner radius and flute length in mm: library milling or hole (Fusion's metric samples; milling by default), any sample or local library by its name, or document (the tools this document's CAM already uses). Filter by type, description (a substring) and diameter range. Every reply also lists the libraries cam_job can name.",
            "properties": {
              "description": {
                "type": "string"
              },
              "library": {
                "description": "milling, hole, document, or a library name from the reply's libraries (Milling Tools (Inch), a local library, ...).",
                "type": "string"
              },
              "limit": {
                "maximum": 500,
                "minimum": 1,
                "type": "integer"
              },
              "maxDiameterMm": {
                "maximum": 1000,
                "minimum": 0,
                "type": "number"
              },
              "minDiameterMm": {
                "maximum": 1000,
                "minimum": 0,
                "type": "number"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "op"
            ],
            "type": "object"
          },
          "component_create": {
            "description": "Create a native internal component and its first occurrence in a Hybrid design. parent is a component definition; edits to it affect every instance. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
            "properties": {
              "metadata": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "asPurchased": {
                    "type": "boolean"
                  },
                  "category": {
                    "description": "e.g. extrusion, fastener, printed, machined, sheet metal, electronics, cable.",
                    "maxLength": 60,
                    "minLength": 1,
                    "type": "string"
                  },
                  "currency": {
                    "description": "ISO 4217 code such as USD.",
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "excludeFromBom": {
                    "type": "boolean"
                  },
                  "finish": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "leadTimeDays": {
                    "maximum": 3650,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "makeBuy": {
                    "enum": [
                      "make",
                      "buy"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "notes": {
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "partNumber": {
                    "type": "string"
                  },
                  "process": {
                    "description": "How a made part is made: 3D print, laser cut, CNC, bent sheet...",
                    "maxLength": 120,
                    "type": "string"
                  },
                  "revision": {
                    "maxLength": 40,
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "stock": {
                    "description": "The stock a linear part is cut from (2020, 4040, 8020-1010...): the cut list groups by it.",
                    "maxLength": 60,
                    "type": "string"
                  },
                  "supplier": {
                    "type": "string"
                  },
                  "supplierPartNumber": {
                    "type": "string"
                  },
                  "unitCost": {
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "parent": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "name"
            ],
            "type": "object"
          },
          "component_metadata": {
            "description": "Update component-definition name/part number/description and persistent supplier or BOM attributes. Shared occurrences all see this metadata.",
            "properties": {
              "changes": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "asPurchased": {
                    "type": "boolean"
                  },
                  "category": {
                    "description": "e.g. extrusion, fastener, printed, machined, sheet metal, electronics, cable.",
                    "maxLength": 60,
                    "minLength": 1,
                    "type": "string"
                  },
                  "currency": {
                    "description": "ISO 4217 code such as USD.",
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "excludeFromBom": {
                    "type": "boolean"
                  },
                  "finish": {
                    "maxLength": 120,
                    "type": "string"
                  },
                  "leadTimeDays": {
                    "maximum": 3650,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "makeBuy": {
                    "enum": [
                      "make",
                      "buy"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "notes": {
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "partNumber": {
                    "type": "string"
                  },
                  "process": {
                    "description": "How a made part is made: 3D print, laser cut, CNC, bent sheet...",
                    "maxLength": 120,
                    "type": "string"
                  },
                  "revision": {
                    "maxLength": 40,
                    "type": "string"
                  },
                  "sourceUrl": {
                    "type": "string"
                  },
                  "stock": {
                    "description": "The stock a linear part is cut from (2020, 4040, 8020-1010...): the cut list groups by it.",
                    "maxLength": 60,
                    "type": "string"
                  },
                  "supplier": {
                    "type": "string"
                  },
                  "supplierPartNumber": {
                    "type": "string"
                  },
                  "unitCost": {
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [],
                "type": "object"
              },
              "component": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "changes"
            ],
            "type": "object"
          },
          "configuration_inspect": {
            "description": "Read the loaded Design configuration graph without activation or recompute: ordinary rows, the separate native reserved test row, all supported typed cells including inactive/test cells, exact controlled-source links and current ordinary row. Unreadable fields and unknown/theme/hierarchical/inserted scopes remain explicit incomplete diagnostics. Configuration lifecycle and configured-design model mutations remain disabled pending native recovery/archive gates.",
            "properties": {},
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "construction_axis": {
            "description": "Create a parametric axis from native references (edge/circular face/two intersecting planes/two distinct points). Root-space external geometry requires exact occurrence context. For cross-component geometry into a non-root target component, creationOccurrence must identify a root-context instance of that target. Returns component-space native axis geometry/health. No direct-only infinite-line or preview snap APIs.",
            "properties": {
              "component": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "creationOccurrence": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "entities": {
                "items": {
                  "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 2,
                "minItems": 1,
                "type": "array"
              },
              "name": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "edge",
                  "circular_face",
                  "two_planes",
                  "two_points"
                ]
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "type",
              "entities"
            ],
            "type": "object"
          },
          "drawing_create": {
            "description": "Make a 2D drawing of the active design with Fusion's automatic drawing: sheets laid out by Fusion, each with a base view and its projected views (front, top, right), an optional isometric view, a filled title block and automatic dimensions. The design must be saved to the cloud with no unsaved changes (or pass useSavedVersion); the drawing is a new cloud file next to the design, or in folderId, never in a project's root folder. Fusion picks the views' scale for the sheet size; the API cannot set it. Takes about 30 s for a part. Journaled. Follow with drawing_export.",
            "properties": {
              "configuration": {
                "description": "Configuration name for a configured design; the active one by default.",
                "type": "string"
              },
              "content": {
                "description": "Draw every part, or only the visible ones.",
                "enum": [
                  "full",
                  "visible"
                ],
                "type": "string"
              },
              "datum": {
                "description": "Origin for baseline and ordinate dimensions on part sheets.",
                "enum": [
                  "model_origin",
                  "bottom_left",
                  "bottom_right",
                  "top_left",
                  "top_right"
                ],
                "type": "string"
              },
              "dimensions": {
                "description": "Automatic dimension strategy; overall by default, none for views only.",
                "enum": [
                  "none",
                  "overall",
                  "automatic",
                  "baseline",
                  "chain",
                  "ordinate",
                  "symmetric",
                  "symmetric_baseline",
                  "symmetric_ordinate"
                ],
                "type": "string"
              },
              "folderId": {
                "description": "Cloud folder to put the drawing in; the design's folder by default.",
                "type": "string"
              },
              "holeNotes": {
                "enum": [
                  "hole_and_thread",
                  "hole",
                  "thread",
                  "none"
                ],
                "type": "string"
              },
              "name": {
                "description": "Name for the drawing file; Fusion's is '<design> Drawing'.",
                "type": "string"
              },
              "omit": {
                "additionalProperties": false,
                "description": "Parts left out of part sheets: names containing these comma-separated keywords (Bolt,Screw,Nut,Washer by default) and, with fasteners, any part Fusion recognizes as a fastener.",
                "properties": {
                  "fasteners": {
                    "type": "boolean"
                  },
                  "keywords": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "operationId": {
                "type": "string"
              },
              "orientation": {
                "enum": [
                  "landscape",
                  "portrait"
                ],
                "type": "string"
              },
              "sheetSize": {
                "description": "A4 to A0 with iso, A to E with asme; A3 or B by default.",
                "enum": [
                  "A4",
                  "A3",
                  "A2",
                  "A1",
                  "A0",
                  "A",
                  "B",
                  "C",
                  "D",
                  "E"
                ],
                "type": "string"
              },
              "sheets": {
                "additionalProperties": false,
                "description": "Which sheets Fusion makes: the main assembly, subassemblies, one per part (component), sheet metal; levels first or all.",
                "properties": {
                  "assembly": {
                    "type": "boolean"
                  },
                  "components": {
                    "type": "boolean"
                  },
                  "levels": {
                    "enum": [
                      "first",
                      "all"
                    ],
                    "type": "string"
                  },
                  "partsList": {
                    "type": "boolean"
                  },
                  "sheetMetal": {
                    "type": "boolean"
                  },
                  "subassemblies": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "standard": {
                "description": "Drawing standard; iso by default.",
                "enum": [
                  "iso",
                  "asme"
                ],
                "type": "string"
              },
              "style": {
                "enum": [
                  "visible",
                  "visible_and_hidden",
                  "shaded_and_hidden",
                  "shaded"
                ],
                "type": "string"
              },
              "tangentEdges": {
                "enum": [
                  "off",
                  "full",
                  "shortened"
                ],
                "type": "string"
              },
              "units": {
                "description": "mm for iso, in for asme by default.",
                "enum": [
                  "mm",
                  "in"
                ],
                "type": "string"
              },
              "useSavedVersion": {
                "description": "Draw the last saved version even though the design has unsaved changes.",
                "type": "boolean"
              },
              "views": {
                "additionalProperties": false,
                "description": "Base and projected views (default true) and an isometric view beside them (default true).",
                "properties": {
                  "isometric": {
                    "type": "boolean"
                  },
                  "orthographic": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "drawing_export": {
            "description": "Export a drawing made by drawing_create to PDF, DWG and DXF (absolute paths on the PC), staged and published with byte counts and SHA-256. The first call opens the drawing in Fusion and answers drawing_not_ready (retryable, retryAfterSeconds); call again with a new operationId. Never in the call that opens it: an export sent while Fusion's Edit Auto Dimensions command runs on a newly opened drawing blocks Fusion's main thread for 10 minutes. A later call ends that command if it is running, and exports once the sheets read, Fusion runs no command and the drawing engine is idle and quiet. A drawing opened by someone else is refused (drawing_open_elsewhere). DXF holds the active sheet; with a DXF the reply also gives the scale Fusion chose, read from its dimensions. close:true closes the drawing and the design its open brought in. Journaled.",
            "properties": {
              "close": {
                "description": "Close the drawing in Fusion after exporting, with the design its open brought in when that was not open before and is unmodified, and put the previously active document back (default false).",
                "type": "boolean"
              },
              "drawing": {
                "additionalProperties": false,
                "description": "The drawing's cloud file, as drawing_create returned it.",
                "properties": {
                  "fileId": {
                    "type": "string"
                  }
                },
                "required": [
                  "fileId"
                ],
                "type": "object"
              },
              "dwg": {
                "description": "Absolute .dwg path.",
                "type": "string"
              },
              "dwgFormat": {
                "enum": [
                  "autocad",
                  "simplified"
                ],
                "type": "string"
              },
              "dxf": {
                "description": "Absolute .dxf path (the active sheet).",
                "type": "string"
              },
              "dxfSplines": {
                "description": "Keep splines as splines (default true).",
                "type": "boolean"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "type": "boolean"
              },
              "pdf": {
                "description": "Absolute .pdf path; one PDF of every sheet unless pdfSheets.",
                "type": "string"
              },
              "pdfLineWeights": {
                "description": "Print line weights (default true).",
                "type": "boolean"
              },
              "pdfSheets": {
                "description": "Sheets for the PDF, like \"1-3\" or \"1,4\"; every sheet by default.",
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "drawing"
            ],
            "type": "object"
          },
          "drawing_status": {
            "description": "Whether a drawing is open and ready for drawing_export: its sheets read, Fusion's active command, the drawing engine's unfinished commands and how long its log has been quiet, and the sheets with their views. Changes nothing.",
            "properties": {
              "drawing": {
                "additionalProperties": false,
                "description": "The drawing's cloud file, as drawing_create returned it.",
                "properties": {
                  "fileId": {
                    "type": "string"
                  }
                },
                "required": [
                  "fileId"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "drawing"
            ],
            "type": "object"
          },
          "efficiency_report": {
            "description": "Read what makes the design slow to recompute, open and edit, held against the efficiency playbook (skills/fusion-design-efficiency): timeline make-up and health, Position snapshots, Move features, size, repeated definitions made by Paste New, instance-weighted faces, imported history, wires in a parametric design, big sketches, pattern compute options, modeled threads, meshes and empty components. Returns metrics and findings (rule, severity, measured, limit, fix). Read-only and needs no revision digest. It is journaled like bom_export, so a long report on a big design is followed with fusion_mech_operation_status after the relay's 60 s; passes past budgetSeconds are skipped and listed, with complete:false.",
            "properties": {
              "budgetSeconds": {
                "description": "Stop the costly passes after this many seconds (default 120).",
                "maximum": 600,
                "minimum": 5,
                "type": "number"
              },
              "computeTiming": {
                "description": "Also time a full computeAll (slow on big designs; default false).",
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "entity_delete": {
            "description": "Delete sketch geometry or independently deletable timeline features. Model transaction and semantic recovery cover downstream failures; document and external file deletion are excluded.",
            "properties": {
              "entity": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "entity"
            ],
            "type": "object"
          },
          "exploded_preview_create": {
            "description": "Create finite copied solid-BRep presentation graphics in the exact active blank unsaved Design proven by a committed current-session new_design result. Regenerates the guarded source plan; leaves source active. Exclusive session lease, no source moves/visibility writes, no model transaction, automatic document close, render or capture. Live capability and native backend qualification are separate from durable operation receipts.",
            "properties": {
              "creationOperationId": {
                "type": "string"
              },
              "expectedPlanId": {
                "type": "string"
              },
              "planner": {
                "additionalProperties": false,
                "properties": {
                  "playback": {
                    "enum": [
                      "explode",
                      "assemble"
                    ],
                    "type": "string"
                  },
                  "sampleTimes": {
                    "items": {
                      "maximum": 3600,
                      "minimum": 0,
                      "type": "number"
                    },
                    "maxItems": 62,
                    "type": "array"
                  },
                  "steps": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "durationSeconds": {
                          "exclusiveMinimum": 0,
                          "maximum": 3600,
                          "type": "number"
                        },
                        "instruction": {
                          "type": "string"
                        },
                        "moves": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "direction": {
                                "items": {
                                  "maximum": 1000000000.0,
                                  "minimum": -1000000000.0,
                                  "type": "number"
                                },
                                "maxItems": 3,
                                "minItems": 3,
                                "type": "array"
                              },
                              "distance": {
                                "exclusiveMinimum": 0,
                                "maximum": 1000000.0,
                                "type": "number"
                              },
                              "frame": {
                                "enum": [
                                  "world",
                                  "parent",
                                  "local"
                                ],
                                "type": "string"
                              },
                              "occurrence": {
                                "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                                "type": "object"
                              }
                            },
                            "required": [
                              "occurrence",
                              "direction",
                              "distance",
                              "frame"
                            ],
                            "type": "object"
                          },
                          "maxItems": 128,
                          "minItems": 1,
                          "type": "array"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "durationSeconds",
                        "moves"
                      ],
                      "type": "object"
                    },
                    "maxItems": 32,
                    "minItems": 1,
                    "type": "array"
                  },
                  "unit": {
                    "enum": [
                      "mm"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "unit",
                  "steps"
                ],
                "type": "object"
              },
              "sessionId": {
                "type": "string"
              },
              "sourceTarget": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sourceTarget",
              "creationOperationId",
              "expectedPlanId",
              "planner"
            ],
            "type": "object"
          },
          "exploded_preview_dispose": {
            "description": "Delete only the exact retained graphics tree and leave the blank document open for caller. Supports a narrowly proven cleanup after unresolved terminal storage without rewriting that history; no global Undo or close. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
            "properties": {
              "expectedGeneration": {
                "maximum": 1000000000,
                "minimum": 0,
                "type": "integer"
              },
              "previewId": {
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "previewId",
              "expectedGeneration"
            ],
            "type": "object"
          },
          "exploded_preview_inspect": {
            "description": "Main-thread live preview ownership/geometry/history observation. Cached operation receipts do not establish current graphics liveness. Old-session history remains separately readable through mech_operation_status; no native reference adoption or lifecycle repair is provided here.",
            "properties": {
              "previewId": {
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "previewId"
            ],
            "type": "object"
          },
          "exploded_preview_sample": {
            "description": "Apply one server-stored absolute sample to exact-owned graphics; preserve active document. Source must remain unchanged. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
            "properties": {
              "expectedGeneration": {
                "maximum": 1000000000,
                "minimum": 0,
                "type": "integer"
              },
              "previewId": {
                "type": "string"
              },
              "sampleIndex": {
                "maximum": 63,
                "minimum": 0,
                "type": "integer"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "previewId",
              "expectedGeneration",
              "sampleIndex"
            ],
            "type": "object"
          },
          "exploded_preview_show": {
            "description": "Explicitly activate the exact-owned presentation in Fusion; refuse an intervening foreign active document. No OS foreground, camera change or capture. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
            "properties": {
              "expectedGeneration": {
                "maximum": 1000000000,
                "minimum": 0,
                "type": "integer"
              },
              "previewId": {
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "previewId",
              "expectedGeneration"
            ],
            "type": "object"
          },
          "exploded_view_plan": {
            "description": "Read-only source-bound exploded assembly plan. Normalized translation directions in immutable home world/parent/local axes; simultaneous moves within ordered steps. Descendants inherit ancestor translations once, plus own moves. Bounded deterministic sample matrices and exact home reverse endpoint. No native moves, graphics, BOM quantity changes, render/video or storyboard creation. Complete configuration identity required.",
            "properties": {
              "playback": {
                "enum": [
                  "explode",
                  "assemble"
                ],
                "type": "string"
              },
              "sampleTimes": {
                "items": {
                  "maximum": 3600,
                  "minimum": 0,
                  "type": "number"
                },
                "maxItems": 62,
                "type": "array"
              },
              "sessionId": {
                "type": "string"
              },
              "steps": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "durationSeconds": {
                      "exclusiveMinimum": 0,
                      "maximum": 3600,
                      "type": "number"
                    },
                    "instruction": {
                      "type": "string"
                    },
                    "moves": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "direction": {
                            "items": {
                              "maximum": 1000000000.0,
                              "minimum": -1000000000.0,
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 3,
                            "type": "array"
                          },
                          "distance": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000000.0,
                            "type": "number"
                          },
                          "frame": {
                            "enum": [
                              "world",
                              "parent",
                              "local"
                            ],
                            "type": "string"
                          },
                          "occurrence": {
                            "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "occurrence",
                          "direction",
                          "distance",
                          "frame"
                        ],
                        "type": "object"
                      },
                      "maxItems": 128,
                      "minItems": 1,
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "durationSeconds",
                    "moves"
                  ],
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "target",
              "unit",
              "steps"
            ],
            "type": "object"
          },
          "exploded_view_render": {
            "description": "Render an exploded-view animation for operators: play the same steps as exploded_view_plan on the real occurrences, save one viewport image per frame from a fixed camera (fitted to the most exploded state) with joint, sketch and construction glyphs hidden unless glyphs:true, then revert every move and verify each instance is back home and the document state unchanged. Refuses a design with an uncaptured move. Journaled; follow a long render with fusion_mech_operation_status. Returns the frame folder, timed captions from the steps' titles and instructions, and the ffmpeg line that joins the frames into MP4 (Fusion's API has no video export).",
            "properties": {
              "fit": {
                "description": "Fit the camera to the most exploded state first (default true); false keeps the current view.",
                "type": "boolean"
              },
              "folder": {
                "description": "Absolute folder on the PC for frame_00000.png ... (created if missing).",
                "type": "string"
              },
              "fps": {
                "description": "Frames per second (default 24).",
                "maximum": 60,
                "minimum": 1,
                "type": "integer"
              },
              "glyphs": {
                "description": "Keep joint, joint origin, sketch, origin and construction glyphs in the images, as the design shows them (default false: they are hidden through Object Visibility for the capture and every switch is put back; the document is not marked modified).",
                "type": "boolean"
              },
              "height": {
                "description": "Frame height in pixels (default 720).",
                "maximum": 2160,
                "minimum": 240,
                "type": "integer"
              },
              "holdSeconds": {
                "description": "Hold the last pose this long (default 1).",
                "maximum": 30,
                "minimum": 0,
                "type": "number"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "description": "Replace frames already in folder (default false).",
                "type": "boolean"
              },
              "playback": {
                "enum": [
                  "explode",
                  "assemble"
                ],
                "type": "string"
              },
              "sessionId": {
                "type": "string"
              },
              "steps": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "durationSeconds": {
                      "exclusiveMinimum": 0,
                      "maximum": 3600,
                      "type": "number"
                    },
                    "instruction": {
                      "type": "string"
                    },
                    "moves": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "direction": {
                            "items": {
                              "maximum": 1000000000.0,
                              "minimum": -1000000000.0,
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 3,
                            "type": "array"
                          },
                          "distance": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000000.0,
                            "type": "number"
                          },
                          "frame": {
                            "enum": [
                              "world",
                              "parent",
                              "local"
                            ],
                            "type": "string"
                          },
                          "occurrence": {
                            "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "occurrence",
                          "direction",
                          "distance",
                          "frame"
                        ],
                        "type": "object"
                      },
                      "maxItems": 128,
                      "minItems": 1,
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "durationSeconds",
                    "moves"
                  ],
                  "type": "object"
                },
                "maxItems": 32,
                "minItems": 1,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              },
              "width": {
                "description": "Frame width in pixels (default 1280).",
                "maximum": 3840,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "unit",
              "steps",
              "folder"
            ],
            "type": "object"
          },
          "exploded_view_stills": {
            "description": "Step images for assembly instructions, from one fixed orthographic camera, with joint, sketch and construction glyphs hidden unless glyphs:true: per step, in assembly order, the step's parts hovering where they go with earlier steps seated and later steps out of view (before), then seated (after); step_000_after.png shows nothing assembled, so consecutive images differ by exactly the parts that came in. Returns each moved part's box and centre in both images, normalized to the image, and the camera. Moves only the parts whose pose changes, reverts every move, restores the camera and verifies each instance is back home. Up to 64 steps and 2048 moves. Journaled; follow a long run with fusion_mech_operation_status.",
            "properties": {
              "camera": {
                "description": "auto (default): the isometric view that best shows the parts coming in, framing the moved parts seated and exploded; fit: the current view direction, framing them; current: the view as it is. Always orthographic.",
                "enum": [
                  "auto",
                  "fit",
                  "current"
                ],
                "type": "string"
              },
              "context": {
                "description": "auto (default): when every moved part sits in one subassembly, everything outside it is moved out of view in every image (and back afterwards); keep: show the whole design.",
                "enum": [
                  "auto",
                  "keep"
                ],
                "type": "string"
              },
              "folder": {
                "description": "Absolute folder on the PC for step_000_after.png (nothing assembled) and step_NNN_before.png / step_NNN_after.png per step (created if missing).",
                "type": "string"
              },
              "glyphs": {
                "description": "Keep joint, joint origin, sketch, origin and construction glyphs in the images, as the design shows them (default false: they are hidden through Object Visibility for the capture and every switch is put back; the document is not marked modified).",
                "type": "boolean"
              },
              "height": {
                "description": "Frame height in pixels (default 720).",
                "maximum": 2160,
                "minimum": 240,
                "type": "integer"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "description": "Replace step images already in folder (default false).",
                "type": "boolean"
              },
              "sessionId": {
                "type": "string"
              },
              "steps": {
                "description": "Steps in ASSEMBLY order. Each move gives the direction and distance its part comes from (the way it moves out when exploded).",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "instruction": {
                      "type": "string"
                    },
                    "moves": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "direction": {
                            "items": {
                              "maximum": 1000000000.0,
                              "minimum": -1000000000.0,
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 3,
                            "type": "array"
                          },
                          "distance": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000000.0,
                            "type": "number"
                          },
                          "frame": {
                            "enum": [
                              "world",
                              "parent",
                              "local"
                            ],
                            "type": "string"
                          },
                          "occurrence": {
                            "description": "Exact guarded occurrence reference from inspect; every repeated/nested instance is distinct.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "occurrence",
                          "direction",
                          "distance",
                          "frame"
                        ],
                        "type": "object"
                      },
                      "maxItems": 2048,
                      "minItems": 1,
                      "type": "array"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "moves"
                  ],
                  "type": "object"
                },
                "maxItems": 64,
                "minItems": 1,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              },
              "width": {
                "description": "Frame width in pixels (default 1280).",
                "maximum": 3840,
                "minimum": 320,
                "type": "integer"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "unit",
              "steps",
              "folder"
            ],
            "type": "object"
          },
          "export": {
            "description": "Export entire design using runtime-checked API. Preflight and unique same-filesystem staging preserve the destination on failure; publish only nonempty verified output. Availability differs by Fusion build. STL numeric coordinates use mm.",
            "properties": {
              "format": {
                "default": "step",
                "enum": [
                  "step",
                  "stl",
                  "3mf",
                  "f3d",
                  "iges",
                  "sat",
                  "smt",
                  "usdz",
                  "fbx",
                  "skp"
                ]
              },
              "outputPath": {
                "type": "string"
              },
              "overwrite": {
                "default": false,
                "type": "boolean"
              },
              "refinement": {
                "default": "medium",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "outputPath"
            ],
            "type": "object"
          },
          "feature_create": {
            "description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit. Rectangular and circular patterns repeat exactly one of bodies, features, faces or occurrences (a component pattern, built in the occurrences' shared parent so the part stays one definition); computeOption is identical (default), optimized or adjust and does not apply to component patterns.",
            "oneOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "direction": {
                    "enum": [
                      "positive",
                      "negative",
                      "symmetric"
                    ]
                  },
                  "distance": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "taper": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "extrude"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles",
                  "distance"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "revolve"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles",
                  "axis",
                  "angle"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "edges": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "radius": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "fillet"
                    ]
                  }
                },
                "required": [
                  "type",
                  "edges",
                  "radius"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "distance": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "edges": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "chamfer"
                    ]
                  }
                },
                "required": [
                  "type",
                  "edges",
                  "distance"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "thickness": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "type": {
                    "enum": [
                      "shell"
                    ]
                  }
                },
                "required": [
                  "type",
                  "faces",
                  "thickness"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "depth": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "diameter": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "points": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "hole"
                    ]
                  }
                },
                "required": [
                  "type",
                  "points",
                  "diameter",
                  "depth",
                  "bodies"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "loft"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "new_body",
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "path": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "profiles": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "sweep"
                    ]
                  }
                },
                "required": [
                  "type",
                  "profiles",
                  "path"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "body": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keepTools": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operation": {
                    "enum": [
                      "join",
                      "cut",
                      "intersect"
                    ]
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "tools": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "type": {
                    "enum": [
                      "combine"
                    ]
                  }
                },
                "required": [
                  "type",
                  "body",
                  "tools",
                  "operation"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "extend": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "split"
                    ]
                  }
                },
                "required": [
                  "type",
                  "bodies",
                  "plane"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "origin": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "translation": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "type": {
                    "enum": [
                      "move"
                    ]
                  }
                },
                "required": [
                  "type",
                  "bodies"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "mirror"
                    ]
                  }
                },
                "required": [
                  "type",
                  "bodies",
                  "plane"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "axis2": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "computeOption": {
                    "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",
                    "enum": [
                      "identical",
                      "optimized",
                      "adjust"
                    ]
                  },
                  "count": {
                    "maximum": 1000,
                    "minimum": 2,
                    "type": "integer"
                  },
                  "count2": {
                    "maximum": 1000,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "features": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrences": {
                    "items": {
                      "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "spacing": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "spacing2": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "rectangular_pattern"
                    ]
                  }
                },
                "required": [
                  "type",
                  "axis",
                  "count",
                  "spacing"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "bodies": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "computeOption": {
                    "description": "identical (default) repeats the first result; optimized is fastest but can drop instances that touch other geometry; adjust recomputes every instance (slowest). Ignored for occurrences.",
                    "enum": [
                      "identical",
                      "optimized",
                      "adjust"
                    ]
                  },
                  "count": {
                    "maximum": 1000,
                    "minimum": 2,
                    "type": "integer"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "features": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrences": {
                    "items": {
                      "description": "Occurrence reference returned by inspect in this document revision; all must share one parent component, where the component pattern is built.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "circular_pattern"
                    ]
                  }
                },
                "required": [
                  "type",
                  "axis",
                  "count"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "tangentChain": {
                    "type": "boolean"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "draft"
                    ]
                  }
                },
                "required": [
                  "type",
                  "faces",
                  "plane",
                  "angle"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "designation": {
                    "type": "string"
                  },
                  "faces": {
                    "items": {
                      "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                      "required": [
                        "documentId",
                        "revision",
                        "objectType"
                      ],
                      "type": "object"
                    },
                    "maxItems": 256,
                    "minItems": 1,
                    "type": "array"
                  },
                  "internal": {
                    "type": "boolean"
                  },
                  "modeled": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "documentId": {
                        "type": "string"
                      },
                      "revision": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "threadClass": {
                    "type": "string"
                  },
                  "threadType": {
                    "type": "string"
                  },
                  "type": {
                    "enum": [
                      "thread"
                    ]
                  }
                },
                "required": [
                  "type",
                  "faces",
                  "internal",
                  "threadType",
                  "designation",
                  "threadClass"
                ],
                "type": "object"
              }
            ],
            "properties": {
              "angle": {},
              "axis": {},
              "axis2": {},
              "bodies": {},
              "body": {},
              "component": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "computeOption": {},
              "count": {},
              "count2": {},
              "depth": {},
              "designation": {},
              "diameter": {},
              "direction": {},
              "distance": {},
              "edges": {},
              "extend": {},
              "faces": {},
              "features": {},
              "internal": {},
              "keepTools": {},
              "modeled": {},
              "name": {
                "type": "string"
              },
              "occurrences": {},
              "operation": {},
              "origin": {},
              "path": {},
              "plane": {},
              "points": {},
              "profiles": {},
              "radius": {},
              "spacing": {},
              "spacing2": {},
              "tangentChain": {},
              "taper": {},
              "thickness": {},
              "threadClass": {},
              "threadType": {},
              "tools": {},
              "translation": {},
              "type": {
                "enum": [
                  "extrude",
                  "revolve",
                  "fillet",
                  "chamfer",
                  "shell",
                  "hole",
                  "loft",
                  "sweep",
                  "combine",
                  "split",
                  "move",
                  "mirror",
                  "rectangular_pattern",
                  "circular_pattern",
                  "draft",
                  "thread"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type"
            ],
            "type": "object"
          },
          "feature_edit": {
            "description": "Rename/suppress a feature or change expressions of model parameters whose createdBy is that exact feature; read health and abort on downstream errors.",
            "properties": {
              "feature": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "parameters": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "suppressed": {
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "feature"
            ],
            "type": "object"
          },
          "geometry_query": {
            "description": "Complete body-scoped topology query, no arbitrary first-match selection. selection one (default) refuses zero/multiple matches; many may return empty. Geometry types are exact native types; size ranges inclusive in mm/mm2, near is minimum distance in the explicit frame; direction is outward planar face normal or linear edge tangent. Returned refs retain instance context even for component-space filters. Exceeding maxResults fails rather than truncating.",
            "properties": {
              "body": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "filters": {
                "additionalProperties": false,
                "properties": {
                  "area": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "max": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "min": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "direction": {
                    "additionalProperties": false,
                    "properties": {
                      "orientation": {
                        "enum": [
                          "same",
                          "parallel"
                        ]
                      },
                      "tolerance": {
                        "maximum": 90,
                        "minimum": 0,
                        "type": "number"
                      },
                      "vector": {
                        "items": {
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      }
                    },
                    "required": [
                      "vector"
                    ],
                    "type": "object"
                  },
                  "length": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "max": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "min": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "near": {
                    "additionalProperties": false,
                    "properties": {
                      "point": {
                        "items": {
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "tolerance": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "point",
                      "tolerance"
                    ],
                    "type": "object"
                  },
                  "radius": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "max": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "min": {
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "Plane",
                      "Cylinder",
                      "Cone",
                      "Sphere",
                      "Torus",
                      "NurbsSurface",
                      "Line3D",
                      "Arc3D",
                      "Circle3D",
                      "Ellipse3D",
                      "EllipticalArc3D",
                      "NurbsCurve3D",
                      "Point3D",
                      "degenerate"
                    ]
                  }
                },
                "required": [],
                "type": "object"
              },
              "kind": {
                "enum": [
                  "faces",
                  "edges",
                  "vertices"
                ]
              },
              "maxResults": {
                "maximum": 1024,
                "minimum": 1,
                "type": "integer"
              },
              "selection": {
                "enum": [
                  "one",
                  "many"
                ]
              },
              "space": {
                "enum": [
                  "root",
                  "component"
                ]
              }
            },
            "required": [
              "op",
              "target",
              "body",
              "kind",
              "space"
            ],
            "type": "object"
          },
          "health": {
            "description": "Read timeline warnings/errors. recompute:true also requires current target revision, sessionId and operationId.",
            "properties": {
              "recompute": {
                "default": false,
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "inspect": {
            "description": "Inspect the active Design without mutation. Returns target identity/revision, native component-space bodies and occurrence transforms, parameters and feature health.",
            "properties": {
              "bodyMetrics": {
                "description": "Read each body's physical properties and bounding box (about 10 ms a body). Default: true for designs of 200 components or fewer.",
                "type": "boolean"
              },
              "componentProperties": {
                "description": "Read each component's part number and description (cloud reads, about 0.6 s each per component on a cloud document). Default: true for 200 components or fewer.",
                "type": "boolean"
              },
              "detail": {
                "description": "target: only the target, document and counts (what a write or a BOM needs), for an assembly too big for a full inspect inside the relay's budget. Default full.",
                "enum": [
                  "full",
                  "target"
                ]
              },
              "health": {
                "description": "Read timeline health (about 22 ms a timeline item). Default: true for timelines of 200 items or fewer; otherwise use op health.",
                "type": "boolean"
              }
            },
            "required": [
              "op"
            ],
            "type": "object"
          },
          "inspect_entity": {
            "properties": {
              "entity": {
                "description": "Exact reference returned by inspect; resolves uniquely with document/revision/type/occurrence guards.",
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "entity"
            ],
            "type": "object"
          },
          "interference": {
            "description": "Analyze root-context occurrences/body proxies; returns overlap volume mm3 or touching. Does not create interference bodies.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 2,
                "type": "array"
              },
              "includeTouching": {
                "type": "boolean"
              },
              "volumeTolerance": {
                "minimum": 0,
                "type": "number"
              }
            },
            "required": [
              "op",
              "target",
              "entities"
            ],
            "type": "object"
          },
          "joint_create": {
            "description": "Create an as-built joint without moving occurrences. Non-rigid motion requires explicit joint geometry; x/y/z are joint-coordinate directions. Limits and drive values use mm/deg. Seven native motion types; ball uses joint Z pitch/X yaw; planar uses native primary slide direction reported on readback. Use regular_joint_create for geometry-solving placement.",
            "oneOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "rigid"
                    ]
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "revolute"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "slideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "slideValue": {
                    "type": "number"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "slider"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "slideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "slideValue": {
                    "type": "number"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "cylindrical"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "slideAxis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "slideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "slideValue": {
                    "type": "number"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "pin_slot"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "axis": {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "primarySlideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "primarySlideValue": {
                    "type": "number"
                  },
                  "rotationLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rotationValue": {
                    "type": "number"
                  },
                  "secondarySlideLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "secondarySlideValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "planar"
                    ]
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "geometry": {
                    "additionalProperties": false,
                    "properties": {
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "occurrenceOne": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "occurrenceTwo": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "pitchLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "pitchValue": {
                    "type": "number"
                  },
                  "rollLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "rollValue": {
                    "type": "number"
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "suppressed": {
                    "type": "boolean"
                  },
                  "target": {
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "ball"
                    ]
                  },
                  "yawLimits": {
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "maximum": {
                        "type": "number"
                      },
                      "maximumEnabled": {
                        "type": "boolean"
                      },
                      "minimum": {
                        "type": "number"
                      },
                      "minimumEnabled": {
                        "type": "boolean"
                      },
                      "rest": {
                        "type": "number"
                      },
                      "restEnabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [],
                    "type": "object"
                  },
                  "yawValue": {
                    "type": "number"
                  }
                },
                "required": [
                  "type",
                  "geometry"
                ],
                "type": "object"
              }
            ],
            "properties": {
              "axis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "geometry": {
                "additionalProperties": false,
                "properties": {
                  "entity": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keyPoint": {
                    "enum": [
                      "center",
                      "start",
                      "middle",
                      "end"
                    ]
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "occurrenceOne": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "occurrenceTwo": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "pitchLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "pitchValue": {
                "type": "number"
              },
              "primarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "primarySlideValue": {
                "type": "number"
              },
              "rollLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rollValue": {
                "type": "number"
              },
              "rotationLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rotationValue": {
                "type": "number"
              },
              "secondarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "secondarySlideValue": {
                "type": "number"
              },
              "slideAxis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "slideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "slideValue": {
                "type": "number"
              },
              "suppressed": {
                "type": "boolean"
              },
              "type": {
                "enum": [
                  "rigid",
                  "revolute",
                  "slider",
                  "cylindrical",
                  "pin_slot",
                  "planar",
                  "ball"
                ]
              },
              "yawLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "yawValue": {
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type",
              "occurrenceOne",
              "occurrenceTwo"
            ],
            "type": "object"
          },
          "joint_delete": {
            "description": "Delete one selected Joint or AsBuiltJoint with recovery verification.",
            "properties": {
              "joint": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "joint"
            ],
            "type": "object"
          },
          "joint_edit": {
            "description": "Edit joint name/suppression, enabled limits, rest and drive values; wrong motion type or out-of-limit values fail with recovery. For driven root joints, active motion links must preserve their settings and their partner motion must follow the native ratio; a coupling mismatch aborts.",
            "properties": {
              "joint": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "pitchLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "pitchValue": {
                "type": "number"
              },
              "primarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "primarySlideValue": {
                "type": "number"
              },
              "rollLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rollValue": {
                "type": "number"
              },
              "rotationLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rotationValue": {
                "type": "number"
              },
              "secondarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "secondarySlideValue": {
                "type": "number"
              },
              "slideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "slideValue": {
                "type": "number"
              },
              "suppressed": {
                "type": "boolean"
              },
              "yawLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "yawValue": {
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "joint"
            ],
            "type": "object"
          },
          "joint_origin_create": {
            "description": "Create a native component-definition joint origin from guarded native geometry, with mm offsets/deg angle and optional straight axis references. Child occurrence origin references are exposed by inspect_entity(occurrence).",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "component": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "flipped": {
                "type": "boolean"
              },
              "geometry": {
                "additionalProperties": false,
                "properties": {
                  "edge": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "entity": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keyPoint": {
                    "enum": [
                      "center",
                      "start",
                      "middle",
                      "end"
                    ]
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "offsetX": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetY": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetZ": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "xAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "zAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "geometry"
            ],
            "type": "object"
          },
          "joint_origin_delete": {
            "description": "Delete a native joint origin; unhealthy downstream joints cause transaction rollback.",
            "properties": {
              "origin": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "origin"
            ],
            "type": "object"
          },
          "joint_origin_edit": {
            "description": "Edit a native joint origin definition; rolls before its timeline item and restores the original marker in finally. Recomputes and verifies attachment, axes, offsets, angle, name and flip.",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "flipped": {
                "type": "boolean"
              },
              "geometry": {
                "additionalProperties": false,
                "properties": {
                  "edge": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "entity": {
                    "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "keyPoint": {
                    "enum": [
                      "center",
                      "start",
                      "middle",
                      "end"
                    ]
                  }
                },
                "required": [
                  "entity"
                ],
                "type": "object"
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "offsetX": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetY": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetZ": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "origin": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "xAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "zAxisEntity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "origin"
            ],
            "type": "object"
          },
          "material_assign": {
            "description": "Assign a loaded library or document material to an exact native Component/BRepBody; verify material ID readback with model transaction recovery. Query assembly_properties for resulting mass.",
            "properties": {
              "entity": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "libraryId": {
                "type": "string"
              },
              "materialId": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "entity",
              "materialId"
            ],
            "type": "object"
          },
          "material_list": {
            "description": "List loaded material libraries and matching materials by stable library/material IDs. Omit libraryId to search the document's materials and then every loaded library; each row names the libraryId material_assign needs (null for the document's own).",
            "properties": {
              "libraryId": {
                "type": "string"
              },
              "limit": {
                "maximum": 1000,
                "minimum": 1,
                "type": "integer"
              },
              "query": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "target"
            ],
            "type": "object"
          },
          "mcmaster_discover": {
            "description": "Discover Fusion native Insert McMaster-Carr command and requirements in the active design.",
            "properties": {},
            "required": [
              "op"
            ],
            "type": "object"
          },
          "mcmaster_open": {
            "description": "Invoke Fusion native McMaster UI in the targeted Hybrid design. Interactive external operation: completion/insert/cancel stays with Fusion; inspect afterward. Idempotency records launch only.",
            "properties": {},
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "measure": {
            "description": "Native engineering minimum distance or angle in root assembly space. Non-root definition refs require an occurrence context. Distance needs2 entities; angle needs2 lines/planes or3 points (second apex). Returns mm/deg and native witness positions in root mm. witnessValidation identifies native points or native geometry directions used for valid parallel angles with degenerate native points; degenerate point angles and unavailable/inconsistent witnesses fail.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 3,
                "minItems": 2,
                "type": "array"
              },
              "space": {
                "enum": [
                  "root"
                ]
              },
              "type": {
                "enum": [
                  "distance",
                  "angle"
                ]
              }
            },
            "required": [
              "op",
              "target",
              "type",
              "space",
              "entities"
            ],
            "type": "object"
          },
          "motion_link_create": {
            "description": "Create a native motion link between two root-owned joints, or two different motions of jointOne when jointTwo is omitted. Positive ratio magnitudes use mm for translation and deg for rotation; reversed selects opposite direction. Requires the November 2025+ API; no script fallback.",
            "properties": {
              "jointOne": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "jointTwo": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "motionOne": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "motionTwo": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "reversed": {
                "type": "boolean"
              },
              "valueOne": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "valueTwo": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "jointOne",
              "motionOne",
              "motionTwo",
              "valueOne",
              "valueTwo"
            ],
            "type": "object"
          },
          "motion_link_delete": {
            "description": "Delete a root-owned motion link under the same transaction/recovery contract.",
            "properties": {
              "link": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "link"
            ],
            "type": "object"
          },
          "motion_link_edit": {
            "description": "Edit a root-owned motion link ratio, degree-of-freedom pair, direction, name or suppression. Joint membership is immutable; recreate the link to change members. Verify exact joint identities, ratio, flags and health.",
            "properties": {
              "link": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "motionOne": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "motionTwo": {
                "enum": [
                  "rotation",
                  "slide",
                  "primarySlide",
                  "secondarySlide",
                  "pitch",
                  "roll",
                  "yaw"
                ]
              },
              "name": {
                "maxLength": 120,
                "minLength": 1,
                "type": "string"
              },
              "reversed": {
                "type": "boolean"
              },
              "suppressed": {
                "type": "boolean"
              },
              "valueOne": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "valueTwo": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "link"
            ],
            "type": "object"
          },
          "new_design": {
            "description": "Create an unnamed unsaved parametric hybrid Design; name is retained as requestedName metadata to keep failure recovery free of save dialogs. Optional box dimensions in mm create a driving-parameter fixture. Never edits an existing document.",
            "properties": {
              "box": {
                "additionalProperties": false,
                "properties": {
                  "depth": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  "height": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  "width": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  }
                },
                "required": [
                  "width",
                  "height",
                  "depth"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId"
            ],
            "type": "object"
          },
          "occurrence_delete": {
            "description": "Delete one selected occurrence through the shared transaction executor.",
            "properties": {
              "occurrence": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "occurrence"
            ],
            "type": "object"
          },
          "occurrence_insert": {
            "description": "Insert another occurrence of an existing definition; independentCopy:true uses Paste New to create a separate definition. Nested placement is in parent component coordinates. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
            "properties": {
              "component": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "independentCopy": {
                "type": "boolean"
              },
              "parent": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "component"
            ],
            "type": "object"
          },
          "occurrence_update": {
            "description": "Set occurrence pose in its assembly context and capture position; explicit grounding/ungrounding. Grounded or constrained transforms fail with recovery.",
            "properties": {
              "grounded": {
                "type": "boolean"
              },
              "groundedToParent": {
                "type": "boolean"
              },
              "method": {
                "description": "How a new transform is kept. auto (default): edit the occurrence's initial position when Fusion allows it (a root-level occurrence without joints or patterns), which adds nothing to the timeline, else capture a Position snapshot. initial_position: refuse rather than capture. capture: always capture a snapshot. The reply's placement says which was used.",
                "enum": [
                  "auto",
                  "initial_position",
                  "capture"
                ],
                "type": "string"
              },
              "occurrence": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "transform": {
                "additionalProperties": false,
                "description": "Absolute rotation about the given nonzero axis through origin (deg), then translation (mm). Create/insert use parent component coordinates; updates use the selected occurrence assembly context.",
                "properties": {
                  "angle": {
                    "type": "number"
                  },
                  "axis": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "occurrence"
            ],
            "type": "object"
          },
          "parameter_batch": {
            "description": "Atomic sequential create/set/delete parameter edits with one recompute+health gate; delete supports user parameters only. Any failure aborts all edits and reports semantic recovery.",
            "properties": {
              "changes": {
                "items": {
                  "oneOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "action": {
                          "enum": [
                            "create"
                          ]
                        },
                        "comment": {
                          "type": "string"
                        },
                        "expression": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "unit": {
                          "enum": [
                            "mm",
                            "deg",
                            "kg",
                            ""
                          ]
                        }
                      },
                      "required": [
                        "action",
                        "name",
                        "expression",
                        "unit"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "action": {
                          "enum": [
                            "set"
                          ]
                        },
                        "expression": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "action",
                        "name",
                        "expression"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "action": {
                          "enum": [
                            "delete"
                          ]
                        },
                        "name": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "action",
                        "name"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 128,
                "minItems": 1,
                "type": "array"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "changes"
            ],
            "type": "object"
          },
          "parameter_create": {
            "properties": {
              "comment": {
                "type": "string"
              },
              "expression": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "unit": {
                "enum": [
                  "mm",
                  "deg",
                  "kg",
                  ""
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "name",
              "expression",
              "unit"
            ],
            "type": "object"
          },
          "parameter_set": {
            "description": "Set an expression, recompute and inspect health. Failure restores old expression and reports a semantic recovery witness; not an atomic transaction.",
            "properties": {
              "expression": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "name",
              "expression"
            ],
            "type": "object"
          },
          "plane_create": {
            "description": "Create offset plane (offset in mm) or angled plane around axis (angle in deg).",
            "oneOf": [
              {
                "additionalProperties": false,
                "properties": {
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "offset": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "offset"
                    ]
                  }
                },
                "required": [
                  "type",
                  "offset"
                ],
                "type": "object"
              },
              {
                "additionalProperties": false,
                "properties": {
                  "angle": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "axis": {
                    "oneOf": [
                      {
                        "enum": [
                          "x",
                          "y",
                          "z"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "component": {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "op": {
                    "type": "string"
                  },
                  "operationId": {
                    "type": "string"
                  },
                  "plane": {
                    "oneOf": [
                      {
                        "enum": [
                          "xy",
                          "xz",
                          "yz"
                        ]
                      },
                      {
                        "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "sessionId": {
                    "type": "string"
                  },
                  "target": {
                    "required": [
                      "documentId",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": {
                    "enum": [
                      "angle"
                    ]
                  }
                },
                "required": [
                  "type",
                  "axis",
                  "angle"
                ],
                "type": "object"
              }
            ],
            "properties": {
              "angle": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "axis": {
                "oneOf": [
                  {
                    "enum": [
                      "x",
                      "y",
                      "z"
                    ]
                  },
                  {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  }
                ]
              },
              "component": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "offset": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "plane": {
                "oneOf": [
                  {
                    "enum": [
                      "xy",
                      "xz",
                      "yz"
                    ]
                  },
                  {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  }
                ]
              },
              "type": {
                "enum": [
                  "offset",
                  "angle"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type"
            ],
            "type": "object"
          },
          "ray_cast": {
            "description": "Cast batches of rays against named occurrences, without changing anything (assembly planning: what a part seats on, what blocks its way in, whether a tool reaches a screw). Each ray is cast against each occurrence it names, in that occurrence's own component coordinates, about a millisecond on a part, where a ray against a big subassembly's component (thousands of bodies) took a quarter of a second. Returns hits: a row per ray answered, [[occurrence index, distance in mm rounded to 0.01], ...], one entry per occurrence the ray meets within length (its nearest hit), nearest first; a ray that starts inside a body meets that body's exit face. Also cast (rays answered, in order), complete, missing (indexes with no occurrence at that path), failed (casts Fusion refused) and seconds. Not journaled: it stops at budgetSeconds or before its reply passes 1 MiB (stopped: budget|reply_bytes) and the caller sends the remaining rays. Requests over the CLI's argument limit (128 KiB) go in several calls.",
            "properties": {
              "budgetSeconds": {
                "description": "Stop casting after this many seconds (default 30) so the reply comes back inside the relay's 60 s; the reply then has complete:false and answers the first `cast` rays. Send the rest in another call.",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              },
              "occurrences": {
                "description": "Full root-context paths of the occurrences the rays are cast against; each ray names its own by index.",
                "items": {
                  "type": "string"
                },
                "maxItems": 4096,
                "type": "array"
              },
              "rays": {
                "description": "Rays in root space. Each is cast against each occurrence it names, in that occurrence's own component coordinates; hidden bodies count too. An empty list only checks the target.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "against": {
                      "description": "Indexes into occurrences.",
                      "items": {
                        "maximum": 4095,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxItems": 256,
                      "minItems": 1,
                      "type": "array"
                    },
                    "direction": {
                      "description": "Direction (any nonzero length).",
                      "items": {
                        "maximum": 1000000000.0,
                        "minimum": -1000000000.0,
                        "type": "number"
                      },
                      "maxItems": 3,
                      "minItems": 3,
                      "type": "array"
                    },
                    "length": {
                      "description": "Hits farther than this (mm) are dropped.",
                      "exclusiveMinimum": 0,
                      "maximum": 1000000000.0,
                      "type": "number"
                    },
                    "origin": {
                      "description": "Start point, mm.",
                      "items": {
                        "maximum": 1000000000.0,
                        "minimum": -1000000000.0,
                        "type": "number"
                      },
                      "maxItems": 3,
                      "minItems": 3,
                      "type": "array"
                    }
                  },
                  "required": [
                    "origin",
                    "direction",
                    "length",
                    "against"
                  ],
                  "type": "object"
                },
                "maxItems": 8192,
                "type": "array"
              },
              "target": {
                "additionalProperties": false,
                "description": "From assembly_layout or inspect. The active document must be this one; with revision the model must still be at it. Without revision no digest is computed and the reply's target carries none.",
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "description": "Refuse with stale_revision unless the model is still at this revision (costs the revision digest, about 5 s on a 4,579-occurrence assembly).",
                    "type": "string"
                  }
                },
                "required": [
                  "documentId"
                ],
                "type": "object"
              },
              "unit": {
                "enum": [
                  "mm"
                ],
                "type": "string"
              }
            },
            "required": [
              "op",
              "target",
              "unit",
              "rays"
            ],
            "type": "object"
          },
          "regular_joint_create": {
            "description": "Create a geometry-solving regular joint in the root component using two distinct instance-context attachments or joint origins. All seven native motion families; offsets mm, angle and angular limits deg. Read back freshly resolved attachment graph, native parameters and root-space occurrence placement. Root/non-root sides must be unambiguous; both grounded and ancestor/descendant pairs are refused. Inferred joints are unsupported. Existing pending positions must be captured or reverted first. Before applying drive values, checks native joint-transform anchor offset magnitude/axiality and zero-angle axis collinearity. Native joint matrices have explicit provenance; physical angle/flip sense requires independent occurrence-geometry acceptance.",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "axis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "flipped": {
                "type": "boolean"
              },
              "geometryOne": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "geometryTwo": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "locked": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "offset": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "pitchLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "pitchValue": {
                "type": "number"
              },
              "primarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "primarySlideValue": {
                "type": "number"
              },
              "rollLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rollValue": {
                "type": "number"
              },
              "rotationLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "rotationValue": {
                "type": "number"
              },
              "secondarySlideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "secondarySlideValue": {
                "type": "number"
              },
              "slideAxis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "slideLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "slideValue": {
                "type": "number"
              },
              "type": {
                "enum": [
                  "rigid",
                  "revolute",
                  "slider",
                  "cylindrical",
                  "pin_slot",
                  "planar",
                  "ball"
                ]
              },
              "yawLimits": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "maximum": {
                    "type": "number"
                  },
                  "maximumEnabled": {
                    "type": "boolean"
                  },
                  "minimum": {
                    "type": "number"
                  },
                  "minimumEnabled": {
                    "type": "boolean"
                  },
                  "rest": {
                    "type": "number"
                  },
                  "restEnabled": {
                    "type": "boolean"
                  }
                },
                "required": [],
                "type": "object"
              },
              "yawValue": {
                "type": "number"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "type",
              "geometryOne",
              "geometryTwo"
            ],
            "type": "object"
          },
          "regular_joint_edit": {
            "description": "Redefine root-owned regular joint geometry, motion family, offsets, angle, flip or lock. Restore timeline in finally and verify after recompute. Use joint_edit for name, suppression, limits and drive values; joint_delete for deletion.",
            "properties": {
              "angle": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "axis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "flipped": {
                "type": "boolean"
              },
              "geometryOne": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "geometryTwo": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "edge": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "entity": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      },
                      "keyPoint": {
                        "enum": [
                          "center",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    },
                    "required": [
                      "entity"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "origin": {
                        "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                        "required": [
                          "documentId",
                          "revision",
                          "objectType"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "origin"
                    ],
                    "type": "object"
                  }
                ]
              },
              "joint": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "locked": {
                "type": "boolean"
              },
              "offset": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetX": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "offsetY": {
                "description": "Number in mm (angle in deg), or a dimensionally valid Fusion parameter expression.",
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "maxLength": 512,
                    "minLength": 1,
                    "type": "string"
                  }
                ]
              },
              "slideAxis": {
                "enum": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "type": {
                "enum": [
                  "rigid",
                  "revolute",
                  "slider",
                  "cylindrical",
                  "pin_slot",
                  "planar",
                  "ball"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "joint"
            ],
            "type": "object"
          },
          "render_image": {
            "description": "Render a photoreal image with Fusion's local renderer: from a standard view fitted to the design (iso by default) or the current view, at a size and quality (25 to 100; 75 by default), in a lighting environment (a Fusion library one or an .hdr/.exr file) and with a backdrop (the environment or a colour), optionally on a transparent background or without the ground. The renderer never draws joint, sketch or construction glyphs; a standard view is fitted with them hidden, so it frames the parts. Waits for the render, then restores the camera, every render setting and the document's scene. The image reaches filename only when the render finished in time; one that runs past timeoutSeconds is cancelled and writes nothing. Journaled: a large, high-quality render runs for minutes, so follow it with fusion_mech_operation_status.",
            "properties": {
              "background": {
                "description": "What shows behind the model: \"environment\" (the environment image) or a colour \"#rrggbb\". Default: the document's own backdrop. Not with transparent.",
                "type": "string"
              },
              "environment": {
                "description": "The environment that lights the scene: a Fusion library environment by name or id, any case (Sharp Highlights, Rim Highlights, Cool Light, Warm Light, Soft Light, Grid Light, Crossroads, Dry lake bed, Field, Photobooth, Plaza, Skylight, Snow Field; render_scene_inspect lists them), or an absolute path to an .hdr or .exr image. Default: the document's own. The document's backdrop stays as it is unless background says otherwise.",
                "type": "string"
              },
              "filename": {
                "description": "Absolute .png or .jpg path on the PC.",
                "type": "string"
              },
              "ground": {
                "description": "Show the ground plane (shadows and reflections); default leaves the document's setting.",
                "type": "boolean"
              },
              "height": {
                "maximum": 4320,
                "minimum": 64,
                "type": "integer"
              },
              "operationId": {
                "type": "string"
              },
              "overwrite": {
                "type": "boolean"
              },
              "quality": {
                "description": "25 to 100: 75 is Fusion's Final and 100 its Excellent. Fusion refuses less than 25.",
                "maximum": 100,
                "minimum": 25,
                "type": "integer"
              },
              "timeoutSeconds": {
                "description": "Default 600. A render still running then is cancelled (its render process is ended) and writes nothing.",
                "maximum": 3600,
                "minimum": 10,
                "type": "number"
              },
              "transparent": {
                "type": "boolean"
              },
              "view": {
                "enum": [
                  "iso",
                  "iso-left",
                  "front",
                  "back",
                  "top",
                  "bottom",
                  "left",
                  "right",
                  "current"
                ],
                "type": "string"
              },
              "width": {
                "maximum": 7680,
                "minimum": 64,
                "type": "integer"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "filename"
            ],
            "type": "object"
          },
          "render_scene_inspect": {
            "description": "Guarded main-thread read of current viewport camera, render settings and up to 32 environments. Optional detached world-mm camera is constructed and read back without viewport assignment. Missing fields return PARTIAL; observationComplete covers only bounded available scope. sceneWitnessComplete and renderQualified remain false. No rendering, workspace activation or scene writes.",
            "properties": {
              "camera": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "extents": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": 1e-06,
                          "type": "number"
                        },
                        "maxItems": 2,
                        "minItems": 2,
                        "type": "array"
                      },
                      "eye": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "space": {
                        "enum": [
                          "world"
                        ],
                        "type": "string"
                      },
                      "target": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "orthographic"
                        ],
                        "type": "string"
                      },
                      "unit": {
                        "enum": [
                          "mm"
                        ],
                        "type": "string"
                      },
                      "upVector": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      }
                    },
                    "required": [
                      "type",
                      "space",
                      "unit",
                      "eye",
                      "target",
                      "upVector",
                      "extents"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "angleUnit": {
                        "enum": [
                          "deg"
                        ],
                        "type": "string"
                      },
                      "eye": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "perspectiveAngle": {
                        "exclusiveMinimum": 0,
                        "maximum": 179.999999999,
                        "type": "number"
                      },
                      "space": {
                        "enum": [
                          "world"
                        ],
                        "type": "string"
                      },
                      "target": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      },
                      "type": {
                        "enum": [
                          "perspective"
                        ],
                        "type": "string"
                      },
                      "unit": {
                        "enum": [
                          "mm"
                        ],
                        "type": "string"
                      },
                      "upVector": {
                        "items": {
                          "maximum": 1000000000.0,
                          "minimum": -1000000000.0,
                          "type": "number"
                        },
                        "maxItems": 3,
                        "minItems": 3,
                        "type": "array"
                      }
                    },
                    "required": [
                      "type",
                      "space",
                      "unit",
                      "eye",
                      "target",
                      "upVector",
                      "perspectiveAngle",
                      "angleUnit"
                    ],
                    "type": "object"
                  }
                ]
              },
              "maxEnvironments": {
                "maximum": 32,
                "minimum": 0,
                "type": "integer"
              },
              "sessionId": {
                "type": "string"
              },
              "target": {
                "additionalProperties": false,
                "properties": {
                  "documentId": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string"
                  }
                },
                "required": [
                  "documentId",
                  "revision"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "target"
            ],
            "type": "object"
          },
          "rigid_group_create": {
            "description": "Create a native rigid group from exact occurrence instances; includeChildren defaults true.",
            "properties": {
              "includeChildren": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "occurrences": {
                "items": {
                  "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 2,
                "type": "array"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "occurrences"
            ],
            "type": "object"
          },
          "rigid_group_delete": {
            "description": "Delete an exact rigid group with transaction recovery.",
            "properties": {
              "group": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "group"
            ],
            "type": "object"
          },
          "rigid_group_edit": {
            "description": "Rename or suppress an exact rigid group with transaction recovery.",
            "properties": {
              "group": {
                "description": "Guarded reference from inspect in this document/revision; occurrence references retain instance context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "suppressed": {
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "group"
            ],
            "type": "object"
          },
          "sketch_constraint": {
            "description": "Constrain entities in one sketch. midpoint order is point,line; symmetry order entity1,entity2,symmetryLine. fix sets one entity fixed.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "type": {
                "enum": [
                  "horizontal",
                  "vertical",
                  "coincident",
                  "parallel",
                  "perpendicular",
                  "tangent",
                  "equal",
                  "concentric",
                  "collinear",
                  "midpoint",
                  "symmetry",
                  "fix"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "type",
              "entities"
            ],
            "type": "object"
          },
          "sketch_create": {
            "description": "Create a native component-definition sketch on an origin/construction plane or planar face. Coordinates in subsequent geometry are sketch-space mm.",
            "properties": {
              "component": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "plane": {
                "oneOf": [
                  {
                    "enum": [
                      "xy",
                      "xz",
                      "yz"
                    ]
                  },
                  {
                    "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                    "required": [
                      "documentId",
                      "revision",
                      "objectType"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          },
          "sketch_curve_edit": {
            "description": "Edit one native sketch curve with sketch-space mm pick. trim removes the nearest segment; extend chooses nearest endpoint; split requires an interior on-curve point; break uses neighboring intersections. Fresh replacement refs are returned; original may be deleted. In-place extend returns the original with a fresh ref only after its geometry change survives recompute. No change or empty break/split fails. Full trim deletion requires allowDelete true. Linked/derived/deferred-compute geometry refused.",
            "properties": {
              "action": {
                "enum": [
                  "trim",
                  "extend",
                  "split",
                  "break"
                ]
              },
              "allowDelete": {
                "type": "boolean"
              },
              "createConstraints": {
                "type": "boolean"
              },
              "curve": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "pick": {
                "items": {
                  "type": "number"
                },
                "maxItems": 3,
                "minItems": 2,
                "type": "array"
              },
              "sketch": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "sketch",
              "curve",
              "action",
              "pick"
            ],
            "type": "object"
          },
          "sketch_diagnostics": {
            "description": "Read native sketch health/message, fully-constrained/fixed/linked/reference flags, geometric constraints and driving dimensions. Reports no solver DOF count or conflict-set explanation; no recompute/mutation.",
            "properties": {
              "sketch": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "target",
              "sketch"
            ],
            "type": "object"
          },
          "sketch_dimension": {
            "description": "Add driving dimensions. Distance uses two point references; radius/diameter one curve; angle two lines. Numeric expressions use mm or deg.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "expression": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "parameterName": {
                "type": "string"
              },
              "position": {
                "items": {
                  "type": "number"
                },
                "maxItems": 3,
                "minItems": 2,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "type": {
                "enum": [
                  "distance",
                  "horizontal",
                  "vertical",
                  "radius",
                  "diameter",
                  "angle"
                ]
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "type",
              "entities",
              "expression",
              "position"
            ],
            "type": "object"
          },
          "sketch_edit": {
            "description": "Move sketch points/endpoints/centers in sketch-space mm, change radius or construction/fixed flags; solver failure aborts the operation.",
            "properties": {
              "changes": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                  "center": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "construction": {
                    "type": "boolean"
                  },
                  "end": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "fixed": {
                    "type": "boolean"
                  },
                  "position": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  },
                  "radius": {
                    "type": "number"
                  },
                  "start": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 2,
                    "type": "array"
                  }
                },
                "required": [],
                "type": "object"
              },
              "entity": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "entity",
              "changes"
            ],
            "type": "object"
          },
          "sketch_geometry": {
            "description": "Create a transactionally grouped set of sketch primitives. Numeric geometry uses mm and arc sweeps/polygon angles use deg.",
            "properties": {
              "items": {
                "items": {
                  "oneOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "position": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "point"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "position"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "construction": {
                          "type": "boolean"
                        },
                        "end": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "line"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "start",
                        "end"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "construction": {
                          "type": "boolean"
                        },
                        "end": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "rectangle"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "start",
                        "end"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "center": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "radius": {
                          "exclusiveMinimum": 0,
                          "type": "number"
                        },
                        "type": {
                          "enum": [
                            "circle"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "center",
                        "radius"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "center": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "sweep": {
                          "type": "number"
                        },
                        "type": {
                          "enum": [
                            "arc"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "center",
                        "start",
                        "sweep"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "angle": {
                          "type": "number"
                        },
                        "center": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "radius": {
                          "exclusiveMinimum": 0,
                          "type": "number"
                        },
                        "sides": {
                          "maximum": 128,
                          "minimum": 3,
                          "type": "integer"
                        },
                        "type": {
                          "enum": [
                            "polygon"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "center",
                        "radius",
                        "sides"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "construction": {
                          "type": "boolean"
                        },
                        "end": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "start": {
                          "items": {
                            "type": "number"
                          },
                          "maxItems": 3,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "slot"
                          ]
                        },
                        "width": {
                          "exclusiveMinimum": 0,
                          "type": "number"
                        }
                      },
                      "required": [
                        "type",
                        "start",
                        "end",
                        "width"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "closed": {
                          "type": "boolean"
                        },
                        "construction": {
                          "type": "boolean"
                        },
                        "points": {
                          "items": {
                            "items": {
                              "type": "number"
                            },
                            "maxItems": 3,
                            "minItems": 2,
                            "type": "array"
                          },
                          "maxItems": 128,
                          "minItems": 2,
                          "type": "array"
                        },
                        "type": {
                          "enum": [
                            "spline"
                          ]
                        }
                      },
                      "required": [
                        "type",
                        "points"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maxItems": 128,
                "minItems": 1,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "items"
            ],
            "type": "object"
          },
          "sketch_offset": {
            "description": "Modern createOffsetInput/addOffset2. Curves must be native 2D, unique, in connected flow order (never reordered). Nonzero signed mm number/expression: positive right, negative left; a single circle/ellipse positive outside. Topology matched defaults true. Read back native signed distance, parent/child refs and controlling parameter after recompute. No retired Sketch.offset fallback.",
            "properties": {
              "curves": {
                "items": {
                  "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "distance": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "sketch": {
                "description": "Current guarded entity reference; root-space child geometry requires its exact occurrence context.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              },
              "topologyMatched": {
                "type": "boolean"
              }
            },
            "required": [
              "op",
              "target",
              "sessionId",
              "operationId",
              "sketch",
              "curves",
              "distance"
            ],
            "type": "object"
          },
          "sketch_project": {
            "description": "Project selected topology into a sketch with Fusion associative projection.",
            "properties": {
              "entities": {
                "items": {
                  "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                  "required": [
                    "documentId",
                    "revision",
                    "objectType"
                  ],
                  "type": "object"
                },
                "maxItems": 256,
                "minItems": 1,
                "type": "array"
              },
              "sketch": {
                "description": "Reference returned by inspect/inspect_entity in this document revision; native component-definition references for authoring.",
                "required": [
                  "documentId",
                  "revision",
                  "objectType"
                ],
                "type": "object"
              }
            },
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target",
              "sketch",
              "entities"
            ],
            "type": "object"
          },
          "transaction_probe": {
            "description": "Verify runtime PTransaction abort+commit using temporary user parameters, remove probe data and compare semantic restoration. Required once per running add-in session before feature/sketch/atomic-batch writes. Returns fresh target; inspect again for current references.",
            "properties": {},
            "required": [
              "op",
              "sessionId",
              "operationId",
              "target"
            ],
            "type": "object"
          }
        },
        "sessionId": "required for writes from mech_capabilities",
        "target": "existing-document writes: {documentId,revision} from inspect"
      },
      "longRunning": true,
      "name": "fusion_mechanical",
      "output": {
        "data": "operation result including fresh target",
        "durability": "terminalRecorded and recorded phase for durable writes",
        "errorCode": "stable str on failure",
        "operationId": "str on writes",
        "outcome": "unknown or not_executed on storage/delivery failure",
        "recovery": "reported on failed mutation",
        "sessionId": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_mech_operation_status",
      "summary": "Guarded main-thread parametric parts and assemblies: sketches, solid features, atomic parameter edits, component definitions/copies/placement, seven as-built joint motions and limits, rigid groups, interference, materials and assembly mass/center of mass, local supplier STEP/SAT import with SHA/provenance, native McMaster command, structured/flat BOM CSV, topology readback, health and safe exports. Geometry queries refuse ambiguous selections; root-space distance/angle measurements return witness points. Typed sketch trim/extend/split/break and signed modern offsets, reference-defined construction axes and native sketch constraint diagnostics are available through exact operation schemas. Regular geometry-solving joints, joint origins and native motion links have guarded typed operations, exact attachment/parameter readback and timeline restoration. Read-only configuration inspection and active-row BOM provenance are available; configuration lifecycle and configured-design model writes remain disabled pending native recovery/archive gates. Incomplete configuration scope also blocks complete BOM output. Typed model mutations use runtime-proven PTransaction recovery; transaction_probe verifies the backend (new_design does this automatically). Writes require sessionId,operationId and current target {documentId,revision}. Durable admission must commit before dispatch. Retry exact args with the same ID; query durable status after timeout. Old-session history is readable but never replayed. Storage failure after execution returns reconciliation-required, preserving available evidence without claiming rollback. References expire on model changes. Files/document lifecycle are outside model transactions.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the board",
        "footprint": "one footprint",
        "library": "a .lbr (with footprint), default the open board",
        "limit": "default 50"
      },
      "longRunning": false,
      "name": "fusion_model_check",
      "output": {
        "checked": "int",
        "ok": "bool",
        "parts": "[{name, models: [{path, location, found, hasGeometry}], issues}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Per part, is there a 3D model and does its cloud file open for this account (the standard's model_check), for a board or a .lbr footprint. Fusion can't say whether one holds geometry without opening it, so hasGeometry is null. Read only.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "boardId": "required from routing_state",
        "expectDocument": "required exact board name",
        "expectedRevision": "required from routing_state",
        "parts": "required [{ref, x, y, rotation}] rotation in degrees or an EAGLE rotation like R90 / MR180"
      },
      "longRunning": false,
      "name": "fusion_move_parts",
      "output": {
        "mismatched": "[{ref,want,got}]",
        "moved": "[ref]",
        "revision": "str",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Place parts on the live board: one MOVE (absolute, mm) and ROTATE per part, each its own undo step, then a fresh export reads every element back; if any part didn't land, every move is undone. A rotation given as a number keeps the part's side, and is EAGLE's angle for that side. To change side, give side (top or bottom) or flip:true, or a string that names it (R90 top, MR90 bottom); parts that changed side are listed in sideChanged, and their tracks no longer reach their pads until they're routed again. The layout half of the AI flow's Fusion lane (adom-aiflow place land). Coordinates are Fusion's (y up).",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "clip": "required str (clip name without .mp3)"
      },
      "longRunning": false,
      "name": "fusion_narrate",
      "output": {
        "clip": "str",
        "file": "str",
        "startedAt": "float"
      },
      "statusVerb": null,
      "summary": "Play one bundled narration clip on the box now (the guided tour's voice): dock, dashboard, or any <beat>[-a|-b] clip in resources/demo-audio. A driver speaks the dock bar and dashboard lines with it before the tour starts. Returns startedAt (epoch seconds) so a recording can be cut on it; the tour's own narration stops it when a beat begins.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_net_classes",
      "output": {
        "classes": "[{name,number,widthMm,drillMm,clearances:[{toClass,mm}],nets}]",
        "count": "int"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The board's net classes with their width, drill, class-to-class clearances and member nets.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name",
        "limit": "int, default 4000 pads",
        "net": "optional: one net (case-insensitive)"
      },
      "longRunning": false,
      "name": "fusion_net_connections",
      "output": {
        "count": "int",
        "nets": "[{net,pads,span:[x0,y0,x1,y1],airlineMm}]",
        "pads": "[{net,pad,x,y,layer}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Every pad with its net as Designator.Pad and position, and per net its span and airline length (the minimum spanning tree over its pads, the shortest copper that could join them). net filters to one net.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "nets": [
          "D_P",
          "D_N"
        ]
      },
      "input": {
        "expectDocument": "required: the board's name",
        "groups": "[{nets, toleranceMm?}]",
        "nets": "[net] (default every routed net)",
        "pairs": "[{name?, pos, neg}]"
      },
      "longRunning": false,
      "name": "fusion_net_lengths",
      "output": {
        "engine": "str",
        "groups": "[{nets, spreadMm, withinTolerance, longest}]",
        "nets": "[{net, lengthMm, byLayer, vias, segments}]",
        "pairs": "[{name, pos, neg, posMm, negMm, skewMm}]"
      },
      "statusVerb": null,
      "summary": "Routed length of every net (or the ones named) on the live board, by layer with its vias; the skew inside each differential pair (default the pairs the net names spell, as fusion_diff_pairs); and the spread of matched-length groups against a tolerance (the standard's net_lengths): the shared checks engine.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "expect": "optional {net:[\"U1.3\",...]}: compare pin by pin",
        "expectDocument": "the active board's exact name (live read)",
        "net": "optional: one net (case-insensitive)",
        "schPath": "OR an EAGLE .sch / Fusion .fsch on the Fusion machine (file read, Fusion need not run)"
      },
      "longRunning": false,
      "name": "fusion_netlist",
      "output": {
        "mismatches": "[{net,missing,extra} | {net,unexpected}] (with expect)",
        "netCount": "int",
        "nets": "{net:[ref.pad]}",
        "ok": "bool (with expect)",
        "pinsWithoutPad": "[part.gate.pin] (schPath: supply symbols and pins with no pad)",
        "revision": "str (live)"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The compiled netlist: every net with its pads as Designator.Pad (U1.3). From the live board in the background (expectDocument; Fusion keeps board and schematic in sync), or from a schematic FILE without Fusion (schPath: an EAGLE .sch or Fusion .fsch; pins resolved to pads through each device's connects). expect compares it pin by pin with the circuit you meant; net returns one net.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "brdPath": "C:/Users/me/adom-lib/MyBoard.brd",
        "schPath": "C:/Users/me/adom-lib/MyBoard.sch"
      },
      "input": {
        "brdPath": "optional str (defaults to sibling .brd)",
        "schPath": "required str (Windows path to .sch)"
      },
      "longRunning": false,
      "name": "fusion_new_electronics_from_eagle",
      "output": {
        "imported": "list",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Import a legacy EAGLE .sch (+ paired .brd) into a NEW Fusion electronics design so the parts INSTANTIATE (schematic + populated board, lands in the PCB editor). The ONLY way to author a board from EAGLE source: Document.newDesignFromLocal opens the schematic editor but does NOT instantiate parts, and the Fusion-native .fsch/.fbrd container is opaque binary you can't build offline. This fires Fusion's own ImportSCHAndBRDCmd and drives BOTH native Open dialogs (the .sch then the .brd) in the BACKGROUND via desktop_ui_click by accessible name (no foreground). Stage both files to Windows first (send_files). After: fusion_show_2d_board, RATSNEST + 'AUTO ;' to autoroute, fusion_show_3d_board for 3D. PREFLIGHT (1.10.20): refuses with eagle_files_missing before touching any dialog when either file is not on the Fusion machine; if the Open dialog does not accept the file the bridge cancels the dialog itself (open_dialog_stuck), so nothing is ever left on the user's screen. Prefer fusion_schematic {action:\"open\"}, which picks this route only when a .brd exists next to the .sch. ASYNC by contract (1.10.22): returns {started:true, runId, statusVerb} at once and runs the dialog-driven import on the exe; poll fusion_eagle_import_status {runId}. The record and the final reply carry documentName, partsExpected (elements in the .brd) and partsPlaced (read back from the board); success needs parts on the board (nothing_instantiated otherwise). Pass wait:true only from inside the exe.",
      "timeoutSeconds": 200
    },
    {
      "example": {},
      "input": {
        "verb": "one of them (optional): its refusal"
      },
      "longRunning": false,
      "name": "fusion_not_supported",
      "output": {
        "verbs": "[{verb, why}]"
      },
      "statusVerb": null,
      "summary": "The standard verbs that belong to Altium's own machinery (the Altium 365 cloud and workspace, the DelphiScript agent, the .NET extension, integrated libraries, OutJobs, symbol display modes, library defaults) and what Fusion does instead. Calling any of them, fusion_<verb> or the bare name, answers not_supported through this verb; with no verb it lists them.",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "body": "Please complete the Autodesk 2FA prompt on winvm - everything else is done.",
        "title": "Fusion needs you"
      },
      "input": {
        "body": "required str",
        "level": "optional str info|warning|error",
        "title": "optional str"
      },
      "longRunning": false,
      "name": "fusion_notify_owner",
      "output": {
        "success": "bool",
        "targets": "list"
      },
      "statusVerb": null,
      "summary": "LAST-RESORT human escalation: toast the user's MAIN computer (fans out cross-ab to every peer on the relay, so it reaches them even when this bridge runs on an unattended VM). ONLY for true human walls - password/2FA entry, UAC elevation, a physical step. Exhaust programmatic options first (UIA background clicks, seat auto-resolve, warm-SSO sign-in). After sending, WAIT and poll fusion_readiness; do not re-toast within a few minutes.",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "filePath": "C:/Temp/TJA1050.brd"
      },
      "input": {
        "filePath": "required str (WINDOWS path to the .brd, C:/...; must exist on the Fusion machine)"
      },
      "longRunning": true,
      "name": "fusion_open_board",
      "output": {
        "activeDocument": "str",
        "activeWorkspace": "str",
        "filePath": "str",
        "fileType": "str",
        "nextSteps": "[str]",
        "postOpenCheck": "{required, steps}",
        "screenshots": "[{type,savedTo,sizeKB}] (sidecar shell) or postOpenScreenshot (exe shell)",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Open a LOCAL legacy EAGLE .brd in Fusion's 2D board editor (dialog-free Document.newDesignFromLocal; a background open). NAV RULE: the schematic, 2D board and 3D board are VIEWS of ONE electronics design, not standalone files. For a team design open the DESIGN document (fusion_open_cloud_file / fusion_open_by_urn) and switch views with fusion_show_2d_board; this verb is for a .brd that exists on the Fusion machine (push it there first). Elements with an embedded library are instantiated as placed parts; embed <packages3d> + per-element package3d_urn for real 3D bodies, then fusion_show_3d_board. The bridge captures a post-open screenshot because Fusion can raise a blocking dialog the API cannot see.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "urn": "urn:adsk.wipprod:fs.file:vf.xxxx?version=1"
      },
      "input": {
        "intent": "optional \"mechanical\" | \"electronics\": what you meant to open. A DesignProductType is every mechanical design; the STOP-WRONG-FILE hint now fires only for the 3D leaf of an electronics chain (by name, or intent electronics); intent mechanical confirms the open (issue #86)",
        "urn": "required str"
      },
      "longRunning": true,
      "name": "fusion_open_by_urn",
      "output": {
        "output": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Open a cloud ELECTRONICS DESIGN by URN. PCB/ELECTRONICS NAV RULE: a board is NOT a standalone file - the schematic, 2D board and 3D board are VIEWS inside ONE electronics DESIGN. Open the DESIGN document first (fusion_open_cloud_file or fusion_open_by_urn), THEN switch to its schematic and its 2D board (fusion_show_2d_board) and 3D board (fusion_show_3d_board). A Select-Electronics-Design-File picker IS that design list of its schematic + board. An EMPTY 2D board usually means you opened a derivative or the wrong file, or it is out of sync - reopen the parent electronics DESIGN and switch to its board view; do NOT open a .brd or .sch as a standalone file.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_open_by_urn_note",
      "output": {},
      "statusVerb": null,
      "summary": "(see fusion_open_by_urn)",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "fileName": "BQ25792",
        "projectName": "Main"
      },
      "input": {
        "fileName": "required str",
        "folderPath": "optional str",
        "projectName": "optional str (defaults to active project)"
      },
      "longRunning": true,
      "name": "fusion_open_cloud_file",
      "output": {
        "documentName": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Open a CLOUD file by name (the front door to every design flow). PCB/ELECTRONICS NAV RULE: open the electronics DESIGN document (EcadDesignProductType), never a child .brd/.sch/3D directly - then switch views with fusion_show_schematic / fusion_show_2d_board / fusion_show_3d_board. LONG-RUNNING: fire it, then poll fusion_get_app_state until activeDocument matches (cloud opens on electronics designs take 1-3 min). A crash-recovery modal can block the open - fusion_dismiss_blocking_dialogs.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "filePath": "C:/Temp/part.f3d"
      },
      "input": {
        "filePath": "required str (WINDOWS path)",
        "intent": "optional \"mechanical\" | \"electronics\" (see fusion_open_by_urn)"
      },
      "longRunning": true,
      "name": "fusion_open_design",
      "output": {
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Open a LOCAL design file (routes through the add-in import). Prefer cloud flows (fusion_open_cloud_file) for team designs; this is for local .f3d/.step style files.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_open_design"
      },
      "longRunning": false,
      "name": "fusion_open_document",
      "output": {
        "...": "as fusion_open_design",
        "aliasOf": "fusion_open_design"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_open_design: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "filePath": "optional str (WINDOWS path to a .sch/.brd/.lbr; only acted on when an electronics editor is already active)",
        "type": "optional str (\"status\", the default; other values are reserved)"
      },
      "longRunning": false,
      "name": "fusion_open_electronics",
      "output": {
        "activeDocument": "{name,type}",
        "activeWorkspace": "str",
        "isElectronics": "bool",
        "output": "str",
        "productType": "str",
        "result": "str (Electron.run output, filePath form only)",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Read whether an ELECTRONICS editor (schematic, board or library) is the active workspace, so you know if Electron.* text commands and fusion_electron_run will work. With filePath, and ONLY when an electronics editor is already active, it also issues Electron.run EDIT on that file; otherwise it just reports the workspace. Prefer fusion_open_schematic / fusion_open_board / fusion_open_lbr to open files. The schematic, 2D board and 3D board are views of one electronics design.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "filePath": "C:/Users/<user>/adom-lib/nRF54L15.lbr"
      },
      "input": {
        "filePath": "required str (.lbr WINDOWS path C:/...; stage from container first)",
        "symbolName": "optional str",
        "verify": "optional bool"
      },
      "longRunning": false,
      "name": "fusion_open_lbr",
      "output": {
        "postOpenScreenshot": "{savedTo}",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Import an EAGLE .lbr library into Fusion's Electronics LIBRARY editor (Content Manager / Electronics Library workspace), not a PCB design. PITFALL: filePath MUST be a WINDOWS-local path (C:/...). The chip-fetcher/adom-lbr pipeline runs in the cloud container, and there is NO container-to-Windows push verb, so STAGE the .lbr onto Windows first (serve it on a proxied port + Invoke-WebRequest via shell_execute), then pass the C:/ path. PITFALL: an adom-lbr .lbr is 2D ONLY - symbol + footprint + a PLACEHOLDER 3D package; the real 3D chip is NOT attached (that needs a Fusion cloud URN). To attach the 3D, see the 'fusion-libraries' skill. Pass verify:true to round-trip-confirm Fusion parsed the deviceset, then check fusion_get_app_state (activeWorkspace 'Electronics Library').",
      "timeoutSeconds": 50
    },
    {
      "example": {
        "filePath": "C:/Temp/TJA1050.sch"
      },
      "input": {
        "filePath": "required str (WINDOWS path to the .sch, C:/...; must exist on the Fusion machine)"
      },
      "longRunning": true,
      "name": "fusion_open_schematic",
      "output": {
        "activeDocument": "str",
        "activeWorkspace": "str",
        "filePath": "str",
        "fileType": "str",
        "nextSteps": "[str]",
        "postOpenCheck": "{required, steps}",
        "screenshots": "[{type,savedTo,sizeKB}] (sidecar shell) or postOpenScreenshot (exe shell)",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Open a LOCAL legacy EAGLE .sch in Fusion's Schematic Editor (dialog-free Document.newDesignFromLocal; a background open). NAV RULE: the schematic, 2D board and 3D board are VIEWS of ONE electronics design, not standalone files. For a team design open the DESIGN document (fusion_open_cloud_file / fusion_open_by_urn) and switch views with fusion_show_schematic; this verb is for a .sch that exists on the Fusion machine (push it there first). Drive the opened sheet with fusion_electron_run (WINDOW FIT, DISPLAY ALL). The bridge captures a post-open screenshot because Fusion can raise a blocking dialog the API cannot see.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "name": "Inspector"
      },
      "input": {
        "name": "the panel's title (case does not matter; part of it is enough); omitted, the list"
      },
      "longRunning": false,
      "name": "fusion_panel",
      "output": {
        "docked": "bool",
        "elapsedSec": "float",
        "lane": "already | panels_expose",
        "panel": "str",
        "panels": "[title] (no name)",
        "selected": "bool",
        "verified": "bool"
      },
      "statusVerb": null,
      "summary": "Open one of Fusion's docked panels (the standard's panel), or list them: Browser, Inspector, Display Layers, Selection Filter, Design Manager, Place Components, Errors, Bill of Materials, Text Commands, Comments ... Fusion's Panels.List names them, Panels.Expose opens one and Panels.ValidateState proves it is expanded. Nothing takes the foreground.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "cols": 3,
        "dryRun": true,
        "rows": 2,
        "separation": "vscore"
      },
      "input": {
        "cols": "int (required)",
        "dryRun": "bool",
        "expectDocument": "required",
        "gapMm": "tabs: the routed gap",
        "open": "bool, default true",
        "outputPath": "the panel .brd (default %TEMP%/adom-panels)",
        "railMm": "default 5",
        "rows": "int (required)",
        "separation": "none | vscore | tabs",
        "toolingHoles": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_panelize",
      "output": {
        "boardsAt": "[[x, y]]",
        "built": "{copies, parts, holes, fiducials}",
        "copyShift": "[[dx, dy]]",
        "documentName": "str",
        "jlcpcb": "{rules, fits}",
        "panelMm": "[w, h]",
        "pcbPath": "path",
        "readBack": "{components, expected, unconnected, outlineClosed}",
        "separation": "{kind, cutsX?, cutsY?, tabs?}"
      },
      "statusVerb": null,
      "summary": "A manufacturing panel (the standard's panelize), planned by the shared checks engine: rows x cols copies, V-score lines or mouse-bite tabs drawn the way JLCPCB reads them, rails with tooling holes and fiducials, JLCPCB's panel rules checked. Fusion builds it as a NEW EAGLE board from the open board's source (copy k's parts and nets renamed _k, the copies' own outline left to the panel's rout path) and opens it as a local design; the board you panelized is untouched. dryRun returns the plan.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "name": "MPN"
      },
      "input": {
        "expectDocument": "the design",
        "name": "an attribute, e.g. MPN"
      },
      "longRunning": false,
      "name": "fusion_part_parameters",
      "output": {
        "names": "[{name, parts}]",
        "values": "[{designator, value, sheet}] (with name)"
      },
      "statusVerb": null,
      "summary": "The attribute names the design's placed parts carry, with how many carry each (the standard's part_parameters); with name, that attribute's value on every part.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "path": "C:/libs/parts.lbr"
      },
      "input": {
        "expectDocument": "the board's name (board form)",
        "limit": "int, tracks listed (default 2000)",
        "name": "footprint name filter (library form)",
        "path": "a .lbr on the Fusion machine (library form); omitted, the open board",
        "want": "'board' for the board form"
      },
      "longRunning": false,
      "name": "fusion_pcb_report",
      "output": {
        "data": "{kind: library, components: [{name, pads, padsBboxMil, census, bodies}], bodyCols} | {kind: board, outlineMil, components: [{designator, footprint, pads, padsBboxMil, nets, bodies}], census, tracks, bodyCols}",
        "roundtripMs": "int"
      },
      "statusVerb": null,
      "summary": "Numbers instead of pixels (the standard's pcb_report). For a .lbr (path), every footprint (or the ones name matches): its pads, the pads' bounding box in mil, a census of its primitives (smd, pad, wire, circle, polygon, text, hole ...) and its 3D packages. For the open board (no path, or want:'board'): the outline in mil, each part with its pads, nets and pad bounding box, the copper census and the tracks.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "accuracy": "low"
      },
      "input": {
        "accuracy": "optional low|medium|high|veryhigh (default low)",
        "names": "optional [str] component names to measure (default all)"
      },
      "longRunning": false,
      "name": "fusion_physical_properties",
      "output": {
        "count": "int",
        "properties": "{name: {volume_cm3, mass_kg, density, area_cm2, center_of_mass}}",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Per-component physical properties (volume cm3, mass kg, density, area, center of mass) for the active design. Reads them directly so BOM/costing tools no longer have to run getPhysicalProperties inside a modeling script. Pass names to scope to specific components.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the design"
      },
      "longRunning": false,
      "name": "fusion_pin_pad_check",
      "output": {
        "engine": "str",
        "ok": "bool",
        "onlyOnBoard": "[ref]",
        "onlyOnSheets": "[ref]",
        "parts": "[{designator, pinsWithoutPad, padsWithoutPin}]"
      },
      "statusVerb": null,
      "summary": "Do the footprints fit their symbols (the standard's pin_pad_check)? Part by part, the symbol's pin numbers (fusion_schematic_data) against the placed footprint's pad names on the board: pins with no pad, pads with no pin, and parts only on the sheets or only on the board. The shared checks engine.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "ic": "U1"
      },
      "input": {
        "caps": "[ref] (default the caps on its power nets)",
        "expectDocument": "required: the board's name",
        "gapMm": "cap to IC box, default the engine's",
        "ic": "the IC (required)"
      },
      "longRunning": false,
      "name": "fusion_place_decoupling",
      "output": {
        "engine": "str",
        "leftOut": "[{cap, net, why, detail}]",
        "moveArgs": "fusion_move_parts' arguments",
        "placements": "[{cap, net, pin, powerPad, x, y, rotation, side, padToPinMm, from}]",
        "revision": "str",
        "skipped": "[{cap, pin, why}]",
        "validation": "placement_check with the caps moved"
      },
      "statusVerb": null,
      "summary": "Plan decoupling capacitors beside an IC's power pins (the standard's place_decoupling), from the shared checks engine: each cap gapMm outside the IC's box on the side of the power pin it serves, turned so its power pad faces the pin, slid along that side when the spot is taken; the plan is checked with placement_check. A plan: moveArgs is fusion_move_parts' arguments, boardId and expectedRevision included.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "dryRun": true,
        "parts": [
          {
            "footprint": "R0603",
            "library": "C:/lib/parts.lbr",
            "ref": "R1",
            "x": 10,
            "y": 10
          }
        ]
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "the board",
        "expectedRevision": "optional",
        "parts": "[{library, footprint, ref?, value?, x, y, rotation?, side?}] mm (required)"
      },
      "longRunning": false,
      "name": "fusion_place_parts",
      "output": {
        "placed": "[{ref, x, y, rotation, side}]",
        "results": "[ok|err:...]",
        "revision": "str"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Footprints from a .lbr onto a board with no schematic (the standard's place_parts), with position, rotation and side, read back. A board linked to a schematic is refused: Fusion takes its parts from the sheet (fusion_sch_place_part, then fusion_move_parts).",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required",
        "vias": "required [{net, x, y, diameter (mm, default 0.6), drill (mm, default 0.3)}]"
      },
      "longRunning": false,
      "name": "fusion_place_vias",
      "output": {
        "missing": "list",
        "revision": "str",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Add vias at exact points (stitching, thermal, escape): VIA per via with its drill and diameter, then read back.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "marginMm": 0.25
      },
      "input": {
        "edgeMm": "pad to edge, default 0.5",
        "expectDocument": "required: the board's name",
        "marginMm": "courtyard margin, default 0.1"
      },
      "longRunning": false,
      "name": "fusion_placement_check",
      "output": {
        "bodiesUsed": "bool",
        "courtyardOverlaps": "[{parts, side, overlapMm}]",
        "engine": "str",
        "nearEdge": "[{ref, padToEdgeMm}]",
        "offOrOverEdge": "[{ref, where}]",
        "ok": "bool",
        "onMountingHoles": "[{ref, hole}]",
        "parts": "int"
      },
      "statusVerb": null,
      "summary": "Review the placement before routing (the standard's placement_check): parts whose courtyards (pads and 3D body, grown by marginMm) overlap on the same side, parts off or over the board edge, pads closer than edgeMm to the edge, and parts on a mounting hole: the shared checks engine on the live board and fusion_bodies (pads only, bodiesUsed:false, when the bodies cannot be read).",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "ref": "U1"
      },
      "input": {
        "clearanceMm": "can only raise the board's",
        "escapeLayer": "copper layer",
        "expectDocument": "required: the board's name",
        "ref": "the part (required)",
        "stubMm": "stub length",
        "style": "BGA: dogbone|via-in-pad",
        "viaDrillMm": "mm",
        "viaMm": "via size",
        "viaPerimeter": "bool: a via at every perimeter stub",
        "widthMm": "stub width"
      },
      "longRunning": false,
      "name": "fusion_plan_fanout",
      "output": {
        "callCount": "int",
        "calls": "[fusion_route_net arguments]",
        "conflicts": "[{from, what, pad, padNet, gapMm}]",
        "engine": "str",
        "package": "str",
        "pads": "[{pad, net, action, ...}]",
        "revision": "str",
        "viaCount": "int",
        "warnings": "[str]"
      },
      "statusVerb": null,
      "summary": "Plan a part's fanout (the standard's plan_fanout), from the shared checks engine on the live board and its stack-up: a BGA's outer ring escapes on the surface and each inner ball takes a dogbone via (or a via in the pad); a perimeter package's pads take an outward stub (a via at its end for ground, or with viaPerimeter); an exposed pad a via grid. calls are fusion_route_net arguments, one per net; conflicts lists vias and stubs that would come too close to another net's pad.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "parts": [
          {
            "lbrPath": "C:/tmp/al8843.lbr",
            "modelPath": "C:/tmp/al8843.step",
            "package": "AL8843SP-13"
          }
        ]
      },
      "input": {
        "libraryPath": "optional .lbr for context",
        "parts": "optional [{package, lbrPath, modelPath}] - the parts you intend to import (drives the estimate)",
        "stepPath": "optional single .step when not passing parts[]"
      },
      "longRunning": true,
      "name": "fusion_plan_library_import",
      "output": {
        "estimatedSec": "float",
        "estimatedSecIfAlreadyOpen": "float",
        "fusion": "{installed, running, addinReady, status, message}",
        "plan": "[{stage, label, estimatedSec, confidence, needsUserConsent?}]",
        "success": "bool",
        "summary": "str"
      },
      "statusVerb": null,
      "summary": "PRE-FLIGHT for a library import: does NO work and changes nothing. Reports whether Fusion is installed, running, or needs its add-in loaded (with a plain-language message you can show the user), plus a per-stage plan with MEASURED per-machine time estimates scaled to the number of parts you are sending - a multi-part library does one STEP import per part, which is the slowest stage, so the estimate grows with the library. Call this FIRST so the wiki can render the summary and the progress bar's steps, then run the import and poll fusion_prove_result, which reports the SAME stage names.",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "from": "U1.12",
        "layers": [
          "F.Cu",
          "In1.Cu",
          "In2.Cu",
          "B.Cu"
        ],
        "net": "SDA",
        "to": "J3.4"
      },
      "input": {
        "allowVias": "bool default true",
        "clearanceMm": "can only raise the board's",
        "edgeClearanceMm": "can only raise the board's",
        "expectDocument": "required: the board's name",
        "from": "the start pad as Ref.Pad",
        "gridMm": "0.05..5, default 0.5",
        "layers": "[copper layer] default [F.Cu, B.Cu]; list them all (e.g. [F.Cu, In1.Cu, In2.Cu, B.Cu]) so a via is checked on every layer it passes",
        "maxNodes": "default 50000",
        "net": "required str",
        "to": "the end pad",
        "viaCost": "a via costs as much as this many mm, default 5",
        "viaDrillMm": "default the board's via rule",
        "viaSizeMm": "default the board's via rule",
        "widthMm": "default the board's width rule, else 0.25"
      },
      "longRunning": false,
      "name": "fusion_plan_route",
      "output": {
        "engine": "str",
        "found": "bool",
        "lengthMm": "number",
        "mutated": "false",
        "planner": "{algorithm, gridMm, layers, clearanceMm, edgeClearanceMm, widthFrom, viaFrom}",
        "reason": "str (found false)",
        "revision": "str",
        "routeNet": "fusion_route_net's arguments",
        "success": "bool",
        "viaAt": "[[x,y]]",
        "vias": "int"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Plan a path for one net between two pads on the live board without changing it (the standard's plan_route), from the shared checks engine (adom-eda-checks): a bounded orthogonal A* on any copper layers listed (default F.Cu and B.Cu), with through vias between them; pads by their real outline, the board's strictest copper clearance and copper-to-edge rule. Answered as routeNet, fusion_route_net's arguments (boardId and expectedRevision included), to pass on unchanged; found:false with a reason when no path fits. Pours are not obstacles: fusion_route_net undoes a route that cuts another net's pour in two. Fine-pitch pads need gridMm 0.1.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true,
        "libraryPath": "C:/libs/parts.lbr"
      },
      "input": {
        "dryRun": "bool",
        "footprintName": "str (optional: one footprint; default all)",
        "libraryPath": ".lbr on the Fusion machine (required)"
      },
      "longRunning": false,
      "name": "fusion_plate_vias",
      "output": {
        "backup": "str",
        "data": "{holes: int, plated: int, fixed: 'Footprint:Pad;...', joinedToLands: int}"
      },
      "statusVerb": null,
      "summary": "Make every drilled hole in a library's footprints a plated pad (the standard's plate_vias), offline in a .lbr. In EAGLE a pad is always plated and an unplated drill is a <hole>, so each hole becomes a pad. A hole inside an SMD land (a heatsink via in an exposed pad) is named after the land (EP@2, EP@3 ...) and joined to that land's connect in every device, so it sits on the land's net; any other hole becomes H1, H2 ... and stays unconnected. The copper ring is left to the board's restring rules, as for any EAGLE via. Written with a .bak and preflighted; dryRun shows the plan.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact board name"
      },
      "longRunning": false,
      "name": "fusion_pour_state",
      "output": {
        "filledAreaByLayerMm2": "{layer:mm2}",
        "filledAreaByNetMm2": "{net:mm2}",
        "pours": "list",
        "revision": "str",
        "unfilled": "[net]",
        "zones": "[{net,layer,outline,filledMm2,filled,fills:[{outline,holes}]}] (the standard's pours model)"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Read every pour on the live board with Fusion's own computed fill, each with a stable id made from its net, layer and outline (Fusion stores none): filled area per pour, per layer and per net, and which pours were never filled (no RATSNEST since they were drawn). The measure step of the AI flow's Fusion lane.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "set": {
          "lengthUnit": "mm"
        }
      },
      "input": {
        "key": "optional: one setting",
        "set": "optional {key: value}: the keys fusion_set_preference takes"
      },
      "longRunning": false,
      "name": "fusion_preferences",
      "output": {
        "applied": "obj (with set)",
        "current": "obj"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Read Fusion's own settings (theme, scroll direction, orbit scheme, orientation, length unit), or change them with set, live with no restart. The standard's preferences: fusion_get_preferences and fusion_set_preference as one verb.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "libraryPath": "C:/Temp/PART.lbr"
      },
      "input": {
        "libraryPath": "str (Windows .lbr path)"
      },
      "longRunning": true,
      "name": "fusion_preflight_lbr",
      "output": {
        "preflight": "{ok, checks[], errors[]}",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "PRE-ANALYZE a .lbr: will Fusion open it? Offline and instant - no Fusion needed, nothing launched. Runs the named checks the bridge learned from real Fusion rejections: file-readable, size-sane (truncated-transfer corpse detection), xml-parses, root-is-eagle, packages-nonempty (Fusion's silent 'No Components'), symbols-present, devicesets-present (missing ones make EDIT raise Create-new prompts), connects-resolve (dead wiring renders fine and connects nothing). fusion_open_lbr and fusion_create_library run the same gate automatically; call this directly to gate a batch BEFORE staging.",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "save": true
      },
      "input": {
        "save": "optional bool, default true"
      },
      "longRunning": false,
      "name": "fusion_prefs_close",
      "output": {
        "closed": "bool",
        "saved": "bool"
      },
      "statusVerb": "fusion_get_preferences",
      "summary": "Apply+OK (save:true, the default) or Cancel Fusion's Preferences dialog. Settings changed via fusion_prefs_open are NOT persisted until this is called with save:true.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "section": "api"
      },
      "input": {
        "section": "optional str (see knownSections in the response)"
      },
      "longRunning": true,
      "name": "fusion_prefs_open",
      "output": {
        "hwnd": "int",
        "knownSections": "[str]",
        "screenshot": "str",
        "shotId": "str",
        "steps": "list"
      },
      "statusVerb": "fusion_get_preferences",
      "summary": "Open Fusion's Preferences dialog and optionally jump to a section, then hand back a SCREENSHOT + shotId you can click in. This is how you reach ANY Fusion preference: the Python API exposes only a thin slice (theme/orbit/units, debuggingPort, developer tools) and everything else, including the MCP server toggle, is UI-only. Sections: general, api, design, manufacture, electronics, render, drawing, material, graphics, network, preview features. Child sections under General are lazily rendered by Qt and never appear in the UIA tree, which is why this returns an image to click rather than control names. ALWAYS finish with fusion_prefs_close {save:true} - nothing is saved otherwise, and killing/restarting Fusion first discards the change.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_prewarm",
      "output": {
        "fusionInstalled": "bool",
        "fusionStarted": "bool (always false)",
        "ok": "bool",
        "ready": "bool (the standard's prewarm)",
        "steps": "[{step, done, ok, skipped?, ...}]"
      },
      "statusVerb": null,
      "summary": "Warm the bridge ahead of the first real call, WITHOUT starting Fusion: confirms the add-in is synced into every Fusion add-in folder, readies the space-free staging folder, and caches the PCB design-rules catalog from adom/pcb-design-rules. Adom Bridge calls it once per installed version in the background (bridge.json prewarm.verb); safe to call again any time. Launching Fusion is never part of it.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "recent": "how many recent runs, default 10"
      },
      "longRunning": false,
      "name": "fusion_progress",
      "output": {
        "active": "[{verb, runningSec, estimateSec}]",
        "history": "{phase: {runs, p50, max}}",
        "recentRuns": "[{at, verb, seconds, ok}]",
        "verbTimes": "{verb: {runs, p50, max}}"
      },
      "statusVerb": null,
      "summary": "The bridge's timing book (the standard's progress): the long operation in flight now with how long it has run and its usual time, the measured phase timings, per-verb run times (p50, max) and the most recent runs.",
      "timeoutSeconds": 10
    },
    {
      "example": {
        "dryRun": true,
        "layers": 4,
        "name": "Sensor-Hub",
        "parentDir": "C:/Users/me/Documents/Boards",
        "textVariables": {
          "REV": "A"
        },
        "title": "Sensor hub"
      },
      "input": {
        "dryRun": "bool",
        "fabRules": "a fab from adom/pcb-design-rules, recorded for later",
        "layers": "2|4|6|8, default 2",
        "name": "the design's name (required)",
        "overwrite": "bool",
        "parentDir": "a folder on the Fusion machine (required)",
        "textVariables": "{'REV': 'A'}",
        "title": "str"
      },
      "longRunning": false,
      "name": "fusion_project_create",
      "output": {
        "files": "[sch, brd]",
        "layerSetup": "str",
        "layers": "int",
        "project": "folder",
        "steps": "[str]"
      },
      "statusVerb": null,
      "summary": "A new, empty electronics design (the standard's project_create): an empty schematic and board written as EAGLE source in <parentDir>/<name>/ (the board's copper count in its layer setup; title and text variables as the schematic's global attributes) and imported into Fusion as one design with its sheet and board linked, so a part placed on the sheet goes on the board (linked:true, about 30 s, through Fusion's own import in the background; Adom Bridge may ask for an OK, and then it answers stillRunning with a runId for fusion_eagle_import_status). If the import can't run, it opens the two files as unlinked documents and says why (linked:false, whyNotLinked). Save it to the cloud with fusion_save_to_cloud.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "expectDocument": "BQ25792"
      },
      "input": {
        "expectDocument": "the design's name (default the document in front)",
        "project": "the same, in the standard's word"
      },
      "longRunning": false,
      "name": "fusion_project_info",
      "output": {
        "board": "{layers, parts, nets, sizeMm}",
        "files": "[{kind, name, open, saved, modified, path, version, modifiedAt}]",
        "modifiedAt": "epoch s",
        "name": "str",
        "netClasses": "[str]",
        "project": "the cloud project",
        "sheets": "the tree, as sch_hierarchy"
      },
      "statusVerb": null,
      "summary": "A Fusion electronics design at a glance (the standard's project_info): its documents (the open ones and its cloud files of the same name: project, schematic, board, 3D PCB) with version and date, the sheet tree, the board (copper layers, parts, nets, size) and its net classes. Read only; the design must be open.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "dryRun": true,
        "newName": "Sensor-Hub-v2",
        "project": "C:/Boards/Sensor-Hub"
      },
      "input": {
        "dryRun": "bool",
        "newName": "str (required)",
        "project": "a .sch, .brd or the folder holding them, on the Fusion machine (required)"
      },
      "longRunning": false,
      "name": "fusion_project_rename",
      "output": {
        "changed": "[]",
        "renamed": "[{from, to}]"
      },
      "statusVerb": null,
      "summary": "Rename a design kept as EAGLE files (the standard's project_rename): <name>.sch, .brd, .lbr and EAGLE's numbered backups become <newName>.*, and a folder named after the design is renamed with them. EAGLE files do not name each other, so nothing inside changes. Refused while Fusion has the design open. A Fusion cloud design is renamed in Fusion's data panel.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "expectDocument": "BQ25792",
        "label": "before-reroute"
      },
      "input": {
        "expectDocument": "the design's name (default the document in front)",
        "label": "added to the folder name",
        "outputDir": "default Documents/Adom Snapshots/<design>",
        "pdfs": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_project_snapshot",
      "output": {
        "files": "[path]",
        "folder": "path",
        "notes": "[str]",
        "pdfs": "{made: [path], skipped}"
      },
      "statusVerb": null,
      "summary": "A dated plain-file copy of a Fusion design (the standard's project_snapshot): a folder on the Fusion machine with the schematic and board as EAGLE XML, a PNG of every sheet and of the board, and PDFs made from them. Fusion's cloud versions stay as they are; save one with fusion_save_document.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "runId": "a3f1c2d4e5b6"
      },
      "input": {
        "inlineFrames": "optional bool",
        "runId": "optional str (omit for the latest run)",
        "shots": "optional int",
        "sinceShot": "optional int"
      },
      "longRunning": true,
      "name": "fusion_prove_result",
      "output": {
        "etaSec": "float",
        "evidence": "[]",
        "percent": "float",
        "stage": "str",
        "verdict": "str"
      },
      "statusVerb": null,
      "summary": "POLL a background run started by fusion_create_library or the detached fusion_build_library_3d. Returns stage + stageLabel, plan[] with measured per-stage estimates, stagesDone, percent, etaSec, confidence, and evidence[] filling in AS EACH ARTIFACT LANDS (symbol -> footprint -> 3d -> ganged). For a 3D build it carries per-part progress (minting X (3/7)), partsDone/partsTotal and parts[] with each wip_urn. stage:done only means the chain FINISHED - the top-level verdict (proven/not_proven) is the score, and a run that captured zero frames lands stage:failed with blocked_by_dialog (carrying the dialog text) or no_evidence_captured rather than reporting done. Pass inlineFrames:true on the final fetch for base64 thumbnails a browser can render. restarts[] {at, why, kind} lists any restart the chain performed (only with allowRestart). prove.planned / prove.skipped say whether evidence frames were captured and why (AI threads bind only by default).",
      "timeoutSeconds": 20
    },
    {
      "example": {
        "limit": 20,
        "sections": "components,nets"
      },
      "input": {
        "expectDocument": "required: the board's name",
        "limit": "int: cap each list",
        "sections": "csv of components,nets,layers,copper,rules,occupancy,outline (default all)"
      },
      "longRunning": false,
      "name": "fusion_read_board",
      "output": {
        "counts": "{section.list: n}",
        "data": "{section: {...}}",
        "revision": "str",
        "roundtripMs": "int"
      },
      "statusVerb": null,
      "summary": "The standard's read_board: the live board in one round trip, as sections: components, nets (with net classes), layers (copper and stack-up), copper (tracks, arcs, vias, pads, pours), rules, occupancy (layers in use) and outline. sections picks some (csv); limit caps each list, with the full counts beside it.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the board's name, for libId",
        "libId": "'Library:Package' from the board's embedded libraries",
        "libraryPath": "a .lbr on the Fusion machine (with name)",
        "name": "the package's name"
      },
      "longRunning": false,
      "name": "fusion_read_footprint",
      "output": {
        "attributes": "{mount}",
        "courtyardMm": "[x1, y1, x2, y2]",
        "graphics": "{layer: count}",
        "layers": "[str]",
        "models": "[{name, urn, type}]",
        "name": "str",
        "pads": "[{number, type, shape, at, sizeMm, drillMm, layers, rotation}]"
      },
      "statusVerb": null,
      "summary": "Every detail of one library footprint (the standard's read_footprint): pads with number, type, shape, position, size, drill, layers and turn; the layers used; the courtyard box (component exclude layers 39/40, else pads and placement outline); graphics per layer; the 3D packages that instance it. From a .lbr (libraryPath + name) or, by libId 'Lib:Name', from the libraries the open board embeds.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_read_rules",
      "output": {
        "count": "int",
        "params": "{mdWireWire:...}",
        "ruleSet": "str",
        "rules": "[{name,kind,enabled,priority,scope1,scope2,value,preferredValue,attrs,liveDrc,manualDrc}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Every design rule on the live board from Fusion's rule manager, disabled ones included: name, kind (Copper Clearance, Minimum Copper Width, Teardrop...), enabled, priority, both scopes, value and preferred value, whether live and manual DRC check its kind, plus the classic design-rule values (params) and the rule set's name.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the design's name",
        "limit": "int, default 500",
        "params": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_read_schematic",
      "output": {
        "components": "[{designator, libReference, comment, device, library, parameters}]",
        "count": "int",
        "designators": "[str]",
        "document": "str",
        "roundtripMs": "int"
      },
      "statusVerb": null,
      "summary": "Components of the open design's schematic (the standard's read_schematic), from fusion_schematic_data: designator, libReference (the deviceset), comment (the value), device, library and the part's parameters.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "path": "C:/Users/me/Documents/board.sch"
      },
      "input": {
        "params": "bool, default false: every attribute with its value",
        "path": "required: EAGLE .sch or Fusion .fsch on the Fusion machine (alias filePath, schPath)",
        "pins": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_read_sheet_file",
      "output": {
        "complete": "bool (false with hierarchical modules or unknown devicesets)",
        "components": "[{designator,libReference,deviceset,device,comment,description,uniqueId,partNumber?,sourceLibrary,partCount,sheet,xMil,yMil,xMm,yMm,orientation,params?,pins:[{number,name,gate,electrical,direction}]}]",
        "count": "int",
        "elapsedMs": "int",
        "format": "str",
        "sheets": "int"
      },
      "statusVerb": null,
      "summary": "Read a schematic straight from its file, without Fusion running: every part of an EAGLE .sch (or the .sch inside a Fusion .fsch) with its designator, library reference (deviceset + device), value, description, part number, library, sheet, position and orientation, parameters on request, and its pins: number (the pad), name, gate and electrical type (input, output, io, open_collector, passive, hiz, power, supply, not_connected) for a schematic review. Milliseconds. The saved file, not the live sheet.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "libraryPath": "C:/libs/new.lbr",
        "symbolName": "LM358"
      },
      "input": {
        "libraryPath": "a .lbr on the Fusion machine (required)",
        "symbolName": "str (required)"
      },
      "longRunning": false,
      "name": "fusion_read_symbol",
      "output": {
        "libref": "str",
        "models": "[{type, name}]",
        "params": "[{name, value}]",
        "pins": "[{des, name, gate, electrical, hidden}]"
      },
      "statusVerb": null,
      "summary": "Read a component of a .lbr back (the standard's read_symbol): description, its pins with number, name, gate and electrical type (0 input, 1 io, 2 output, 3 open collector, 4 passive, 5 hi-z, 7 power), its attributes and its footprints (devices).",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_readiness",
      "output": {
        "bridgeVersion": "str",
        "hostApp": "str",
        "installed": "bool",
        "ready": "bool",
        "running": "bool"
      },
      "statusVerb": null,
      "summary": "FAST readiness check (does NOT launch Fusion): is the Fusion host app installed + running + the bridge ready to drive? ab DETECTS Fusion (never installs it) via bridge.json 'detect', and auto-installs Python if missing (ab >=1.9.47). Call this before driving Fusion; if installed-but-not-running, fusion_start. SELF-HEALS the seat/licensing dialog (background UIA + screenshot-verify) whenever it detects one. Pairs with ab's bridge_readiness.",
      "timeoutSeconds": 15
    },
    {
      "example": {},
      "input": {
        "save": "optional bool (default false): save open documents before closing"
      },
      "longRunning": false,
      "name": "fusion_release_seat",
      "output": {
        "released": "bool",
        "success": "bool",
        "wasHeldBy": "obj"
      },
      "statusVerb": null,
      "summary": "Give up the Autodesk seat from THIS machine so another box can claim it with no modal at all: closes Fusion cleanly (documents are NOT discarded; an unsaved one refuses and says so) and leaves the account signed in, so this box can claim the seat straight back. The counterpart of fusion_claim_seat.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "footprintName": "str",
        "libraryPath": "a .lbr on the Fusion machine"
      },
      "longRunning": false,
      "name": "fusion_remove_footprint",
      "output": {
        "removed": "str"
      },
      "statusVerb": null,
      "summary": "Delete a footprint from a .lbr (the standard's remove_footprint); refused while a component uses it.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "dryRun": true,
        "kinds": [
          "text"
        ],
        "layer": "F.SilkS"
      },
      "input": {
        "dryRun": "bool (lists ids)",
        "expectDocument": "required",
        "expectedRevision": "optional",
        "ids": "[id]",
        "kinds": "[line|arc|rect|circle|polygon|text|dimension]",
        "layer": "F.SilkS, B.SilkS, F.Fab, B.Fab, Edge.Cuts, a copper name or a Fusion layer number"
      },
      "longRunning": false,
      "name": "fusion_remove_graphics",
      "output": {
        "count": "int (dry run)",
        "removed": "[{id, kind, layer, points, text}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Remove board-level graphics (the standard's remove_graphics): lines, arcs, rectangles, circles, polygons, texts and dimensions, by id, or every one on a layer and/or of a kind. Fusion stores no ids: an id is kind:layer:points, and a dry run lists them. Each is picked with only its layer shown; the rest of the board must read back unchanged, or every DELETE is undone. Graphics inside parts are not touched.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "vias": [
          {
            "position": {
              "x": 12.5,
              "y": 8
            }
          }
        ]
      },
      "input": {
        "expectedRevision": "str from fusion_routing_state",
        "tracks": "[{start:{x,y}, end:{x,y}, layer}]",
        "vias": "[{position:{x,y}}]"
      },
      "longRunning": false,
      "name": "fusion_remove_items",
      "output": {
        "removed": "{tracks, vias}",
        "results": "[str]",
        "revision": "str",
        "success": "bool",
        "unconnected": "int"
      },
      "statusVerb": null,
      "summary": "Delete tracks and vias given exactly as fusion_routing_state returned them (track start, end, layer; via position). The board is read back as the old one minus exactly those items, or every removal is undone. results[] is per item: ok or err:not found.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "dryRun": true,
        "refs": [
          "R7",
          "R8"
        ]
      },
      "input": {
        "allowLocked": "bool, default false",
        "dryRun": "bool",
        "expectDocument": "required: the board's name",
        "expectedRevision": "optional",
        "refs": "[ref] (required)"
      },
      "longRunning": false,
      "name": "fusion_remove_parts",
      "output": {
        "failed": "[{ref, error}]",
        "removed": "[{ref, nets}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Remove placed parts by designator (the standard's remove_parts). Fusion keeps the board in step with the schematic and ignores a part deleted on the board, so the part is deleted in the design's schematic and leaves the board with it. Each removed part lists the nets its pads carried; a locked part is refused unless allowLocked. Tracks that met its pads stay.",
      "timeoutSeconds": 150
    },
    {
      "example": {},
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required",
        "pours": "optional 'all' (default) or [{net, layer, points}]"
      },
      "longRunning": false,
      "name": "fusion_remove_pours",
      "output": {
        "left": "list",
        "removed": "int",
        "revision": "str",
        "success": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Delete pours (all of them, or the ones named by id from fusion_pour_state, or by net, layer and outline) so a board can be poured again after a refine. Each DELETE picks the outline point farthest from every pad (refused if none is 1 mm clear), and the readback undoes everything if a part or a track changed.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "libraryPath": "a .lbr on the Fusion machine",
        "symbolName": "str"
      },
      "longRunning": false,
      "name": "fusion_remove_symbol",
      "output": {
        "removed": "str",
        "symbolsRemoved": "[str]"
      },
      "statusVerb": null,
      "summary": "Delete a component from a .lbr, and the symbols no other component uses (the standard's remove_symbol).",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "from": "str",
        "libraryPath": "a .lbr on the Fusion machine",
        "to": "str"
      },
      "longRunning": false,
      "name": "fusion_rename_footprint",
      "output": {
        "devicesUpdated": "int",
        "renamed": "str"
      },
      "statusVerb": null,
      "summary": "Rename a footprint in a .lbr (the standard's rename_footprint): every device that uses it and its 3D package instances follow.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "from": "str",
        "libraryPath": "a .lbr on the Fusion machine",
        "to": "str"
      },
      "longRunning": false,
      "name": "fusion_rename_symbol",
      "output": {
        "renamed": "str"
      },
      "statusVerb": null,
      "summary": "Rename a component in a .lbr (the standard's rename_symbol).",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "refs": [
          "U1"
        ],
        "rotate": "-45,0,45",
        "side": "iso"
      },
      "input": {
        "background": "default|transparent",
        "expectDocument": "optional: the design's name",
        "format": "png|jpg",
        "height": "int px, default 900",
        "marginMm": "mm round framed parts, default 2",
        "outputPath": "the image on the Fusion machine (default %TEMP%/adom-render/board-<side>.<format>)",
        "perspective": "bool, default false",
        "quality": "basic (default) | high (ray-traced)",
        "refs": "[ref]: frame these parts",
        "renderQuality": "int 25-100 for quality high, default 25",
        "renderSeconds": "seconds before a high render is cancelled, default 45",
        "rotate": "'x,y,z' degrees",
        "side": "top|bottom|left|right|front|back|iso, default top",
        "width": "int px, default 1600",
        "zoom": "number, default 1.0"
      },
      "longRunning": false,
      "name": "fusion_render_board_3d",
      "output": {
        "design": "str",
        "framed": "{refs, missing, pivot, zoom} when refs was given",
        "height": "int",
        "path": "str",
        "quality": "basic|high",
        "rotate": "[x,y,z]",
        "side": "str",
        "success": "bool",
        "width": "int"
      },
      "statusVerb": null,
      "summary": "A 3D picture of the board from one side (the standard's render_board_3d and render_board): Fusion's own view of the design's 3D PCB, saved as an image without the user's tab changing (it is put back). Fitted to the board, or framed on parts (refs, with marginMm), turned by rotate ('x,y,z' degrees about the view's centre, e.g. '-45,0,45'). quality high is Fusion's local ray-tracer from the same camera (every render setting put back; cancelled after renderSeconds). Orthographic by default; transparent background for png.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "preset": "top_copper"
      },
      "input": {
        "dpi": "int, default 300 (max 600)",
        "expectDocument": "the board's name",
        "format": "png (svg refused)",
        "layers": "[layer] overriding preset",
        "listPresets": "bool",
        "mirror": "bool",
        "monochrome": "bool",
        "outputPath": "the png on the Fusion machine",
        "preset": "a preset name, default all"
      },
      "longRunning": false,
      "name": "fusion_render_board_layers",
      "output": {
        "format": "png",
        "heightPx": "int",
        "path": "str",
        "preset": "str or custom",
        "widthPx": "int"
      },
      "statusVerb": null,
      "summary": "Chosen board layers as an image without a window (the standard's render_board_layers), through Fusion's EXPORT IMAGE: a preset (all, top_copper, bottom_copper, top_silkscreen, bottom_silkscreen, top_soldermask, bottom_soldermask, top_paste, bottom_paste, outline, drill, assembly_top, assembly_bottom, fabrication) or layers by the standard's copper names (F.Cu, In1.Cu .. In14.Cu, B.Cu) or Fusion's numbers; dpi, mirror, monochrome. png only: Fusion writes no svg, so format svg is refused by name.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "baseline": "compare"
      },
      "input": {
        "baseline": "set|compare",
        "drawingSheet": "true (Fusion draws the frame as a part; false is refused)",
        "expectDocument": "optional",
        "name": "file stem, default schematic (a baseline is per name and sheet)",
        "outputDir": "folder on the Fusion machine (default %TEMP%/adom-schematic-renders)",
        "sheet": "int, default 1",
        "threshold": "percent of pixels, default 0.5 (compare)",
        "width": "int px, default 2000 (dpi is chosen from the drawn extent)"
      },
      "longRunning": false,
      "name": "fusion_render_schematic",
      "output": {
        "baseline": "path",
        "changedRegionMm": "[x1, y1, x2, y2] | null (compare)",
        "diffPng": "path | null (compare)",
        "dpi": "int",
        "driftPercent": "number (compare)",
        "extentMm": "[x0, y0, x1, y1]",
        "height": "int",
        "pass": "bool (compare)",
        "png": "path",
        "rendererChanged": "bool (compare)",
        "sizeChanged": "bool (compare)",
        "width": "int"
      },
      "statusVerb": null,
      "summary": "Render a schematic sheet to a PNG without opening a window, through Fusion's own EXPORT IMAGE, and keep visual baselines: baseline set stores the render, baseline compare renders at the baseline's width and reports the pixel drift, the changed region (mm on the sheet) and a diff image with the changed pixels in red.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "dryRun": true,
        "source": [
          "U1",
          "R1",
          "C1"
        ],
        "targets": [
          [
            "U2",
            "R2",
            "C2"
          ]
        ]
      },
      "input": {
        "anchor": "a ref from source (default the first)",
        "dryRun": "bool",
        "expectDocument": "required",
        "source": "[refs] of the placed channel (2 or more)",
        "targets": "[[refs], ...] each in the same order as source"
      },
      "longRunning": false,
      "name": "fusion_replicate_layout",
      "output": {
        "footprintMismatches": "[{ref, footprint, source, sourceFootprint}]",
        "moved": "int",
        "moves": "[{ref, x, y, rotation}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Copy one channel's placement to matching channels (the standard's replicate_layout): each target keeps its anchor part where it is and every other part takes the source's offset and turn from the anchor, turned by the anchors' rotation difference; a bottom part stays mirrored. One guarded move (fusion_move_parts: read back, undone on a mismatch); footprintMismatches names parts whose footprint differs from their source part. dryRun returns the moves.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_repour",
      "output": {
        "filledAreaByLayerMm2": "{layer:mm2}",
        "filledAreaByNetMm2": "{net:mm2}",
        "revision": "str",
        "unfilled": "[net]",
        "zones": "[...]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Refill every copper pour on the live board (Fusion's ratsnest pass, with hidden fills shown again) and read the poured copper back: filled area per layer and per net, pours that poured nothing, and each pour's fill.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "force": "optional bool default false - also discard MODIFIED Untitled docs"
      },
      "longRunning": false,
      "name": "fusion_reset_workspace",
      "output": {
        "closedByAddin": "list",
        "remaining": "list",
        "success": "bool",
        "untitledScratchClosed": "int"
      },
      "statusVerb": null,
      "summary": "Bring Fusion back to a clean slate between runs: closes named documents AND the Untitled scratch the library/bind flow leaves behind (page issue #59). Fusion always keeps ONE blank document alive, so a single remaining Untitled is correct rather than a failure. MODIFIED Untitled docs are left untouched unless force:true, because those can hold real unsaved work.",
      "timeoutSeconds": 90
    },
    {
      "example": {},
      "input": {
        "maxClicks": "optional int (default 3)"
      },
      "longRunning": false,
      "name": "fusion_resolve_seat_dialog",
      "output": {
        "clicks": "int",
        "resolved": "bool"
      },
      "statusVerb": null,
      "summary": "Readiness EXECUTOR (Rust port, Phase 3): detect + resolve the Autodesk seat/licensing modal ('Active Sessions Exceeded' / 'Suspend Remote Session') in the background, at most 3 UIA clicks per call, screenshot-verified. Idempotent: nothing up answers clicks:0. fusion_readiness calls this itself when it sees the dialog; call it directly only when you are driving the launch by hand.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "save": true
      },
      "input": {
        "save": "optional bool (default true) - save open documents before restarting"
      },
      "longRunning": false,
      "name": "fusion_restart_for_addin",
      "output": {
        "addinReady": "bool",
        "steps": "[{step, ok}]",
        "success": "bool",
        "tookSec": "float"
      },
      "statusVerb": null,
      "summary": "ASYNC: returns immediately (started:true) and restarts Fusion in the background, SAVING the user's open documents first; poll fusion_readiness until ready with the new addinVersion (a restart takes 60-120s, longer than the relay budget; pass wait:true for the old blocking form). Finish add-in setup by restarting Fusion. Call this when any verb returns errorCode addin_restart_required (the add-in was installed/updated while Fusion was already open, and Fusion only loads add-ins at launch). A busy add-in (errorCode fusion_addin_busy, readiness addinBusy) is NOT a reason: it is loaded and working. ASK THE USER FIRST when a human is present - the failing verb's payload carries userMessage plus openDocuments/unsavedDocuments so you can show them what is open. Refuses with unsaved_named_document rather than discarding a never-saved document, and with restart_needs_decision (nothing killed or discarded) when Fusion asks to save work the bridge did not make; restartPolicy force (an AI-only machine) discards and kills instead.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "expectDocument": "required: the board's name",
        "referenceNets": "[net] (default the nets that own pours)",
        "resolutionMm": "number"
      },
      "longRunning": false,
      "name": "fusion_return_path",
      "output": {
        "apply": "{verb: fusion_apply_pours, args}",
        "engine": "str",
        "findings": "[...]",
        "ok": "bool"
      },
      "statusVerb": null,
      "summary": "Signal tracks running over a gap in the neighbouring layer's reference copper, with a pour plan that closes each gap (apply as fusion_apply_pours): the shared checks engine on the live board, its stack-up and Fusion's pour fills.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "checks": "[check] (default all)",
        "edgeMm": "default 0.5",
        "expectDocument": "required: the board's name",
        "gridMm": "placement grid for the off-grid check"
      },
      "longRunning": false,
      "name": "fusion_review_board",
      "output": {
        "counts": "{error, warning, info}",
        "engine": "str",
        "findings": "[{check, severity, ...}]",
        "notImplemented": "[...]",
        "ran": "[check]",
        "skipped": "[...]"
      },
      "statusVerb": null,
      "summary": "Design-review checks over one read of the board (the standard's review_board), from the shared checks engine: thirteen checks, errors first; skipped and notImplemented name what was not judged. With the schematic's parts (fusion_schematic_data) for the checks that need them; the off-grid check runs only with gridMm.",
      "timeoutSeconds": 150
    },
    {
      "example": {},
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required",
        "nets": "required [net name]"
      },
      "longRunning": false,
      "name": "fusion_ripup_nets",
      "output": {
        "revision": "str",
        "ripped": "[net]",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Take whole nets' tracks and vias back up (RIPUP per net, one undo step each) so they can be routed again, wider or another way. Their pours stay. Readback proves no track or via is left on those nets and no pour was lost.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "allowSplit": "bool: keep a route that splits another net",
        "boardId": "required from routing_state",
        "clearance": "mm, can only raise the board's rules",
        "dryRun": "optional bool",
        "expectDocument": "required exact board name",
        "expectedRevision": "required from routing_state",
        "layer": "the first copper layer, by name or number; default F.Cu",
        "net": "required exact name",
        "paths": "optional list of paths instead of points",
        "points": "waypoints [x,y] or {pad} or {x,y,layer}; a waypoint's layer is the layer after it (a via where it changes)",
        "viaDiameter": "mm, default .6 (viaSize also works: fusion_plan_route's routeNet)",
        "viaDrill": "mm, default .3",
        "width": "mm, default .25"
      },
      "longRunning": false,
      "name": "fusion_route_net",
      "output": {
        "mutated": "bool",
        "plan": "obj",
        "remainingNets": "list",
        "revision": "str",
        "splitNets": "[net] (splits_net)",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Create explicit net copper in the live Fusion canvas, on any copper layer of the board (F.Cu, In1.Cu ... B.Cu, or EAGLE's numbers). Clearance preflight against pads by their real outline, tracks and arcs, vias, holes (footprint mounting holes too), footprint and board copper and keepouts (tRestrict/bRestrict), with board/revision guards and exact copper readback. Pours are repoured round the new copper; a route that cuts another net's pour in two is undone (splits_net) unless allowSplit. One or several paths per call; no general autorouting. Use routing_drc for native DRC.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "from": {
          "neg": "IC1.7",
          "pos": "IC1.6"
        },
        "neg": "D_N",
        "pos": "D_P",
        "to": {
          "neg": "MP13.P$1",
          "pos": "MP14.P$1"
        }
      },
      "input": {
        "diffOhms": "target impedance instead of gap",
        "expectDocument": "required: the board's name",
        "fanMm": "escape length from the pads",
        "from": "{pos, neg} pads (Ref.Pad)",
        "gap": "mm",
        "layer": "copper layer",
        "neg": "negative net",
        "pos": "positive net",
        "to": "{pos, neg} pads",
        "via": "[[x, y]] waypoints",
        "width": "mm"
      },
      "longRunning": false,
      "name": "fusion_route_pair",
      "output": {
        "engine": "str",
        "problems": "[...]",
        "revision": "str",
        "routeNet": "[fusion_route_net arguments, one per net]",
        "skewMm": "number",
        "widthRule": "fusion_add_rule arguments"
      },
      "statusVerb": null,
      "summary": "Plan a differential pair routed as a pair (the standard's route_pair), from the shared checks engine: one centreline from the source pads' midpoint through waypoints to the destination pads' midpoint, each net offset to its side at width + gap (or the gap for diffOhms from the stack-up), with mitred corners. Answers routeNet [pos, neg] as fusion_route_net arguments, widthRule for fusion_add_rule and skewMm; problems lists crossings and other copper closer than the clearance, and while there are any success is false.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "boardId": "required",
        "expectDocument": "required exact board name",
        "expectedRevision": "required"
      },
      "longRunning": false,
      "name": "fusion_routing_drc",
      "output": {
        "drc": "{checked,clean,errorCount,warningCount,airwireCount,errors}",
        "revision": "str"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Run fresh native Autodesk DRC and read UL_BOARD.errors, including approved errors, warnings and airwires. Does not accept or clear any violation.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional document creationId guard",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_routing_state",
      "output": {
        "arcs": "[{center,radius,startAngle,endAngle,width,layer,net}]",
        "boardId": "str",
        "components": "[{ref,x,y,rotation,side,pattern,has3d}]",
        "copperLayers": "[F.Cu..B.Cu]",
        "fusionAirwires": "int, Fusion's own ratsnest",
        "model": "'eda-bridge-standard/board 0.1'",
        "nets": "[name]",
        "outline": "[[x,y]] (arcs sampled every 2 degrees)",
        "outlineEdges": "[{kind:line|arc,start,end,center?,radius?,angle1?,angle2?}]",
        "pads": "[{ref,name,key,x,y,sizeX,sizeY,rotation,layer,drill,net,shape,customShape?}]",
        "polygons": "[{net,layer,points}]",
        "remainingNets": "list (AI flow)",
        "revision": "str",
        "segments": "list (AI flow)",
        "splitNets": "[{net,groups}]",
        "tracks": "[{start,end,width,layer,net}]",
        "unconnected": "int from the copper",
        "units": "mm",
        "vias": "[{position,size,drill,layers,net}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Read the live board as the EDA Bridge Standard's board model, from a fresh Fusion export in the background: millimetres in Fusion's board frame, copper layers named F.Cu / In1.Cu / B.Cu, tracks, arcs (center, radius, angles), vias, every pad with its size, shape, rotation and net (a custom-shape pad as its bounding rectangle), parts with side and footprint, pours, net-less copper kept with an empty net, the outline as edges with its arcs, and unconnected / splitNets computed from the copper itself. The revision changes only with copper, parts or outline: edit verbs take it back as expectedRevision. Also carries the AI flow's keys (segments, elements, airwireCount, remainingNets, each pad's key REF.PAD).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_rules_by_kind",
      "output": {
        "ruleSet": "str",
        "rulesByKind": "{kind:[rule]}"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The ENABLED design rules grouped by kind, each group in priority order.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_execute_text_command"
      },
      "longRunning": false,
      "name": "fusion_run_command",
      "output": {
        "...": "as fusion_execute_text_command",
        "aliasOf": "fusion_execute_text_command"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_execute_text_command: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name",
        "limit": "int, default 200 violations"
      },
      "longRunning": false,
      "name": "fusion_run_drc",
      "output": {
        "airwires": "int",
        "errors": "int",
        "summary": "{rule: n}",
        "violationCount": "int",
        "violations": "[{rule,code,severity,layer,at:[x,y],approved}]",
        "warnings": "int"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Run Fusion's own design rule check on the live board in the background and read every violation back: rule text, error or warning, layer, position in mm, approved or not, plus counts by rule. No revision guard: it changes no copper, parts or outline, but Fusion stores the DRC result in the board, so the document then reads as modified (close it without saving if you only looked). fusion_routing_drc is the same check inside the routing guards.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the board's name"
      },
      "longRunning": false,
      "name": "fusion_run_erc",
      "output": {
        "byClass": "{error, warning}",
        "byCode": "{code: count}",
        "errorCount": "int",
        "messageCount": "int",
        "messages": "[{class, source, document, text, code, sheet, x, y, approved}]",
        "success": "bool",
        "warningCount": "int"
      },
      "statusVerb": null,
      "summary": "Fusion's own ERC on the open board's schematic: the design's schematic tab is brought forward for the check and the board's put back; every message is read from Fusion (UL_SCHEMATIC.errors) with its class, code, sheet and position. No dialog.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "script": "import adsk.fusion\n# ...build geometry..."
      },
      "input": {
        "script": "required str (Python using adsk; globals: adsk, app, ui, design)"
      },
      "longRunning": true,
      "name": "fusion_run_modeling_script",
      "output": {
        "documentName": "str",
        "result": "obj"
      },
      "statusVerb": null,
      "summary": "Run an adsk.fusion modeling script in the live session (sketches/extrudes/params). Free programmatic CAD.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_run_modeling_script"
      },
      "longRunning": false,
      "name": "fusion_run_script",
      "output": {
        "...": "as fusion_run_modeling_script",
        "aliasOf": "fusion_run_modeling_script"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_run_modeling_script: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_save_document"
      },
      "longRunning": false,
      "name": "fusion_save",
      "output": {
        "...": "as fusion_save_document",
        "aliasOf": "fusion_save_document"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_save_document: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "comment": "routed the power nets"
      },
      "input": {
        "comment": "optional version comment",
        "documentName": "optional: the design's name (default the active document)"
      },
      "longRunning": false,
      "name": "fusion_save_document",
      "output": {
        "files": "{...}",
        "linkedBoard": "{name, ext, fileId, version, project, folder}",
        "saved": "bool",
        "success": "bool",
        "versions": "{design, schematic, board, 3dPcb: {before, after}}"
      },
      "statusVerb": null,
      "summary": "Save the open electronics design IN PLACE as a new version (no Save As, no fork): resolves the design behind whichever tab is in front (or documentName), saves it, and reads back each changed document's version before and after, the board the design links, and keeps the 3D PCB beside the design. Answers saved:false when Fusion reports nothing unsaved, and not_saved_yet for a design that was never saved (use fusion_save_to_cloud for that first save).",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "name": "TJA1050",
        "projectName": "Main"
      },
      "input": {
        "asCopy": "optional bool: a separate copy of an already-saved design",
        "description": "optional str",
        "folderPath": "optional str, created if missing",
        "name": "required str",
        "overwrite": "optional bool",
        "projectName": "str (required when no project is open in Fusion's data panel)"
      },
      "longRunning": false,
      "name": "fusion_save_to_cloud",
      "output": {
        "files": "{design, schematic, board, 3dPcb: {name, ext, fileId, version, project, folder}}",
        "foldersCreated": "[str]",
        "success": "bool",
        "urn": "str (mechanical)"
      },
      "statusVerb": null,
      "summary": "First save of the ACTIVE document to Autodesk cloud storage with an explicit name and destination, dialog-free. On an electronics design it saves the DESIGN (.fprj with its .fsch and .fbrd, linked; the 3D PCB beside them), whichever of its tabs is in front, and puts the same kind of tab back in front. A design that is already saved is REFUSED (already_saved_use_save_document: a Save As by name forks the board into an unlinked .fbrd) unless asCopy:true. Missing folders on folderPath are created; a name already in the folder is refused unless overwrite:true. A mechanical document is saved as before.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "ops": [
          {
            "op": "sch_text",
            "texts": [
              {
                "at": [
                  10,
                  10
                ],
                "text": "NOTE"
              }
            ]
          },
          {
            "at": [
              20,
              20
            ],
            "op": "sch_junction"
          }
        ]
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "str",
        "expectedRevision": "str",
        "ops": "[{op: schematic verb name, ...its arguments}] (required)",
        "save": "bool: save the design after a batch that ran",
        "sheet": "int (each op's default)"
      },
      "longRunning": false,
      "name": "fusion_sch_batch",
      "output": {
        "ercAfter": "{errors, warnings, messages}",
        "ercBefore": "{errors, warnings, messages}",
        "failedOp": "int (nothing is changed then)",
        "mutated": "bool",
        "partial": "bool: UNDO could not return; ranOps are left in place",
        "results": "[{op, output}] in order",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "A list of schematic edits applied all or nothing (the standard's sch_batch). Each op is a standard schematic verb with its own arguments (sch_place_part, sch_connect_pins, sch_connect, sch_text, sch_junction, sch_edit_label, sch_bus, sch_move_region, annotate, ...), run as that verb runs (commands, then a read back that must match), so each sees the sheet as the earlier ops left it. When an op fails, the ops before it are undone and the schematic is checked back at its revision before the batch: failedOp names the op and nothing is changed. If Fusion's UNDO cannot bring it back, the steps are redone and the reply says partial with ranOps. Fusion's own ERC runs before and after (ercBefore, ercAfter). dryRun plans each op against the sheet as it is.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "label": "D[0..7]",
        "points": [
          [
            20,
            100
          ],
          [
            80,
            100
          ]
        ]
      },
      "input": {
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "label": "str",
        "points": "[[x, y], ...] (required)",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_bus",
      "output": {
        "ids": "[bus id]",
        "label": "str|null",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Draw a bus as a polyline, optionally named by a bus label at its first point (D[0..7], or a group such as {SDA SCL}). Read back, or undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "entries": [
          {
            "at": [
              40,
              102.54
            ],
            "direction": "down-right"
          }
        ]
      },
      "input": {
        "dryRun": "bool, default false",
        "entries": "[{at: [x, y] (the wire end), direction?: down-right|up-right|down-left|up-left, member?: str, sizeMm?: 2.54}] (required)",
        "expectDocument": "optional",
        "expectedRevision": "str",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_bus_entry",
      "output": {
        "added": "[{id, at, end, onBus, member}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Add 45-degree bus entries: the short diagonal from a member wire's end onto a bus. In Fusion an entry is a net wire named for its bus member (drawn from the bus side, so no member menu opens); member defaults to the net of the wire ending at at. Refused with entry_off_bus when the entry misses the bus, not_a_member when the net is not in the bus. Read back, or undone.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "connections": [
          {
            "designator": "U2",
            "kind": "power",
            "net": "GND",
            "pin": "1"
          },
          {
            "designator": "U2",
            "net": "VIN",
            "pin": "VIN"
          }
        ]
      },
      "input": {
        "connections": "[{designator, pin (pad number or name), net, kind?: label|power|port|wire, stubMil?}] (required)",
        "dryRun": "bool",
        "expectDocument": "the design",
        "sheet": "int, default the one shown"
      },
      "longRunning": false,
      "name": "fusion_sch_connect",
      "output": {
        "connected": "int",
        "failed": "[{designator, pin, error, code}]",
        "results": "[{designator, pin, net, kind, result, endMil}]",
        "saved": "false"
      },
      "statusVerb": null,
      "summary": "Connect pins of placed parts (the standard's sch_connect): per connection a stub from the pin's outer end (stubMil, default 200) named for the net and a label at its end (kind label; port: an XREF label; power: a label too, as Fusion's power symbols are library parts and nets join by name); kind wire is the named stub alone. A pin already on another net is refused, never merged; noerc is refused (Fusion has no No-ERC marker). Read back; a mismatch undoes every command.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "pairs": [
          {
            "from": "U1.1",
            "to": "R2.1"
          }
        ]
      },
      "input": {
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "pairs": "[{from: \"U1.1\", to: \"R5.2\", first?: h|v, via?: [[x, y]]}] (required)",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_connect_pins",
      "output": {
        "failed": "[{from, to, error}]",
        "junctionsAdded": "[[x, y]]",
        "revision": "str",
        "routes": "[{from, to, points, net, merged}]",
        "wired": "int"
      },
      "statusVerb": null,
      "summary": "Wire pins to pins by Ref.Pin (matched by pad number, then pin name): one L-shaped route per pair (first leg along the from pin, or first:h|v, through via points), drawn as one net wire. Pins on two named nets join them (Fusion's 'Connect A and B?' is answered on the command line, and merged lists them). A route corner or end landing on another wire's middle gets a junction. Read back: each pair must end on one net, or everything is undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "pins": [
          "U1.1",
          "U1.2"
        ],
        "prefix": "D",
        "start": 0
      },
      "input": {
        "bus": "bus id or name (default the only bus)",
        "busLabel": "bool|str: also label the bus",
        "dryRun": "bool, default false",
        "entry": "up|down (vertical bus) or left|right (horizontal bus)",
        "expectDocument": "optional",
        "expectedRevision": "str",
        "members": "[str]",
        "pins": "[Ref.Pin] in member order (required)",
        "prefix": "str, default D",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1",
        "start": "int, default 0"
      },
      "longRunning": false,
      "name": "fusion_sch_connect_to_bus",
      "output": {
        "busLabel": "str|null",
        "connected": "[{pin, member, wireId, entryId}]",
        "failed": "[{pin, error}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Fan pins onto a bus: per pin, a wire from the pin to beside the bus, a 45-degree entry onto it and a member label, the net named for the member (members in pin order, or prefix plus start). Only an unconnected pin, or one already on that member net, is wired; one on another net is listed in failed (wiring it would join two nets). Read back: each pin on its member net, or undone.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool, default false",
        "expectDocument": "optional",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int: must be the next number (default it)"
      },
      "longRunning": false,
      "name": "fusion_sch_create",
      "output": {
        "created": "bool",
        "page": "int",
        "revision": "str",
        "sheet": "int",
        "sheetSymbol": "null"
      },
      "statusVerb": null,
      "summary": "Add an empty sheet after the last one (Fusion numbers a schematic's sheets; it has no sheet files). Page and child-sheet arguments are refused: Fusion sets a page through a frame part, and a child sheet is a module. Read back, or undone.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "ids": [
          "wire:40.64,127,40.64,132.08"
        ]
      },
      "input": {
        "at": "[x, y]",
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "from": "[x, y]",
        "ids": "[wire id]",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1",
        "to": "[x, y]"
      },
      "longRunning": false,
      "name": "fusion_sch_delete_wire",
      "output": {
        "deleted": "[wire id]",
        "junctionsRemoved": "[[x, y]]",
        "notFound": "[str]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Delete schematic wires by id, by their two ends, or every wire through a point; junctions left joining fewer than three items are removed too. Every other wire must read back unchanged, or the delete is undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "dryRun": true,
        "edits": [
          {
            "action": "rotate",
            "degrees": 90,
            "designator": "R1"
          }
        ]
      },
      "input": {
        "dryRun": "bool",
        "edits": "[{designator, action, x,y | dx,dy | degrees | to | text}] (required)",
        "expectDocument": "the design",
        "sheet": "default the one shown"
      },
      "longRunning": false,
      "name": "fusion_sch_edit",
      "output": {
        "applied": "int",
        "failed": "[..]",
        "results": "[{designator, check, result}]"
      },
      "statusVerb": null,
      "summary": "Change placed parts on a sheet (the standard's sch_edit): move (x, y mil), moveBy (dx, dy mil), rotate (degrees), designator (rename, the board follows), comment (value), delete. Each is read back; a mismatch undoes the edit.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "edits": [
          {
            "by": [
              0,
              2.54
            ],
            "net": "SDA"
          }
        ]
      },
      "input": {
        "dryRun": "bool, default false: answer the plan and change nothing",
        "edits": "[{id | at | net, moveTo?: [x, y], by?: [dx, dy], rotation?: deg, rename?: str}] (required)",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_edit_label",
      "output": {
        "edited": "[{id, net, to, rotation, rename}]",
        "failed": "[{edit, error}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Edit net labels by id, point or a whole net: move to a point or by a delta, set the rotation, or rename (a label shows its net's name, so a rename renames the label's wire segment; other segments of the old net keep their name; onto an existing name the two join, which Fusion asks about and the bridge answers on the command line). Read back, or undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "toleranceMm": 0.5
      },
      "input": {
        "dryRun": "bool, default TRUE",
        "expectDocument": "optional",
        "expectedRevision": "str",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1",
        "toleranceMm": "default 0.5"
      },
      "longRunning": false,
      "name": "fusion_sch_fix_connectivity",
      "output": {
        "moves": "[{net, from, to, distanceMm}]",
        "revision": "str",
        "unresolved": "[{net, at, why}]"
      },
      "statusVerb": null,
      "summary": "Find wire ends that almost touch a pin, label or other wire end (within toleranceMm) and, with dryRun:false, move each onto it. dryRun defaults to true: it lists the moves and changes nothing.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "optional",
        "filePath": "optional .sch/.fsch"
      },
      "longRunning": false,
      "name": "fusion_sch_hierarchy",
      "output": {
        "duplicatePages": "[]",
        "modules": "[str]",
        "problems": "[str]",
        "renumbered": "false",
        "tree": "{name, sheets: [{page, description, children: [{name, module, path, at, sizeMm, pins, sheets}]}]}"
      },
      "statusVerb": null,
      "summary": "The design's sheet tree: the root sheets in order, and under each the module instances placed on it (Fusion's sheet symbols), each with its module's ports as pins and its own sheets, recursively. Read only; renumber is refused (Fusion numbers sheets by their order).",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "kinds": [
          "wires",
          "labels"
        ],
        "sheet": 1
      },
      "input": {
        "expectDocument": "optional: the design's name",
        "filePath": "optional .sch/.fsch on the Fusion machine instead of the open design",
        "kinds": "[wires, buses, busEntries, labels, powerPorts, junctions, noConnects, texts, sheets] (default all)",
        "sheet": "int, default 1 (Fusion numbers a schematic's sheets; or the sheet's description)"
      },
      "longRunning": false,
      "name": "fusion_sch_items",
      "output": {
        "busEntries": "[{id, net, at, end}]",
        "buses": "[{id, bus, from, to}]",
        "counts": "{kind: int}",
        "junctions": "[{id, net, at}]",
        "labels": "[{id, text, kind, at, rotation}]",
        "noConnects": "[] (EAGLE marks an unused pin by its type, not a marker)",
        "powerPorts": "[{id, ref, net, at}]",
        "revision": "str",
        "sheetCount": "int",
        "sheets": "[{id, name, module, at, sizeMm}]",
        "texts": "[{id, text, at, sizeMm, rotation}]",
        "wires": "[{id, net, from, to}]"
      },
      "statusVerb": null,
      "summary": "List one schematic sheet's wiring items with ids and positions (mm, y up): wires, buses, bus entries, net labels (local, global, hierarchical), power ports, junctions, texts and module instances (Fusion's sheet symbols). Read from Fusion's own export of the design's schematic, whichever tab is in front (the tab is put back), or from a .sch/.fsch on the Fusion machine. Fusion stores no ids, so each id is the item's kind and position. Read only.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "points": [
          [
            40.64,
            132.08
          ]
        ]
      },
      "input": {
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "force": "bool, default false",
        "points": "[[x, y]]",
        "remove": "[id | [x, y]]",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_junction",
      "output": {
        "added": "[[x, y]]",
        "notNeeded": "[[x, y]]",
        "removed": "[[x, y]]",
        "revision": "str",
        "skipped": "[{at, why}]"
      },
      "statusVerb": null,
      "summary": "Add junction dots at points, or remove dots by id or point. A point no wire passes is skipped; one where fewer than three items meet is listed as notNeeded and left (force:true adds it anyway). Read back, or undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "at": [
          40.64,
          132.08
        ],
        "text": "VIN"
      },
      "input": {
        "at": "[x, y] mm, a point on the wire",
        "dryRun": "bool",
        "expectDocument": "optional",
        "id": "a label id from sch_items (with remove)",
        "kind": "local|global",
        "remove": "bool",
        "rotation": "0|90|180|270",
        "sheet": "int",
        "text": "the net name (required to add)"
      },
      "longRunning": false,
      "name": "fusion_sch_label",
      "output": {
        "label": "{id, text, kind, at, rotation}",
        "removed": "[id]",
        "saved": "false"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "A net label on an existing wire at a point, or delete one (the standard's sch_label). A label shows its wire's net, so text must name that net (renaming is fusion_sch_edit_label). kind local or global (an XREF label); Fusion has no hierarchical label. Read back; a mismatch undoes it.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "box": [
          0,
          0,
          50,
          50
        ],
        "by": [
          10,
          0
        ]
      },
      "input": {
        "box": "[x1, y1, x2, y2] mm (required)",
        "by": "[dx, dy] mm (required)",
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_move_region",
      "output": {
        "boxUsed": "[x1, y1, x2, y2]: the box on the sheet grid",
        "moved": "{parts, by}",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Move everything inside a box by (dx, dy) as one group: parts, wires, labels, junctions and texts; wires on the pins of a moved part follow it, and wires crossing the edge stretch. Fusion snaps the outline of a group to the sheet grid, so the box is snapped first (boxUsed) and refused with box_edge_off_grid, naming the parts, when the snapped box would take different parts than the asked one. Read back: parts, texts and labels moved exactly, nothing outside moved, every pin on the net it was on; otherwise undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "expectDocument": "optional",
        "filePath": "optional .sch/.fsch",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_page",
      "output": {
        "changed": "false",
        "frame": "{ref, symbol, rect}|null",
        "heightMm": "number|null",
        "orientation": "landscape|portrait|null",
        "paper": "A4|A3|...|A|B|C|D|E|null",
        "titleBlock": "{title, rev, date, company, attributes}",
        "widthMm": "number|null"
      },
      "statusVerb": null,
      "summary": "A schematic sheet's page: the frame Fusion draws it in (paper size, orientation, rectangle) and the title block fields from the design's attributes. Reading only for now: setting the page is refused with unsupported.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "references": [
          "U1"
        ]
      },
      "input": {
        "connections": "bool, default true",
        "expectDocument": "optional",
        "filePath": "optional .sch/.fsch",
        "references": "[ref] (default every part)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_pins",
      "output": {
        "count": "int",
        "pins": "[{ref, gate, pin, number, at, side, electrical, net, wires, labels, connectedPins}]",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Every pin of the named parts (or all) on a schematic sheet: its connection point (rotation and mirror applied), symbol pin name, the pad number(s) it maps to, electrical type, the side it leaves the body, its net, and the wires, labels and pins on its wire segment. Read only.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "comment": "10k",
        "designator": "R?",
        "library": "C:/parts/Lib.lbr",
        "symbol": "R-US",
        "x": 3000,
        "y": 4000
      },
      "input": {
        "comment": "the value",
        "designator": "e.g. R12 or R? (default the deviceset's prefix, next free)",
        "dryRun": "bool",
        "expectDocument": "the design",
        "footprint": "a package name of the deviceset's variants",
        "library": ".lbr path on the Fusion machine (required)",
        "rotation": "0|90|180|270",
        "sheet": "int, default the one shown",
        "symbol": "the deviceset (required)",
        "x": "mil, default 1000",
        "y": "mil, default 1000"
      },
      "longRunning": false,
      "name": "fusion_sch_place_part",
      "output": {
        "atMil": "[x, y]",
        "designator": "str",
        "footprints": "[package]",
        "libref": "dev@lib",
        "pins": "int",
        "saved": "false"
      },
      "statusVerb": null,
      "summary": "Place a part on the schematic (the standard's sch_place_part): a deviceset from a .lbr on the Fusion machine at x, y (mil) and a rotation, with its designator (R? or none: the next free number) and value (comment). footprint picks the variant whose package has that name. partId picks the gate of a multi-gate device. The device is proven in the .lbr and the library USEd first, and ADD's questions are answered, so no picker or dialog opens; a position past 1950 mm is refused (off_the_sheet); read back as the one part added, or undone. Fusion adds it to the board too.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "references": [
          "R5",
          "C3"
        ]
      },
      "input": {
        "all": "bool: every part on the sheet",
        "dryRun": "bool, default false",
        "expectDocument": "optional",
        "expectedRevision": "str",
        "fields": "[designator, value] by default; other attribute names as Fusion names them",
        "references": "[ref]",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_reset_fields",
      "output": {
        "reset": "[{ref, field}]",
        "revision": "str",
        "untouched": "[{ref, field, why}]"
      },
      "statusVerb": null,
      "summary": "Put parts' designator and value text (or other named fields) back where the library symbol places them, through each part's turn and mirror: position, rotation and alignment; size and visibility stay. A field that is not smashed is already there and is listed as untouched. Read back, or undone.",
      "timeoutSeconds": 150
    },
    {
      "example": {
        "validate": true
      },
      "input": {
        "action": "list (others refused)",
        "expectDocument": "optional",
        "filePath": "optional .sch/.fsch",
        "sheet": "int, default 1",
        "sheetSymbol": "module instance name (default every one)",
        "validate": "bool"
      },
      "longRunning": false,
      "name": "fusion_sch_sheet_pins",
      "output": {
        "added": "[]",
        "pins": "[{id, sheetSymbol, name, kind, side, coord, connected}]",
        "problems": "[{sheetSymbol, pin, problem}]"
      },
      "statusVerb": null,
      "summary": "A sheet symbol's pins: in Fusion a sheet symbol is a module instance and its pins are the module's ports. Lists them with kind, side and whether a net reaches each; validate lists the unwired ones. Adding, renaming or deleting is refused (that is the module's PORT edit).",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "at": [
          30,
          132.08
        ]
      },
      "input": {
        "at": "[x, y] (the cut; default the middle of id)",
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "id": "wire id",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_split_wire",
      "output": {
        "ids": "[two wire ids]",
        "junction": "id",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Split a schematic wire at a point into two wires with a junction dot at the cut (Fusion's way: a junction on a wire splits it), so a branch can end on a wire end. junction:false is refused.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "designator": "C10",
        "footprint": "CAPC1005X60",
        "library": "C:/parts/Lib.lbr",
        "symbol": "C"
      },
      "input": {
        "designator": "required",
        "dryRun": "bool",
        "expectDocument": "the design",
        "footprint": "package of the variant",
        "keepComment": "bool, default false",
        "library": ".lbr path (required)",
        "symbol": "the new deviceset (required)"
      },
      "longRunning": false,
      "name": "fusion_sch_swap_part",
      "output": {
        "lostConnections": "[{pin, net}]",
        "newPinsNotOnOld": "[pad]",
        "now": "{libReference, footprints}",
        "oldPinsNotOnNew": "[pad]",
        "pinsJoined": "[] (Fusion does not add wires)"
      },
      "statusVerb": null,
      "summary": "Replace a placed part's device (the standard's sch_swap_part) with EAGLE's REPLACE: same name, place and turn, a deviceset from a .lbr on the Fusion machine (footprint picks the variant). Fusion keeps the connections of pins that land where the old ones were; where a new pin ends elsewhere a wire joins it to where the old pin ended (pinsJoined, matched by pad number), and lostConnections names any pin left without its net. keepComment puts the old value back. Multi-gate devices are refused. Read back, or undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "texts": [
          {
            "at": [
              20,
              150
            ],
            "text": "Power input"
          }
        ]
      },
      "input": {
        "dryRun": "bool, default false: answer the plan and change nothing",
        "expectDocument": "optional: the design's name",
        "expectedRevision": "the revision you last read (refused with stale_schematic otherwise)",
        "save": "bool, default FALSE: each Fusion save is a new cloud version; true saves the design after the edit (as fusion_save_document)",
        "sheet": "int, default 1",
        "texts": "[{text, at: [x, y], sizeMm?: 1.778, angle?: 0, align?: bottom-left|center|...}] (required)"
      },
      "longRunning": false,
      "name": "fusion_sch_text",
      "output": {
        "added": "int",
        "revision": "str",
        "texts": "[{id, text, at}]"
      },
      "statusVerb": null,
      "summary": "Add free text to a schematic sheet (a note, a title): size, angle and alignment, on the Info layer. Read back exactly, or undone.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "at": [
          40.64,
          132.08
        ]
      },
      "input": {
        "at": "[x, y] mm (required)",
        "expectDocument": "optional",
        "filePath": "optional .sch/.fsch",
        "sheet": "int, default 1",
        "toleranceMm": "default 0.01"
      },
      "longRunning": false,
      "name": "fusion_sch_trace_point",
      "output": {
        "crossingWithoutJunction": "bool",
        "items": "[{kind, id, net}]",
        "nearest": "{kind, id, net, distanceMm} | null",
        "nets": "[{name, bus, pins, sheets}]"
      },
      "statusVerb": null,
      "summary": "Everything electrically joined at one point of a schematic sheet: the wires, junctions, labels and pins there, and each net they belong to in full (its pins and the sheets it is on). crossingWithoutJunction is true when wires of two nets meet there without connecting. Nothing there gives the nearest item. Read only.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "expectDocument": "optional",
        "sheet": "int, default 1"
      },
      "longRunning": false,
      "name": "fusion_sch_update_from_library",
      "output": {
        "error": "str",
        "errorCode": "unsupported"
      },
      "statusVerb": null,
      "summary": "Refused with unsupported, naming the libraries the design embeds: Fusion updates parts from their libraries in its Library Manager, which asks about each part, so there is no command the bridge can answer up front.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "library": "C:/libs/parts.lbr"
      },
      "input": {
        "apply": "bool: refused with the plan (not_supported)",
        "expectDocument": "str",
        "filePath": "a .sch/.fsch to read instead of the open design",
        "library": ".lbr on the Fusion machine (or libraries: [.lbr]; required)",
        "symbols": "[deviceset names] (default every part)"
      },
      "longRunning": false,
      "name": "fusion_sch_update_from_library",
      "output": {
        "differs": "int",
        "parts": "[{designator, symbol, library, status: up_to_date|differs|library_not_found, diff?: {gates?, symbols?: {gate: {pinsAdded?, pinsRemoved?, pinsChanged?, drawingChanged?}}, attributes?, device?}, droppedWiredPins?}]",
        "plan": "true",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Compare placed parts with their library (the standard's sch_update_from_library), the plan: each part's component as the schematic holds it (Fusion keeps a copy of every library a design uses) against the same-named deviceset in the .lbr files named: gates added or removed, each symbol's pins added, removed or changed (position, length, direction, turn), its drawing, and the device's attributes (MPN ...). Each part is up_to_date, differs or library_not_found; droppedWiredPins names pins the library's symbol drops that are wired on the sheet. apply is refused with the plan, because Fusion's UPDATE asks about each part in a dialog.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "points": [
          [
            20,
            100
          ],
          [
            40,
            100
          ],
          [
            40,
            120
          ]
        ]
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "optional",
        "junctions": "bool, default true",
        "net": "optional name",
        "points": "[[x, y], ...] mm, two or more (required)",
        "sheet": "int"
      },
      "longRunning": false,
      "name": "fusion_sch_wire",
      "output": {
        "junctionsAdded": "[{id, at}]",
        "net": "str",
        "saved": "false",
        "wires": "[{id, from, to}]"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "A wire through given points, mm (the standard's sch_wire). Fusion names a wire's net: net names it, else it takes the net it starts on, else a free name. junctions (default true) adds a junction where it ends on another wire. Read back; a mismatch undoes it.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "refs": [
          "U1",
          "C3"
        ]
      },
      "input": {
        "expectDocument": "the design",
        "marginMm": "default 5",
        "outputPath": "the .png (default %TEMP%/adom-sch-zoom/sch_zoom.png)",
        "refs": "[designator] (or ref)",
        "stay": "bool: leave the schematic in front"
      },
      "longRunning": false,
      "name": "fusion_sch_zoom",
      "output": {
        "found": "[ref]",
        "image": "path",
        "missing": "[ref]",
        "rectMm": "[x1, y1, x2, y2]",
        "sheet": "int"
      },
      "statusVerb": null,
      "summary": "Find parts on the schematic (the standard's sch_zoom, the schematic half of cross-probing): highlighted with SHOW, the view framed on them round their pins (marginMm), and a picture of that view written as the proof frame (EXPORT IMAGE WINDOW, no foreground). Parts on several sheets: the first sheet holding any of them. The user's tab is put back unless stay:true.",
      "timeoutSeconds": 90
    },
    {
      "example": {
        "action": "open",
        "fileName": "BQ25792 Assembly",
        "projectName": "Main"
      },
      "input": {
        "action": "required str: open | create | show",
        "brdPath": "optional local .brd (open; defaults to the sibling)",
        "capture": "optional bool: inline screenshot proof after the switch",
        "fileName": "cloud design name (open)",
        "filePath": "local .fsch (open)",
        "name": "optional str (create)",
        "projectName": "optional str (open, with fileName)",
        "query": "find-and-open by name (open)",
        "schPath": "local EAGLE .sch on the Fusion machine (open)",
        "urn": "cloud lineage urn (open)",
        "withBoard": "optional bool (open; false = schematic only, dialog-free)"
      },
      "longRunning": true,
      "name": "fusion_schematic",
      "output": {
        "documentName": "str (create)",
        "schPath": "str (create)",
        "success": "bool",
        "via": "str: the verb that did the work"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "START HERE for a schematic. ONE verb, three actions. action:\"open\" lands in the schematic editor from whatever names the design: fileName (+projectName) or urn or query for a CLOUD design (opens it, then switches to the schematic view), schPath for a local EAGLE .sch (its sibling .brd is imported with it so parts instantiate, unless withBoard:false; a .sch alone opens dialog-free), or filePath for a Fusion-native .fsch. action:\"create\" writes a blank EAGLE schematic on the box and opens it as a NEW local electronics design with the schematic editor active, no dialog anywhere. action:\"show\" switches the already-open design to its schematic view. Every reply says which underlying verb it used (via). Remember: a schematic is a VIEW of an electronics design, not a file of its own, which is why there is no verb called open_a_schematic_file. To put a library's parts on a NEW schematic and board for showing them off, use fusion_make_showcase_project instead.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "designator": "U1",
        "params": true
      },
      "input": {
        "designator": "one part",
        "expectDocument": "the design (default the one in front)",
        "limit": "default 500",
        "paramNamesOnly": "bool",
        "params": "bool",
        "pins": "default true",
        "sheet": "a sheet number, default all"
      },
      "longRunning": false,
      "name": "fusion_schematic_data",
      "output": {
        "components": "[{designator, libReference, comment, gates, pins, params?}]",
        "count": "int"
      },
      "statusVerb": null,
      "summary": "Parts on the schematic (the standard's schematic_data): each with its library part, value, description, gates with position and turn, and pins with pad number, name and electrical type (0 input, 1 io, 2 output, 3 open collector, 4 passive, 5 hi-z, 7 power); params adds its attributes.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "columns": "optional frames per row (default 3)",
        "libraryPath": "required .lbr on this machine",
        "nets": "required {net:[ref.pin or ref.pad]}",
        "parts": "required [{ref, deviceset, value?, block?}]"
      },
      "longRunning": false,
      "name": "fusion_schematic_plan",
      "output": {
        "commandCount": "int",
        "groups": "[{group, parts, commands}]",
        "notInParts": "[str]"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Plan a grouped schematic from a netlist: one labelled frame per block, the block's parts in a row, every connected pin given a short stub named for its net and a label. Returns the command groups for fusion_schematic_run (one call per group, so the sheet grows block by block on camera). Pins may be named by pad (U1.3) or pin (U1.VIN). Pure computation from the .lbr; nothing in Fusion changes.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "expectDocument": "the design"
      },
      "longRunning": false,
      "name": "fusion_schematic_review",
      "output": {
        "engine": "str",
        "errors": "[...]",
        "ok": "bool",
        "warnings": "[...]"
      },
      "statusVerb": null,
      "summary": "Review the schematic (the standard's schematic_review), from the shared checks engine: every placed pin with its electrical type (fusion_schematic_data) against the netlist (Fusion keeps board and schematic in step). Errors such as power pins on no net and outputs driving each other; warnings such as inputs left open and single-pin nets.",
      "timeoutSeconds": 150
    },
    {
      "example": {},
      "input": {
        "commands": "required [command] (1..400)",
        "expectDocument": "optional exact schematic name",
        "libraryPath": "required for ADD: the .lbr on this machine (its file name is the library name in ADD)",
        "pauseMs": "optional 0..3000 between commands",
        "validateOnly": "bool: check every command and the library, run nothing (dryRun means the same)"
      },
      "longRunning": false,
      "name": "fusion_schematic_run",
      "output": {
        "added": "[name]",
        "commands": "int",
        "library3dEntriesRemoved": "[name]",
        "libraryLoaded": "path",
        "libraryReformatted": "bool",
        "nets": "{net:[part.pin]}",
        "parts": "[name]",
        "success": "bool",
        "verified": "bool"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Build a schematic live: a list of complete, non-interactive EAGLE commands run one at a time on the active schematic (ADD 'dev@lib' 'NAME' R0 (x y), VALUE, NET 'name' (pts), LABEL, WIRE, TEXT, LAYER, CHANGE STYLE/SIZE/WIDTH/RATIO, WINDOW FIT), with an optional pause between them so a viewer sees it grow. Anything else is refused before the first command runs. A list of any length: past 300 commands the bridge checks all of it first, then runs it in batches (batches; on a failure failedAt in your list, batchesDone). The call answers with the whole reply when it finishes within about 100 s; otherwise it answers stillRunning with a runId, and fusion_schematic_run {runId} polls until stillRunning is false, which is the whole reply. ADD is proven against libraryPath on disk first (the deviceset must be there; the library is USEd by the bridge), so the component picker can never open. A .lbr Fusion 2706 cannot ADD from (no line breaks between elements, a byte-order mark, single-quoted attributes, a 3D package naming a footprint the file does not have) is rewritten in place first, keeping its element tree apart from those dead 3D entries (libraryReformatted, library3dEntriesRemoved). The bridge sends USE itself, for the file named in libraryLoaded. Readback: the parts and nets on the sheet from a fresh export.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "hwnd": "optional int (a dialog; default the main window)"
      },
      "longRunning": false,
      "name": "fusion_screenshot_fusion",
      "output": {
        "fullPath": "str (auto-pulled by ab, 1.10.37)",
        "safePath": "str",
        "savedTo": "str",
        "sizeKB": "int",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Background PrintWindow capture of Fusion's MAIN window (largest same-title window; works occluded/bottom-of-z-order, never raises anything) or a specific dialog by hwnd. Returns fullPath/safePath (ab auto-pulls them to the caller as localPath, 1.10.37) plus the older savedTo. (Live since early versions but undescribed until 2026-08-15 - it was invisible to callers AND to the drift check.)",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "query": "Molecule"
      },
      "input": {
        "query": "required str"
      },
      "longRunning": false,
      "name": "fusion_search_cloud_files",
      "output": {
        "disabled": "bool"
      },
      "statusVerb": null,
      "summary": "\u26d4 DISABLED (returns an error): the in-app add-in search took 30+ min and CRASHED Fusion (WinError 10054). It is hard-blocked in the bridge. Use fusion_aps_search {query} \u2014 server-indexed, seconds, no Fusion. See the 'fusion-aps-search' skill.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "refs": [
          "R1",
          "R2"
        ]
      },
      "input": {
        "clear": "bool",
        "refs": "[designator]",
        "where": "board|sheet: refused when the other editor is in front"
      },
      "longRunning": false,
      "name": "fusion_select_items",
      "output": {
        "failed": "[{ref, error}]",
        "selected": "[ref]",
        "verified": "false"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Select parts in the open schematic or board by designator, or clear the selection (the standard's select_items). Fusion does not report its electronics selection back, so the reply cannot verify it (verified:false): look at the view.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "net": "VBUS",
        "zoom": true
      },
      "input": {
        "margin": "mm around the net when zooming, default 1",
        "net": "str (omit to clear)",
        "zoom": "bool, default false"
      },
      "longRunning": false,
      "name": "fusion_select_net",
      "output": {
        "byKind": "{tracks, arcs, vias, pads, pours, other}",
        "net": "str",
        "selected": "int",
        "success": "bool",
        "zoom": "[x0,y0,x1,y1] mm"
      },
      "statusVerb": null,
      "summary": "Highlight one whole net on the live board (every pad, track, via and pour of it) and, with zoom, frame it. No net clears the highlight. Counts what was highlighted by kind.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "enabled": true
      },
      "input": {
        "enabled": "optional bool (omit to read current value)"
      },
      "longRunning": true,
      "name": "fusion_set_auto_update",
      "output": {
        "autoUpdateFusion": "bool",
        "narrate": "str"
      },
      "statusVerb": "fusion_readiness",
      "summary": "Turn AUTOMATIC Fusion updating on/off for this user. ON BY DEFAULT, and deliberately INVISIBLE: Fusion ships updates constantly and nags with an 'Update Now / Update Later' panel plus a '14 days until Fusion must update' countdown. Every fusion_readiness call checks for that offer and, if present, the bridge clicks it IN THE BACKGROUND (UIA, no foreground, no caption) so the download starts and the newer build comes up on the next launch. The user should never have to click it. Call with no args to read the current setting; {enabled:false} opts out and the choice is STICKY (~/.adom/fusion-bridge/prefs.json) - once a user opts out, NEVER click their update prompts again. Tell the user this is handled for them rather than asking them to update.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "fab": "jlcpcb",
        "layers": "2"
      },
      "input": {
        "action": "optional str (apply|list|export|show)",
        "druBase64": "optional str: the same, base64-encoded",
        "druName": "optional str: file name for the staged copy",
        "druPath": "optional str .edru/.dru ALREADY on the Fusion machine, loaded as-is",
        "druText": "optional str: the whole .edru/.dru file as text, for rules that exist only on YOUR side (a container). The bridge stages it on the box and loads it (1.10.37; replaces ab's removed fusion_load_design_rules)",
        "fab": "optional str vendorSlug (jlcpcb|pcbway|osh-park|seeed-fusion|eurocircuits|aisler|elecrow|advanced-circuits-4pcb|sierra-circuits|macrofab|nextpcb|allpcb|adom-3rdpartyfab)",
        "layers": "optional str (auto|2|4|6)",
        "process": "optional str (the vendor's tier: standard|advanced|proto|enig|hasl|...; default standard)"
      },
      "longRunning": false,
      "name": "fusion_set_design_rules",
      "output": {
        "activeWorkspace": "str",
        "description": "str",
        "pack": "dict {fab, vendor, process, layers, file, record}"
      },
      "statusVerb": null,
      "summary": "Load a FAB's design rules (DRC) into the open board. The rule packs live on the wiki page adom/pcb-design-rules (JLCPCB, PCBWay, OSH Park, Seeed, Eurocircuits, Aisler, Elecrow, Advanced Circuits, Sierra, MacroFab, NextPCB, ALLPCB and 3rd party fab; one .edru per vendor/process/layer count, every number citing the vendor's own capabilities page): the bridge fetches the pack, stages it on the box, and the add-in runs `drc load`. {action:'list'} answers with every (fab, process, layers) row so you can offer the user a real choice; no fab means the bundled 3rd party fab rules for the board's layer count (what ab's removed fusion_apply_3rdpartyfab_rules did); druPath loads an .edru already on the Fusion machine; druText/druBase64 loads one that exists only on your side. Layers auto-detects from the open board. ALWAYS confirm with fusion_alerts afterwards: a refused file is an in-canvas toast, never a dialog.",
      "timeoutSeconds": 90
    },
    {
      "example": {},
      "input": {
        "enabled": "optional bool (omit to read)",
        "nativeViewport": "optional bool (default true with screenshot): also export the native viewport frame and count bodies; the reply carries nativeViewport {path, ok, bodies, productType}, geometry {bodies} (API truth, independent of pixels) and windowPixels {dominantColorFraction, blank} for the window capture. A blank window capture of a Design viewport is a known WGC artefact: trust nativeViewport, never foreground Fusion for a capture (issue #84)",
        "viewport": "optional str: \"native\" = only the frame Fusion itself renders (activeViewport.saveAsImageFile through the add-in), no window capture"
      },
      "longRunning": false,
      "name": "fusion_set_driving_badge",
      "output": {
        "showDrivingBadge": "bool",
        "success": "bool"
      },
      "statusVerb": "fusion_state",
      "summary": "Read/toggle the 'Adom is driving Fusion' TASKBAR OVERLAY BADGE (STICKY per user, default ON). While the bridge drives Fusion, its Windows taskbar button wears a small Adom mark so the user knows at a glance who is in control; it sheds automatically after 5 minutes of driving-verb idle. No args = read. Turning it off clears any badge immediately.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "count": 6,
        "dryRun": true,
        "expectDocument": "BQ25792"
      },
      "input": {
        "count": "2|4|6|8 (required)",
        "dryRun": "bool",
        "expectDocument": "required: the board's name"
      },
      "longRunning": false,
      "name": "fusion_set_layer_count",
      "output": {
        "from": "[layer]",
        "layers": "[F.Cu, In1.Cu, ..., B.Cu]",
        "stackup": "[{type, name, thickness}]",
        "thicknessMm": "number"
      },
      "statusVerb": null,
      "summary": "Set the board's copper layer count to 2, 4, 6 or 8 (the standard's set_layer_count): the board's design rules are saved, given the new layer setup and a regenerated stack-up (copper kept per layer, 0.2 mm prepreg beside the outer layers, cores sharing the rest, so the board thickness is kept), and loaded back. A layer being removed that still carries copper or graphics is refused with the counts. Read back; if the layers are not the ones asked, the board's own rules are loaded back.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "displayed": false,
        "layerId": "B.Cu"
      },
      "input": {
        "designName": "optional str: the board to act on",
        "displayed": "bool, default true",
        "layerId": "required int | str (alias: layer)"
      },
      "longRunning": false,
      "name": "fusion_set_layer_visibility",
      "output": {
        "displayed": "bool",
        "layerId": "int",
        "name": "str",
        "revision": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Show or hide one layer of the live 2D board (DISPLAY), read back from the board's own layer flags. Layer by id (fusion_layers), copper name (F.Cu, In1.Cu, B.Cu) or top/bottom. Nothing on the board changes.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true,
        "footprint": "SOT-23-5",
        "libraryPath": "C:/libs/parts.lbr",
        "symbolName": "LDO"
      },
      "input": {
        "dryRun": "bool",
        "footprint": "a footprint in the library (required)",
        "libraryPath": ".lbr on the Fusion machine (required)",
        "symbolName": "the component (required)"
      },
      "longRunning": false,
      "name": "fusion_set_models",
      "output": {
        "component": "str",
        "footprint": "str",
        "removed": "int"
      },
      "statusVerb": null,
      "summary": "The component keeps ONE footprint (the standard's set_models): every other device of the EAGLE component is removed and the footprint's device joins each pin to its pads by number (a repeated number's N@2 pads too). Offline on a .lbr, preflighted; the attributes stay on the kept device.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "outline": {
          "cornerRadius": 2,
          "rect": [
            0,
            0,
            50,
            30
          ]
        }
      },
      "input": {
        "expectedRevision": "str",
        "outline": "{rect:[x0,y0,w,h], cornerRadius?} | {points:[[x,y]...]}"
      },
      "longRunning": false,
      "name": "fusion_set_outline",
      "output": {
        "outlineEdges": "[edge]",
        "replaced": "int",
        "revision": "str",
        "success": "bool",
        "vertices": "int"
      },
      "statusVerb": null,
      "summary": "Replace the board outline (Fusion's Dimension layer 20, its board edge in the CAM output) with a rectangle, rounded corners optional, or a polygon (mm). The old outline lines are deleted, the new ones drawn, and the closed outline read back; if any copper moved, every command is undone.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "expression": "1.6 mm",
        "name": "board_thickness"
      },
      "input": {
        "expression": "required str (new expression, e.g. \"10 mm\")",
        "name": "required str (parameter name as listed by fusion_get_parameters)"
      },
      "longRunning": false,
      "name": "fusion_set_parameter",
      "output": {
        "expression": "str",
        "name": "str",
        "success": "bool",
        "unit": "str",
        "value": "float (internal units)"
      },
      "statusVerb": null,
      "summary": "Set one parameter's expression by name in the ACTIVE 3D Design document (user parameters first, then model parameters). MUTATES the design: the model regenerates and the result carries the post-op dialog array. Requires a Design document to be active (a 2D board or library editor refuses). Read names and current expressions with fusion_get_parameters; units must match the parameter (\"10 mm\", \"5 deg\").",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "footprint": "SOIC-8",
        "libraryPath": "C:/libs/new.lbr",
        "params": {
          "MPN": "LM358DR"
        },
        "symbolName": "LM358"
      },
      "input": {
        "comment": "str",
        "dryRun": "bool",
        "footprint": "a package in the same library",
        "libraryPath": "a .lbr on the Fusion machine (required)",
        "params": "{MPN: ..., Manufacturer: ...}",
        "symbolName": "default the first component"
      },
      "longRunning": false,
      "name": "fusion_set_params",
      "output": {
        "component": "str",
        "footprint": "str|null",
        "paramsSet": "int"
      },
      "statusVerb": null,
      "summary": "Set attributes on a component of a .lbr (the standard's set_params): params as {key: value} or 'Key=Value;...' on every device, a COMMENT, and with footprint a device on that package whose pins join the pads with the same numbers.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "theme": "dark"
      },
      "input": {
        "cameraPivot": "optional bool",
        "gestureNav": "optional bool",
        "invertScrollZoom": "optional bool",
        "lengthUnit": "optional str",
        "modelingOrientation": "optional str",
        "orbitScheme": "optional str",
        "theme": "optional str"
      },
      "longRunning": true,
      "name": "fusion_set_preference",
      "output": {
        "applied": "obj",
        "current": "obj"
      },
      "statusVerb": null,
      "summary": "Set Fusion appearance/navigation preferences in the LIVE session - applies immediately, NO restart. Keys: theme (light/darkblue/darkgray/classic/device/dark; some builds only ship LightGray/DarkBlue/Device, failures reported per-key), invertScrollZoom (bool - mouse scroll/zoom direction), orbitScheme (fusion360/alias/inventor/solidworks/tinkercad/powermill), modelingOrientation (yup/zup), gestureNav (bool), cameraPivot (bool), lengthUnit (mm/cm/m/in/ft - active design). Per-key outcome in `applied`, resulting state in `current`.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "enabled": "optional bool (omit to read)"
      },
      "longRunning": false,
      "name": "fusion_set_seat_takeover",
      "output": {
        "autoTakeOverSeat": "bool",
        "success": "bool"
      },
      "statusVerb": "fusion_readiness",
      "summary": "Read/toggle the mid-session Autodesk seat-takeover sweep (STICKY per user, default ON). When Autodesk pops 'Active Sessions Exceeded' mid-session, the bridge clicks Continue through BOTH dialogs in the background: this machine takes the seat, the other machine's Fusion suspends RESUMABLY, the user gets one toast. No args = read current value. Gates only the passive sweep - a verb-driven fusion_start still grabs the seat (the user asked for Fusion, so the seat is implied).",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "nets": [
          "VBUS"
        ],
        "widthMm": 0.5
      },
      "input": {
        "designName": "optional str",
        "layer": "optional layer id or name",
        "netClass": "str",
        "nets": "[str]",
        "widthMm": "required float"
      },
      "longRunning": false,
      "name": "fusion_set_track_width",
      "output": {
        "byNet": "{net: count}",
        "changed": "int",
        "notOnBoard": "[str]",
        "revision": "str",
        "success": "bool",
        "widthMm": "float"
      },
      "statusVerb": null,
      "summary": "Change the width of the existing tracks on the given nets or net class, optionally one copper layer. Each track is picked with only its layer displayed (the display is restored), then the copper is read back: only the asked tracks may change, and only their width, or every change is undone. Arcs are left alone.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "dryRun": true,
        "libraryPath": "C:/libs/parts.lbr",
        "parameter": "MPN",
        "symbolName": "LDO",
        "visible": true
      },
      "input": {
        "dryRun": "bool",
        "libraryPath": ".lbr on the Fusion machine (required)",
        "parameter": "the attribute, e.g. MPN (required)",
        "symbolName": "the component (required)",
        "visible": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_set_visibility",
      "output": {
        "component": "str",
        "parameter": "str",
        "symbolsChanged": "[str]",
        "visible": "bool"
      },
      "statusVerb": null,
      "summary": "Show or hide one parameter of a component on the sheet (the standard's set_visibility), offline in a .lbr: EAGLE shows a parameter when the symbol carries a >NAME text for it, so showing adds that text (Info layer, below the body) to each symbol the component draws and hiding removes it. Placed parts follow when the library is updated in the design. Preflighted before writing.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "enabled": "optional bool (omit to read)"
      },
      "longRunning": false,
      "name": "fusion_set_window_sizing",
      "output": {
        "sizeFusionWindow": "bool",
        "success": "bool"
      },
      "statusVerb": "fusion_state",
      "summary": "Read/toggle auto-sizing Fusion's WINDOW after launch (STICKY, default ON). Fusion opens at whatever geometry it last had, which after an automated launch is often a small default; the bridge grows it to ~92% of the monitor work area, centered, using SetWindowPos with NOACTIVATE (never ShowWindow/maximize) so focus is never stolen. A window the user maximized, or already sized to >=60% of the work area, is left alone. No args = read.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "designators": [
          "R1"
        ],
        "dryRun": true,
        "params": {
          "MPN": "0603WAF1002T5E"
        }
      },
      "input": {
        "designators": "['R1','R2'] or 'R1,R2' (required)",
        "dryRun": "bool",
        "expectDocument": "the design",
        "params": "{MPN: ...} or 'Key=Value;...' (required)"
      },
      "longRunning": false,
      "name": "fusion_sheet_params",
      "output": {
        "notFound": "[ref]",
        "updated": "[ref]"
      },
      "statusVerb": null,
      "summary": "Write attributes onto placed parts (the standard's sheet_params, the BOM write-back): MPN, Manufacturer, distributor numbers. Fusion keeps the board's parts in step. Read back; a mismatch undoes the edit.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "documentName": "optional str - the open document to show; the bridge activates it first (1.10.28). Pass it whenever more than one tab is open (a board plus its library is the usual pair); without it the verb acts on the ACTIVE document and answers not_an_electronics_design with openDocuments when a library or 3D design is in front"
      },
      "longRunning": true,
      "name": "fusion_show_2d_board",
      "output": {
        "activeWorkspace": "str"
      },
      "statusVerb": null,
      "summary": "Switch the OPEN electronics design to its 2D PCB Editor (board layout) view. This is a VIEW of the project, not a file to open standalone - if the board is empty, you opened a child/derivative instead of the EcadDesignProductType PROJECT; reopen the project. Drive the view with fusion_electron_run WINDOW commands.",
      "timeoutSeconds": 70
    },
    {
      "example": {},
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "documentName": "optional str - the open document to show; the bridge activates it first (1.10.28). Pass it whenever more than one tab is open (a board plus its library is the usual pair); without it the verb acts on the ACTIVE document and answers not_an_electronics_design with openDocuments when a library or 3D design is in front"
      },
      "longRunning": true,
      "name": "fusion_show_3d_board",
      "output": {
        "activeWorkspace": "str",
        "screenshots": "[...]"
      },
      "statusVerb": null,
      "summary": "Switch the OPEN electronics design to its 3D PCB view (populated board). A VIEW of the project, not a standalone file. Orbit it for demos via fusion_run_modeling_script (app.activeViewport.camera + vp.refresh()).",
      "timeoutSeconds": 70
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_show_3d_package"
      },
      "longRunning": false,
      "name": "fusion_show_3d_chip",
      "output": {
        "...": "as fusion_show_3d_package",
        "aliasOf": "fusion_show_3d_package"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_show_3d_package: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "name": "MYCHIP",
        "stepPath": "C:/Temp/chip.step"
      },
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "foreground": "optional bool - DEFAULT IS BACKGROUND (no focus steal; response carries windowEtiquette:background). true REQUIRES foregroundReason and shows it to the user as a 3s ab caption before any focus change - only when the USER asked to watch",
        "foregroundReason": "required WITH foreground:true - a short user-facing sentence shown as the 3s caption (e.g. 'You asked to watch the 3D board build')",
        "libraryPath": "optional str (.lbr)",
        "name": "str",
        "packageXml": "optional str (bare <package> fragment)",
        "stepPath": "optional str (WINDOWS path .step to attach)"
      },
      "longRunning": true,
      "name": "fusion_show_3d_package",
      "output": {
        "screenshot": "str path",
        "success": "bool",
        "view": "str",
        "wrappedLibrary": "str"
      },
      "statusVerb": null,
      "summary": "Open the 3D CHIP view (Package3DEnvironment) for a library package - and the RELIABLE way to get a 3D model into a library: pass stepPath and it is attached AFTER the library opens (embedded <packages3d> in hand-built .lbr files is the Fusion quirk that fails; attach-after-open works). stepPath with no library/packageXml auto-generates a minimal 2-pad carrier footprint. Without stepPath it just enters the 3D view of the named package.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "deviceset": "VL53L8CX",
        "libraryPath": "C:/Users/me/Downloads/Adom_ToF.lbr"
      },
      "input": {
        "capture": "optional bool (default true)",
        "deviceset": "required str",
        "dialog": "optional bool (default true): open, read, capture and close Fusion's Variant Attributes table",
        "libraryPath": "optional str (.lbr on the Fusion machine; opened first and read for the attributes; omit when the library is already the active document)"
      },
      "longRunning": false,
      "name": "fusion_show_attributes",
      "output": {
        "attributes": "obj (the component's metadata)",
        "screenshot": "str|null (device editor)",
        "success": "bool",
        "variantAttributesDialog": "{opened, closed, title, text, screenshot}"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Show a component's METADATA, as data and on screen. Returns the attributes of a deviceset (MPN, MANUFACTURER, MOUSER_PN, DIGIKEY_PN, LCSC_PN, DATASHEET, ADOM_WIKI, per variant) read from the library file with full values, in BOTH dialects: EAGLE <technology><attribute> and Fusion's layered <att_values>/<att_set> (1.10.34; Fusion-authored libraries used to read as empty). Opens the DEVICE editor (EDIT <name>.dev: symbol, Packages table with the Mapped check, footprint and 3D previews) with a capture, then opens Fusion's own Variant Attributes table with EAGLE's ATTRIBUTE command (no positioned clicks), reads it through UI Automation, captures the dialog window and Cancels it. Nothing is left on screen. dialog:false skips the table.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "libraryPath": "C:/Temp/lib.lbr",
        "name": "ADS8588SIPM"
      },
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "foreground": "optional bool - DEFAULT IS BACKGROUND (no focus steal; response carries windowEtiquette:background). true REQUIRES foregroundReason and shows it to the user as a 3s ab caption before any focus change - only when the USER asked to watch",
        "foregroundReason": "required WITH foreground:true - a short user-facing sentence shown as the 3s caption (e.g. 'You asked to watch the 3D board build')",
        "libraryPath": "optional str",
        "name": "str",
        "packageXml": "optional str (bare <package ...>...</package>)"
      },
      "longRunning": true,
      "name": "fusion_show_footprint",
      "output": {
        "screenshot": "str path",
        "success": "bool",
        "view": "str",
        "wrappedLibrary": "str (when wrapped)"
      },
      "statusVerb": null,
      "summary": "Open a FOOTPRINT (package) in Fusion's library editor. Same contract as fusion_show_symbol: name + libraryPath, or a bare <package> fragment as packageXml (wrapper library generated).",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "libraryPath": "C:/Temp/PART.lbr"
      },
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "libraryPath": "optional str (WINDOWS .lbr)",
        "name": "optional str (already-open library name)"
      },
      "longRunning": true,
      "name": "fusion_show_library",
      "output": {
        "screenshot": "str",
        "success": "bool",
        "view": "str"
      },
      "statusVerb": null,
      "summary": "Eight-surfaces contract: the LIBRARY surface. libraryPath (WINDOWS .lbr) opens it; name alone handles the already-open case (symmetric with kicad_show_library). Background; returns a screenshot path.",
      "timeoutSeconds": 240
    },
    {
      "example": {
        "query": "BQ25792"
      },
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "fileName": "alias of query",
        "query": "optional str (cloud design name)",
        "urn": "optional str"
      },
      "longRunning": true,
      "name": "fusion_show_project",
      "output": {
        "document": "str",
        "screenshot": "str",
        "success": "bool",
        "view": "str"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Eight-surfaces contract: bring the PROJECT/design to its top level. No args = activate this session's generated test project (fusion_make_test_project). query = cloud design name (already-open match wins, else fire-and-poll open). urn = open_by_urn passthrough. Background; returns a screenshot path.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "documentName": "optional str - the open document to show; the bridge activates it first (1.10.28). Pass it whenever more than one tab is open (a board plus its library is the usual pair); without it the verb acts on the ACTIVE document and answers not_an_electronics_design with openDocuments when a library or 3D design is in front"
      },
      "longRunning": true,
      "name": "fusion_show_schematic",
      "output": {
        "activeWorkspace": "str",
        "productType": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Switch the OPEN electronics design to its SCHEMATIC view (the symmetric partner of fusion_show_2d_board / fusion_show_3d_board, via Fusion's SwitchSchDocCmd). A VIEW of the project, not a standalone file. Drive it for demos with fusion_electron_zoom / _pan / _select.",
      "timeoutSeconds": 70
    },
    {
      "example": {
        "libraryPath": "C:/Temp/lib.lbr",
        "name": "ADS8588SIPM"
      },
      "input": {
        "capture": "optional bool - ONE call = ONE consent: the bridge settles the surface (waits for the add-in main thread + a paint beat) and returns proof inline as shot:{title,image,thumbnailDataUrl,maxWidth} (base64 frame + a ready-to-use data: URL for BROWSER callers who cannot pull a file; set captureMaxWidth to shrink it - 320 keeps a /command body small, default 640. The bridge encodes PNG; the relay may transcode to WebP, so sniff rather than assume). Use this instead of polling fusion_state after a show - page-side settle polling costs one human consent per poll (issue #30).",
        "foreground": "optional bool - DEFAULT IS BACKGROUND (no focus steal; response carries windowEtiquette:background). true REQUIRES foregroundReason and shows it to the user as a 3s ab caption before any focus change - only when the USER asked to watch",
        "foregroundReason": "required WITH foreground:true - a short user-facing sentence shown as the 3s caption (e.g. 'You asked to watch the 3D board build')",
        "libraryPath": "optional str (WINDOWS path .lbr)",
        "name": "str (deviceset/symbol name; optional if symbolXml carries name=)",
        "symbolXml": "optional str (bare <symbol ...>...</symbol>)"
      },
      "longRunning": true,
      "name": "fusion_show_symbol",
      "output": {
        "screenshot": "str path",
        "success": "bool",
        "view": "str",
        "wrappedLibrary": "str (when wrapped)"
      },
      "statusVerb": null,
      "summary": "Open a schematic SYMBOL in Fusion's library editor - first-class, no hand-built EDIT strings. Pass name + libraryPath (.lbr, opened first; omit libraryPath if a library is already open), OR pass a BARE <symbol> XML fragment as symbolXml and the bridge generates a minimal wrapper library around it (deviceset + gate synthesized) so it shows in the Library Manager. Background-safe: never steals the foreground.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "account": "optional str email: which account to pick in a provider chooser (e.g. the Google account list); remembered with the method",
        "auto": "optional bool (do click+capture+reopen in one on-box call - recommended)",
        "method": "optional str google|apple|microsoft|facebook|password (1.11.1): HOW this Autodesk account signs in. With it the bridge drives the sign-in page itself (clicks the provider, picks the account, clicks Open Product) and REMEMBERS it, so later calls need nothing. Without one and none remembered, the reply is stage method_required with methods[]: ASK THE USER, never guess",
        "profile": "optional str (chrome:<email>/edge:<email> - the profile your Autodesk account is in; remembered)",
        "waitSec": "optional int (server-side poll budget for the fresh URL, default 32)"
      },
      "longRunning": true,
      "name": "fusion_signin",
      "output": {
        "done": "bool",
        "narrate": "str",
        "notifyDelivered": "bool",
        "signinAuthUrl": "str",
        "signinOpenedVia": "str (extension|extension_free)",
        "signinProfile": "str",
        "signinProfileReason": "str",
        "signinWall": "str|null (twofactor_email_code|credentials|protocol_handoff)",
        "signinWallHint": "str|null",
        "signinWhere": "str",
        "signinWrongBrowser": "str",
        "stage": "str"
      },
      "statusVerb": "fusion_signin",
      "summary": "SELF-DRIVING as of 1.9.32: launches Fusion if needed, clicks Sign In, opens the OAuth in the right profile, TYPES THE EMAIL and advances to the exact remaining wall (password/2FA/handoff), toasting the user at that step only - see signinWall + _hint in the response, and the fusion-autodesk-signin skill. Sign Fusion in through the CORRECT browser profile - the fix for Fusion's dumb OAuth that fires at the OS-DEFAULT browser and lands in the wrong Autodesk account. Fusion opens its sign-in in whatever browser is default (e.g. a personal Chrome), but a user's Autodesk seat often lives in a different profile (work). This verb reads the FULL authorize URL (client_id/PKCE/state/request_id) that Fusion wrote into that wrong browser's HISTORY and re-opens it in the RIGHT profile IN THE BACKGROUND; the URL completes back to the running Fusion via the idmgr/callback + autodesk:// handoff, so the browser no longer has to be the OS default. Pass {profile:'chrome:[email protected]'} to fix + remember your Autodesk profile; else it probes each profile for a live Autodesk session (or asks). Staged: if Fusion hasn't opened the browser yet it returns stage:'click_signin' so you click Fusion's Sign In first. BEST: pass {auto:true} to run the WHOLE chain in ONE server-side call - it clicks Fusion's Sign In, polls the browser history on-box for the fresh authorize URL, and re-opens it in the target profile, all without extra remote round-trips, so it fits inside Fusion's ~2-min OAuth request expiry even on a slow/flaky relay (the manual staged path is the fallback). Fusion's request EXPIRES in ~2 min, so a stale captured URL returns stage:'stale' - restart Fusion (fusion_stop/start) for a fresh request and retry auto PROMPTLY. See the 'fusion-multiprofile-signin' skill.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "code": "123456"
      },
      "input": {
        "code": "required str (the 6 digits; non-digits are stripped)",
        "hwnd": "optional int (the 2FA window; auto-detected)"
      },
      "longRunning": true,
      "name": "fusion_signin_2fa",
      "output": {
        "narrate": "str",
        "steps": "list",
        "submitted": "bool"
      },
      "statusVerb": "fusion_readiness",
      "summary": "Submit Autodesk's emailed 6-DIGIT verification code to finish a Fusion sign-in, typed IN THE BACKGROUND (UIA SetValue + Invoke - never steals the user's foreground or moves their cursor). Exists so you can finish a login END TO END for the user instead of parking them on a 2FA screen: if `adom-google` is available in your container, read the code out of their Gmail (`adom-google gmail search 'from:autodesk verification code' --limit 1`), pull the 6 digits, and call this. If adom-google is NOT installed, tell the user that installing it would let you automate logins like this, then let them type it. NEVER ask the user for a code you could read yourself. The bridge ALSO toasts the user's desktop whenever it hits a human wall, so you do not need to ask it to.",
      "timeoutSeconds": 90
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_account"
      },
      "longRunning": false,
      "name": "fusion_signin_status",
      "output": {
        "...": "as fusion_account",
        "aliasOf": "fusion_account"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_account: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "dryRun": true,
        "size": 1.0
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "required: the board's name",
        "gap": "mm beside the part, default 0.2",
        "minSize": "smallest size to fall back to",
        "padClearance": "default 0.15",
        "refs": "[ref] (default all)",
        "size": "text height mm, default 1.0"
      },
      "longRunning": false,
      "name": "fusion_silk_designators",
      "output": {
        "applied": "int",
        "engine": "str",
        "failed": "int",
        "onPadsBefore": "[ref]",
        "planned": "[{ref, x, y, size, rotation}]",
        "revision": "str",
        "unplaced": "[{ref, why}]"
      },
      "statusVerb": null,
      "summary": "Place every reference designator the way assembly houses want (the standard's silk_designators), planned by the shared checks engine: one size, upright (or turned 90 beside the part), beside its own part, clear of every pad (padClearance, JLCPCB 0.15 mm), other bodies and the other designators, inside the board. Landed with fusion_apply_silkscreen (read back, undone on a mismatch) unless dryRun; parts with no clear spot are listed, not forced.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name"
      },
      "longRunning": false,
      "name": "fusion_silk_state",
      "output": {
        "components": "[{ref,pattern,x,y,rotation,side,body,name:{text,x,y,size,rotation,side,shown},comment:{...},smashed}]",
        "lines": "[{side,x1,y1,x2,y2,width}]",
        "texts": "[{text,x,y,size,rotation,side,layer}]"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "The silkscreen as it stands: every part's body box, its designator and value texts (position, size, rotation, side, shown; a smashed part's own text, else the footprint's placeholder), and the board's free silkscreen lines and texts.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "required",
        "moveText": "bool, default true"
      },
      "longRunning": false,
      "name": "fusion_silkscreen_prep",
      "output": {
        "after": "{designatorsOnPads}",
        "before": "{designatorsOnPads}",
        "moved": "int",
        "silkOffCopper": "bool (designators)",
        "silkOutsideBoard": "[{kind, x, y}]",
        "stillOnPads": "[{ref, pad}]",
        "unplaced": "int"
      },
      "statusVerb": null,
      "summary": "Get the silkscreen off the copper (the standard's silkscreen_prep, in Fusion's terms): designators on pads are moved off them where they fit (the shared engine's silk_designators plan, applied and read back), counted before and after; loose silk outside the board is listed. A footprint's own silk lines are its library package's in EAGLE, so they cannot be clipped on one board: the fab's CAM clips silkscreen at mask openings (JLCPCB does). dryRun counts and plans only.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "analysis": {
          "points": 20,
          "start": 10,
          "stop": 1000000,
          "sweep": "dec",
          "type": "ac"
        },
        "probes": [
          {
            "net": "OUT"
          }
        ]
      },
      "input": {
        "analysis": "{type: op} | {type: dc, source, start, stop, step} | {type: ac, sweep: dec|oct|lin, points, start, stop} | {type: tran, step, stop, start?} | {type: noise, source, output, reference?, sweep, points, start, stop} | {type: raw, text}",
        "expectDocument": "the design",
        "maxProbes": "default 32",
        "maxRuns": "default 50",
        "monteCarlo": "{runs, distribution: uniform|gaussian, seed, tolerances: {resistor, capacitor, inductor} %}: every R/C/L with a plain value drawn, a signal per run with the drawn values as step",
        "netlistPath": "a .net/.cir on the Fusion machine instead of the design",
        "points": "per signal, default 200 (a ceiling: first, last and extrema kept)",
        "probes": "[{net} | {current: source}]",
        "sweep": "{parameter: R4 | Q1.BF, start, stop, step, scale?: lin|dec|oct}",
        "temperatures": "{start, stop, step} degC",
        "timeoutSec": "default 120"
      },
      "longRunning": false,
      "name": "fusion_simulate",
      "output": {
        "analysis": "str",
        "available": "[net]",
        "engine": "str",
        "missing": "[probe]",
        "netlist": "path",
        "notSimulated": "[ref]",
        "rows": "int",
        "runs": "int",
        "signals": "[{signal, x, y, xUnit, yUnit, phase?, step?}]",
        "totals": "noise: {onoise, inoise} V (a list with step when there are several runs)"
      },
      "statusVerb": null,
      "summary": "Simulate the design (the standard's simulate) with the ngspice Fusion bundles (the engine Fusion's SIM runs), without Fusion's simulation dialog: the design's SPICE netlist (fusion_export_spice) gets the analysis and a .control block, and ngspice runs it in batch mode in a child process. analysis op, dc, ac (dec, oct, lin), tran or raw SPICE text; probes by net or source current (default every net, up to maxProbes); signals come back as x/y data, AC as dB with the unwrapped phase in degrees. sweep steps a part's value (R4) or a model parameter (Q1.BF) and temperatures the temperature, one run each (ngspice alter/altermod/option temp in one batch), each run its own signal with step (\"R4 = 300, T = 85\"). A partly modelled sheet runs and names the parts it left out in notSimulated; one with no modelled part refuses with no_model. netlistPath simulates a netlist file instead.",
      "timeoutSeconds": 300
    },
    {
      "example": {},
      "input": {
        "allowRestart": "optional bool (default false). The chain NEVER relaunches Fusion or restarts the add-in on its own: when the add-in does not answer it surfaces addin_restart_required and waits (resumable). allowRestart:true with restartReason lets it restart, recorded in restarts[] on fusion_prove_result (issue #87)",
        "prove": "optional bool. Default from the CALLER: an AI thread (caller headers set) binds and places only; web control / anonymous callers prove (four evidence frames per part, about 300 s per library). Explicit true/false always wins. From an AI thread, look at one part later with fusion_capture_library_views {packages} (issue #88)",
        "restartReason": "optional str shown to the human when allowRestart is used"
      },
      "longRunning": true,
      "name": "fusion_start",
      "output": {
        "addinReady": "bool",
        "status": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Launch Fusion 360 (if needed) and wait for the AdomBridge add-in to be ready.",
      "timeoutSeconds": 150
    },
    {
      "example": {},
      "input": {
        "imageAs": "optional str path|base64 (default path)",
        "screenshot": "optional bool (default true)"
      },
      "longRunning": false,
      "name": "fusion_state",
      "output": {
        "activeDocument": "str",
        "blockingDialogs": "list",
        "focusEvents": "list - the QUIETNESS AUDIT LOG (SDK canonical): every time this bridge took the user's foreground, or refused a bare foreground:true, as {at, verb, outcome: foreground|refused, reason}. Audit how quiet the bridge actually was instead of trusting that it was.",
        "mainThreadBusy": "dict|null",
        "running": "bool",
        "screenshot": "str path",
        "screenshotBase64": "str (imageAs:base64 only)",
        "success": "bool",
        "timings": "dict - measured launch history on THIS machine (p50/p90 per phase, cold vs warm)"
      },
      "statusVerb": null,
      "summary": "The RENDER-ME verb (kicad_state parity, issues #28/#30): running + window + dialog + busy state PLUS a fresh background screenshot of whatever Fusion is showing - the one verb that makes every background fusion_show_* result visible. SERVER-SIDE ONLY by design: it answers even while the add-in main thread is busy or wedged (activeDocument is best-effort with a short budget and skipped when busy). blockingDialogs carries the CLASSIFIED modal list (cause + resolution). imageAs:base64 inlines the PNG (auto-refused over 4MB - pull the screenshot path via pull_file instead).",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "...": "as fusion_readiness"
      },
      "longRunning": false,
      "name": "fusion_status",
      "output": {
        "...": "as fusion_readiness",
        "aliasOf": "fusion_readiness"
      },
      "statusVerb": null,
      "summary": "The EDA Bridge Standard's name for fusion_readiness: the same verb, same arguments and reply (marked aliasOf). One name across Altium, KiCad and Fusion bridges.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "closeTimeoutSec": "optional number, default 120: how long to wait for Fusion's windows to close",
        "skipCleanClose": "optional bool"
      },
      "longRunning": false,
      "name": "fusion_stop",
      "output": {
        "output": "str",
        "success": "bool",
        "unsavedWork": "[{window, prompt}] when unsaved work stopped it"
      },
      "statusVerb": null,
      "summary": "Gracefully STOP Fusion 360: close docs cleanly + WM_CLOSE, then wait up to closeTimeoutSec (default 120; heavy designs take minutes to close). NO force-kill - the clean opposite of fusion_start. A save prompt for a document the bridge made is answered Don't Save; one for anyone else's unsaved work is cancelled and the stop fails with errorCode unsaved_work (nothing saved or lost). If a window will not close it returns failure; use fusion_kill then.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "assigns": "1=GND;2=VDD",
        "footprintName": "VL53L5CX",
        "libraryPath": "C:/libs/sensors.lbr",
        "pcbPath": "C:/Boards/tof-test.brd"
      },
      "input": {
        "assigns": "pad=NET;...",
        "designator": "the part (default: the first)",
        "footprintName": "str (required)",
        "libraryPath": ".lbr holding the footprint (required)",
        "open": "bool, default true",
        "pcbPath": ".brd (required)"
      },
      "longRunning": false,
      "name": "fusion_swap_footprint",
      "output": {
        "data": "{placed, padsOnComp, bodiesOnComp}",
        "documentName": "str",
        "swap": "{designator, from, to, padsWired, unknownPads, has3d}"
      },
      "statusVerb": null,
      "summary": "A part on a board kept as EAGLE source (fusion_test_board's .brd) takes another footprint from a .lbr at the same place and turn (the standard's swap_footprint); its pads leave their nets and take assigns (pad number -> net, every pad of that number); tracks stay. designator picks the part (default: the first). The board reopens in Fusion as a local design and is read back.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "libraryPath": "C:/libs/parts.lbr",
        "symbolName": "LDO"
      },
      "input": {
        "libraryPath": ".lbr on the Fusion machine (required)",
        "symbolName": "the component (required)"
      },
      "longRunning": false,
      "name": "fusion_symbol_prims",
      "output": {
        "bodyRectMil": "[x1, y1, x2, y2]",
        "lines": "int",
        "models": "[{type, name, device}]",
        "pins": "int",
        "polyBboxMil": "[x1, y1, x2, y2] | null",
        "polylines": "int",
        "rectangles": "int"
      },
      "statusVerb": null,
      "summary": "A component's drawing (the standard's symbol_prims), offline from a .lbr: primitive counts by kind (pins, lines, rectangles, polygons, circles, arcs, texts) over the symbols its gates draw, the body rectangle and the polygons' box in mil, and its footprints (the component's devices). Read-only: verifies import_part, set_models and add_models.",
      "timeoutSeconds": 30
    },
    {
      "example": {},
      "input": {
        "outputPath": "optional str"
      },
      "longRunning": true,
      "name": "fusion_take_screenshot",
      "output": {
        "fullPath": "str (auto-pulled by ab, 1.10.37)",
        "path": "str",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "Screenshot the Fusion window in the BACKGROUND (no focus steal, reads through occlusion). Use it to VERIFY your own work: geometry at the wrong Z, an empty view, or a Placeholder 3D body all render successfully and only a look at the pixels catches them.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "dryRun": true,
        "targets": [
          "via"
        ]
      },
      "input": {
        "dryRun": "bool",
        "expectDocument": "required",
        "lengthRatio": "default 0.5",
        "targets": "[via, tht, smd] (default all)",
        "widthRatio": "default 1.0"
      },
      "longRunning": false,
      "name": "fusion_teardrops",
      "output": {
        "applied": "int",
        "engine": "str",
        "skipped": "[{at, why}]",
        "teardrops": "[{at, net, layer, points}]"
      },
      "statusVerb": null,
      "summary": "Teardrops where tracks meet vias and pads (the standard's teardrops), planned by the shared checks engine to hold the board's clearance: each a filled polygon on the track's layer and net; the ones that would not fit are skipped with why. Fusion draws them as named solid polygons (rank 1, no thermals), reads them back and undoes all on a mismatch; dryRun returns the plan.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "footprintName": "VL53L5CX;VL53L7CX",
        "libraryPath": "C:/libs/sensors.lbr",
        "pcbPath": "C:/Boards/tof-test.brd"
      },
      "input": {
        "assigns": "pad=NET;... (last part)",
        "footprintName": "str | 'A;B;C' (required)",
        "hMm": "number (new board only)",
        "layers": "2|4|6|8 (new board)",
        "libraryPath": "a .lbr on the Fusion machine (required)",
        "open": "bool, default true",
        "pcbPath": "a .brd: existing = append, new = create (default %TEMP%/adom-test-boards/<name>.brd)",
        "prefix": "designator prefix, default U",
        "stubs": "pad=x,y;... mm from the part's origin (last part): a 0.2 mm top track",
        "wMm": "number (new board only)"
      },
      "longRunning": false,
      "name": "fusion_test_board",
      "output": {
        "appended": "bool",
        "bodiesOnComp": "int",
        "count": "int (parts on the board)",
        "documentName": "str",
        "existingParts": "int",
        "padsOnComp": "int",
        "pcb": "path",
        "placed": "'U1;U2'",
        "saved": "bool (checked on disk)",
        "unknownPins": "[]"
      },
      "statusVerb": null,
      "summary": "Footprints from a .lbr on ONE board (the standard's test_board): a NEW board (wMm x hMm outline, or one that fits the row) when pcbPath is new or omitted, APPENDED right of the current parts when pcbPath is an existing .brd, designators continuing (U4...). Written as EAGLE source, opened in Fusion as a local design dialog-free, and read back. assigns and stubs apply to the LAST part placed.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "dryRun": true,
        "ref": "U3"
      },
      "input": {
        "drill": "mm",
        "dryRun": "bool",
        "expectDocument": "required",
        "insetMm": "default 0.1",
        "pad": "default its largest pad",
        "pitchMm": "default size + 0.5, at least 1",
        "ref": "the part (required)",
        "size": "via diameter mm"
      },
      "longRunning": false,
      "name": "fusion_thermal_vias",
      "output": {
        "applied": "int",
        "apply": "dryRun: {verb: fusion_place_vias, args: {vias}}",
        "engine": "str",
        "failed": "int",
        "planned": "{part, pad, net, padMm, vias, pitchMm, via: {sizeMm, drillMm, from}, points}"
      },
      "statusVerb": null,
      "summary": "A thermal via grid in a part's exposed pad (the standard's thermal_vias), planned by the shared checks engine: centred, inset from the pad's edge, clear of vias already there, sized by size/drill or the board's via rule, on the pad's net. Fusion places it, reads it back and undoes it on a mismatch; dryRun returns the plan with apply as fusion_place_vias arguments.",
      "timeoutSeconds": 180
    },
    {
      "example": {
        "action": "check"
      },
      "input": {
        "action": "check (default) | apply | auto",
        "on": "bool (auto): turn automatic updating on or off; omitted, it is read"
      },
      "longRunning": false,
      "name": "fusion_tool_update",
      "output": {
        "applied": "bool",
        "auto": "bool",
        "current": "Fusion's version",
        "needsRestart": "bool",
        "offered": "the offer's button, or null",
        "updateOffered": "bool"
      },
      "statusVerb": null,
      "summary": "Fusion's own updates (the standard's tool_update): check reads the update Fusion offers (nothing clicked), apply takes it in the background the way the readiness gate does (deferred while Fusion is busy, never over unsaved work), auto reads or sets automatic updating (on by default).",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "dryRun": true
      },
      "input": {
        "cascade": "optional bool (set by ab)",
        "dryRun": "optional bool (report the paths, delete nothing)",
        "name": "optional str (set by ab)"
      },
      "longRunning": false,
      "name": "fusion_uninstall",
      "output": {
        "dryRun": "bool",
        "failed": "[{path,kind,error}]",
        "fusionRunning": "bool",
        "removed": "[{path,kind}]",
        "skipped": "[{path,kind,why}]",
        "success": "bool"
      },
      "statusVerb": null,
      "summary": "CASCADE CLEANUP, called by ab's bridge_uninstall BEFORE this bridge's cache is deleted (ab 2.0.35+). Removes the artifacts this bridge planted OUTSIDE its cache: the Fusion ADD-IN in Autodesk's AddIns directories (all three historical locations), plus this bridge's prefs (~/.adom/fusion-bridge) and APS OAuth tokens (~/.adom/fusion-aps). This matters more here than for most bridges: a stale AdomBridge add-in keeps loading on every Fusion launch and binding its port long after the bridge is gone. Fusion itself is never touched. Pass dryRun:true to see exactly what would be removed. If Fusion is RUNNING it holds the add-in files open, so removal may fail - the response says so and names the remedy.",
      "timeoutSeconds": 60
    },
    {
      "example": {
        "brdPath": "C:/work/board.brd",
        "expectDocument": "Buck12V5V",
        "save": true
      },
      "input": {
        "brdPath": "required: .brd or .fbrd on the Fusion machine",
        "comment": "the version comment",
        "dryRun": "bool: the plan only",
        "expectDocument": "required: the open board's name",
        "expectedRevision": "optional",
        "save": "bool, default false: save in place after a verified read back"
      },
      "longRunning": true,
      "name": "fusion_update_board_from_eagle",
      "output": {
        "mismatched": "[str]",
        "notSynced": "[str]",
        "plan": "{partsMoved, copper, pours, outline, looseCopper, holes}",
        "revision": "str",
        "save": "fusion_save_document's reply",
        "saved": "bool",
        "success": "bool",
        "unconnected": "int",
        "verified": "bool"
      },
      "statusVerb": null,
      "summary": "Make the open design's board the board in an EAGLE .brd (or a .fbrd) on the Fusion machine, in place, so the design keeps its files and gets a new version instead of a new design (page issue #125, item 4): parts moved and turned by name, tracks and vias ripped up and drawn from the file, pours, the outline, holes and net-less copper replaced, then the whole board read back against the file. With save:true it is saved in place, and only after an exact read back. A file whose parts or nets differ (a schematic change) is refused with schematic_differs. Silkscreen and documentation, design rules and name/value positions are not synced; notSynced says when the file differs in them.",
      "timeoutSeconds": 300
    },
    {
      "example": {
        "libraryPath": "C:/libs/parts.lbr"
      },
      "input": {
        "apply": "refused: see above",
        "expectDocument": "the board (required)",
        "libraries": "[.lbr] (instead of libraryPath)",
        "libraryPath": ".lbr to compare against",
        "refs": "[ref] (default every part)"
      },
      "longRunning": false,
      "name": "fusion_update_footprints_from_library",
      "output": {
        "differs": "int",
        "footprints": "[{ref, footprint, library, status, diff?: {padsAdded, padsRemoved, padsChanged: [{pad, changes}]}, why?}]",
        "plan": "true",
        "revision": "str"
      },
      "statusVerb": null,
      "summary": "Compare placed footprints with their library (the standard's update_footprints_from_library), the plan: each part's footprint as the board holds it against the same-named package in the .lbr files named, pad by pad (added, removed, moved, resized, reshaped, drill, turn, layer), each up_to_date, differs or library_not_found. A Fusion design's libraries are cloud items, so the .lbr files are named. apply:true is refused (not_supported) with the plan: Fusion's UPDATE asks about each part in a dialog.",
      "timeoutSeconds": 120
    },
    {
      "example": {},
      "input": {
        "allowRemovals": "bool, default false",
        "execute": "bool, default false",
        "expectDocument": "the design (default the one in front)"
      },
      "longRunning": false,
      "name": "fusion_update_pcb",
      "output": {
        "changeOrder": "[] (nothing to run)",
        "executed": "bool",
        "preview": "{addParts, removeParts, sheetParts, boardParts}"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "The standard's update_pcb. Fusion forward-annotates the board from the schematic as you edit, so there is no change order to run: the preview compares the sheet and the board (addParts on the sheet with no package, removeParts only on the board), and execute has nothing to carry over. allowRemovals with parts to remove is refused: Fusion cannot delete a part from a linked board by command.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool: plan only (validateOnly means the same)",
        "expectDocument": "the design",
        "name": "a variant name: refused (not_supported), see above"
      },
      "longRunning": false,
      "name": "fusion_variants",
      "output": {
        "variant": "the one edited, as read back",
        "variants": "[{name, current, notFitted, alternates}]"
      },
      "statusVerb": null,
      "summary": "Assembly variants of the open design (the standard's variants): the list, each variant with its not-fitted parts and alternate values, read from the schematic. Making, changing or removing one is refused with not_supported: Fusion takes EAGLE's VARIANT from a text command and changes nothing (checked live on Fusion 2706), so those are done in Fusion's schematic editor.",
      "timeoutSeconds": 120
    },
    {
      "example": {
        "limit": 20
      },
      "input": {
        "limit": "int, default 40: how many verbs"
      },
      "longRunning": true,
      "name": "fusion_verb_times",
      "output": {
        "byVerb": "{verb: {count, p50, p90, max, failures}} (the older map)",
        "count": "int",
        "since": "when the log starts (ISO 8601)",
        "verbs": "[{verb, count, p50Sec, p90Sec, maxSec, lastSec, failures}] slowest p90 first (the standard's verb_times)"
      },
      "statusVerb": null,
      "summary": "This machine MEASURED timings per verb/stage - the same store that paces every progress bar and ETA. Read it to see whether an estimate is measured (this box has run it) or typical (still the seeded literal), and to explain a slow run.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "dryRun": true,
        "freqGHz": 2.4,
        "nets": [
          "ANT"
        ],
        "viaNet": "GND"
      },
      "input": {
        "clearance": "default 0.2",
        "drill": "default 0.3",
        "dryRun": "bool",
        "edge": "bool",
        "edgeInsetMm": "number",
        "expectDocument": "required",
        "freqGHz": "number",
        "nets": "[net]",
        "offsetMm": "track to via centre",
        "pitchMm": "default 2",
        "size": "default 0.6",
        "viaNet": "usually GND (required)"
      },
      "longRunning": false,
      "name": "fusion_via_fence",
      "output": {
        "applied": "int",
        "apply": "dryRun: {verb: fusion_place_vias, args: {vias}}",
        "engine": "str",
        "failed": "int",
        "planned": "{vias, candidates, via, pitchMm, offsetMm, points}"
      },
      "statusVerb": null,
      "summary": "A via fence for EMC (the standard's via_fence), planned by the shared checks engine: vias on viaNet both sides of the nets' tracks and/or round the board edge, at lambda/20 for freqGHz or a pitch; each clear of other copper, pads and the edge. Fusion places them, reads them back and undoes them on a mismatch; dryRun returns the plan.",
      "timeoutSeconds": 180
    },
    {
      "example": {},
      "input": {
        "action": "required str",
        "degrees": "orbit: float (default 40)",
        "dx": "pan: float",
        "dy": "pan: float",
        "factor": "zoom: float (>1 in)",
        "fit": "orientations: optional bool fit after (default true)",
        "smooth": "optional bool (default true)",
        "space": "optional '3d' (default) | '2d'",
        "steps": "2D: frames",
        "style": "style: str",
        "x1": "2D pan",
        "x2": "2D pan",
        "y1": "2D pan",
        "y2": "2D pan"
      },
      "longRunning": true,
      "name": "fusion_view",
      "output": {
        "action": "str",
        "data": "{result}",
        "space": "str"
      },
      "statusVerb": null,
      "summary": "FIRST-CLASS camera motion. 3D (the active Design viewport, through Fusion's own camera): fit | home | iso | top | front | right | back | left | bottom | orbit {degrees} | zoom {factor, >1 zooms in} | pan {dx,dy} | style {shaded|shaded-edges|wireframe|hidden-edges|wireframe-hidden}; smooth transitions by default. 2D (space:'2d', the active schematic, board or library editor, through Fusion's WINDOW commands): fit | zoom {factor, steps} | pan {x1,y1,x2,y2 in board mm}. The guided tour's motion runs through this verb. Verify by capture (desktop_screenshot_window before and after).",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_walk_cloud_tree",
      "output": {
        "disabled": "bool"
      },
      "statusVerb": null,
      "summary": "\u26d4 DISABLED (returns an error): the in-app add-in walk took 30+ min and CRASHED Fusion (WinError 10054). It is hard-blocked in the bridge. Use fusion_aps_search / fusion_aps_open. See the 'fusion-aps-search' skill.",
      "timeoutSeconds": 15
    },
    {
      "example": {
        "url": "https://library.io/"
      },
      "input": {
        "provider": "optional str google|password (default google)",
        "sessionId": "optional str (default autodesk-web)",
        "url": "required str (e.g. https://library.io/)",
        "username": "optional str (for the Google account chooser)"
      },
      "longRunning": true,
      "name": "fusion_web_signin",
      "output": {
        "errorCode": "str?",
        "steps": "[...]",
        "success": "bool",
        "url": "str"
      },
      "statusVerb": "fusion_get_app_state",
      "summary": "Sign a pup browser window into an Autodesk WEB surface (library.io, the hub portal at <hub>.autodesk360.com, Autodesk Account) via Google SSO. Fusion's DESKTOP app being signed in does NOT sign these in - they are separate web sessions. NEVER guesses a credential: a missing password or a 2FA challenge comes back as a typed stop (human_credential_required / second_factor_required / google_sso_unavailable) naming the one-time command the USER runs. The password never passes through this bridge or the AI - it is stored once with ab's credential_set and filled by pup in the background.",
      "timeoutSeconds": 240
    },
    {
      "example": {},
      "input": {},
      "longRunning": false,
      "name": "fusion_window_info",
      "output": {
        "dialogs": "[{hwnd, title, body, buttons, category, safeAction, ownedByMainInstance}]",
        "hasModalDialogs": "bool",
        "windows": "[{hwnd, title, kind, className, pid, rect}]"
      },
      "statusVerb": null,
      "summary": "Fusion's top-level windows and its open dialogs, without screenshots (the standard's window_info): each window's hwnd, title, kind, class, pid and rect, and each dialog's title, text, buttons, category and safe action.",
      "timeoutSeconds": 60
    },
    {
      "example": {},
      "input": {
        "dryRun": "bool",
        "from": "str",
        "fromLib": "source .lbr",
        "to": "default same name",
        "toLib": "destination .lbr (required)"
      },
      "longRunning": false,
      "name": "fusion_xcopy_footprint",
      "output": {
        "primitives": "int",
        "to": "str"
      },
      "statusVerb": null,
      "summary": "Copy a footprint from one .lbr into another (the standard's xcopy_footprint), optionally under a new name; the destination is created when missing.",
      "timeoutSeconds": 30
    },
    {
      "example": {
        "expectDocument": "fusion-routing"
      },
      "input": {
        "boardId": "optional",
        "expectDocument": "required exact active board name",
        "margin": "mm, default 1",
        "net": "optional net",
        "rect": "optional [x1,y1,x2,y2] mm",
        "ref": "optional designator",
        "refs": "optional [designator]"
      },
      "longRunning": false,
      "name": "fusion_zoom_to",
      "output": {
        "rect": "[x0,y0,x1,y1] mm framed"
      },
      "statusVerb": "fusion_routing_state",
      "summary": "Frame Fusion's board view on a rectangle, a part (or several) or a whole net, with a margin. Inside Fusion only: no window focus or mouse.",
      "timeoutSeconds": 60
    }
  ]
}