diff --git a/docs/mechanical-comparison/external-features.json b/docs/mechanical-comparison/external-features.json new file mode 100644 index 0000000..bfddb54 --- /dev/null +++ b/docs/mechanical-comparison/external-features.json @@ -0,0 +1,21512 @@ +{ + "asOf": "2026-10-02", + "scope": "All registered tools/dispatch commands and explicitly identified helpers in the pinned surveyed repositories; not an exhaustive list of every repository or every API reachable through script execution.", + "repositories": { + "faust": { + "commit": "ba8560f321656aa493cdc775bc2fa7b2e7d8f005", + "tools": [ + { + "name": "get_scene_info", + "file": "src/fusion360_mcp/tools.py", + "line": 12, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L12", + "title": "Get Scene Info", + "description": "Get design name, bodies, sketches, features, camera info", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_object_info", + "file": "src/fusion360_mcp/tools.py", + "line": 21, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L21", + "title": "Get Object Info", + "description": "Get detailed info about a named body or sketch", + "inputSchema": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Object name" + } + } + }, + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_bounding_box", + "file": "src/fusion360_mcp/tools.py", + "line": 33, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L33", + "title": "Get Bounding Box", + "description": "Axis-aligned bounding box for a body or component by name. Returns min, max, size, and center in cm (Fusion internal units). For components, unions bounding boxes of all contained bodies. Useful for measuring imported reference geometry.", + "inputSchema": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Body or component name" + } + } + }, + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity; fusion_physical_properties", + "gapDetail": "Explicit units; component-definition and occurrence scopes are separate.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "src/fusion360_mcp/tools.py", + "line": 54, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L54", + "title": "Create Sketch", + "description": "Create a new sketch on xy/yz/xz plane, optionally offset", + "inputSchema": { + "type": "object", + "properties": { + "plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "default": "xy" + }, + "z_offset": { + "type": "number", + "description": "Offset distance from the plane (cm)" + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "file": "src/fusion360_mcp/tools.py", + "line": 73, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L73", + "title": "Draw Rectangle", + "description": "Draw a rectangle in the most recent sketch", + "inputSchema": { + "type": "object", + "required": [ + "width", + "height" + ], + "properties": { + "width": { + "type": "number", + "minimum": 0.001 + }, + "height": { + "type": "number", + "minimum": 0.001 + }, + "origin_x": { + "type": "number", + "default": 0 + }, + "origin_y": { + "type": "number", + "default": 0 + }, + "origin_z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "file": "src/fusion360_mcp/tools.py", + "line": 89, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L89", + "title": "Draw Circle", + "description": "Draw a circle in the most recent sketch", + "inputSchema": { + "type": "object", + "required": [ + "radius" + ], + "properties": { + "radius": { + "type": "number", + "minimum": 0.001 + }, + "center_x": { + "type": "number", + "default": 0 + }, + "center_y": { + "type": "number", + "default": 0 + }, + "center_z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_line", + "file": "src/fusion360_mcp/tools.py", + "line": 104, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L104", + "title": "Draw Line", + "description": "Draw a line in the most recent sketch", + "inputSchema": { + "type": "object", + "required": [ + "start_x", + "start_y", + "end_x", + "end_y" + ], + "properties": { + "start_x": { + "type": "number" + }, + "start_y": { + "type": "number" + }, + "start_z": { + "type": "number", + "default": 0 + }, + "end_x": { + "type": "number" + }, + "end_y": { + "type": "number" + }, + "end_z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude", + "file": "src/fusion360_mcp/tools.py", + "line": 122, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L122", + "title": "Extrude", + "description": "Extrude a sketch profile", + "inputSchema": { + "type": "object", + "required": [ + "height" + ], + "properties": { + "height": { + "type": "number" + }, + "profile_index": { + "type": "integer", + "default": 0, + "minimum": 0 + }, + "operation": { + "type": "string", + "enum": [ + "new_body", + "join", + "cut", + "intersect" + ], + "default": "new_body" + }, + "direction": { + "type": "string", + "enum": [ + "positive", + "negative", + "symmetric" + ], + "default": "positive" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "file": "src/fusion360_mcp/tools.py", + "line": 145, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L145", + "title": "Revolve", + "description": "Revolve a sketch profile around an axis", + "inputSchema": { + "type": "object", + "required": [ + "angle" + ], + "properties": { + "angle": { + "type": "number", + "minimum": 0.1, + "maximum": 360 + }, + "profile_index": { + "type": "integer", + "default": 0 + }, + "axis_origin_x": { + "type": "number", + "default": 0 + }, + "axis_origin_y": { + "type": "number", + "default": 0 + }, + "axis_origin_z": { + "type": "number", + "default": 0 + }, + "axis_direction_x": { + "type": "number", + "default": 1 + }, + "axis_direction_y": { + "type": "number", + "default": 0 + }, + "axis_direction_z": { + "type": "number", + "default": 0 + }, + "operation": { + "type": "string", + "enum": [ + "new_body", + "join", + "cut", + "intersect" + ], + "default": "new_body" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet", + "file": "src/fusion360_mcp/tools.py", + "line": 169, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L169", + "title": "Fillet Edges", + "description": "Round edges of a body", + "inputSchema": { + "type": "object", + "required": [ + "radius" + ], + "properties": { + "radius": { + "type": "number", + "minimum": 0.001 + }, + "body_name": { + "type": "string", + "description": "Body name (preferred)" + }, + "body_index": { + "type": "integer", + "default": 0 + }, + "edge_selection": { + "type": "string", + "enum": [ + "all", + "top", + "bottom", + "vertical" + ], + "default": "all" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "chamfer", + "file": "src/fusion360_mcp/tools.py", + "line": 188, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L188", + "title": "Chamfer Edges", + "description": "Chamfer edges of a body", + "inputSchema": { + "type": "object", + "required": [ + "distance" + ], + "properties": { + "distance": { + "type": "number", + "minimum": 0.001 + }, + "body_name": { + "type": "string" + }, + "body_index": { + "type": "integer", + "default": 0 + }, + "edge_selection": { + "type": "string", + "enum": [ + "all", + "top", + "bottom", + "vertical" + ], + "default": "all" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell", + "file": "src/fusion360_mcp/tools.py", + "line": 207, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L207", + "title": "Shell Body", + "description": "Hollow out a body by removing a face", + "inputSchema": { + "type": "object", + "required": [ + "thickness" + ], + "properties": { + "thickness": { + "type": "number", + "minimum": 0.001 + }, + "body_name": { + "type": "string" + }, + "body_index": { + "type": "integer", + "default": 0 + }, + "face_selection": { + "type": "string", + "enum": [ + "top", + "bottom" + ], + "default": "top" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror", + "file": "src/fusion360_mcp/tools.py", + "line": 226, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L226", + "title": "Mirror Body", + "description": "Mirror a body across a construction plane", + "inputSchema": { + "type": "object", + "required": [ + "mirror_plane" + ], + "properties": { + "mirror_plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ] + }, + "body_name": { + "type": "string" + }, + "body_index": { + "type": "integer", + "default": 0 + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rename_body", + "file": "src/fusion360_mcp/tools.py", + "line": 244, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L244", + "title": "Rename Body", + "description": "Rename a body (searches root and all components)", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "new_name" + ], + "properties": { + "body_name": { + "type": "string", + "description": "Current body name" + }, + "new_name": { + "type": "string", + "description": "New name for the body" + } + } + }, + "coverage": "script-only", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body", + "file": "src/fusion360_mcp/tools.py", + "line": 263, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L263", + "title": "Move Body", + "description": "Translate a named body by (x, y, z)", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "x": { + "type": "number", + "default": 0 + }, + "y": { + "type": "number", + "default": 0 + }, + "z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_stl", + "file": "src/fusion360_mcp/tools.py", + "line": 278, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L278", + "title": "Export STL", + "description": "Export a named body as an STL file", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "file_path": { + "type": "string", + "description": "Destination path (default: ~/Desktop/.stl)" + } + } + }, + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "boolean_operation", + "file": "src/fusion360_mcp/tools.py", + "line": 294, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L294", + "title": "Boolean Operation", + "description": "Combine two named bodies (join/cut/intersect)", + "inputSchema": { + "type": "object", + "required": [ + "target_body", + "tool_body" + ], + "properties": { + "target_body": { + "type": "string" + }, + "tool_body": { + "type": "string" + }, + "operation": { + "type": "string", + "enum": [ + "join", + "cut", + "intersect" + ], + "default": "join" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_all", + "file": "src/fusion360_mcp/tools.py", + "line": 312, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L312", + "title": "Delete All", + "description": "Clear the design (delete all timeline items)", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "script-only", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "undo", + "file": "src/fusion360_mcp/tools.py", + "line": 321, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L321", + "title": "Undo", + "description": "Undo the last operation", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "delegated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_code", + "file": "src/fusion360_mcp/tools.py", + "line": 331, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L331", + "title": "Execute Code", + "description": "Run arbitrary Python in Fusion 360. The last expression's value is returned (REPL-style). Pre-defined names: app, ui, design, component, adsk, math.", + "inputSchema": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "type": "string" + } + } + }, + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "dedicated script executor", + "baselineGap": false, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "file": "src/fusion360_mcp/tools.py", + "line": 348, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L348", + "title": "Sweep", + "description": "Sweep a sketch profile along a path (sketch curve)", + "inputSchema": { + "type": "object", + "required": [ + "profile_index", + "path_sketch_name" + ], + "properties": { + "profile_index": { + "type": "integer", + "default": 0, + "minimum": 0 + }, + "path_sketch_name": { + "type": "string", + "description": "Name of the sketch containing the sweep path" + }, + "path_curve_index": { + "type": "integer", + "default": 0, + "minimum": 0 + }, + "operation": { + "type": "string", + "enum": [ + "new_body", + "join", + "cut", + "intersect" + ], + "default": "new_body" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "file": "src/fusion360_mcp/tools.py", + "line": 370, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L370", + "title": "Loft", + "description": "Loft between two or more sketch profiles", + "inputSchema": { + "type": "object", + "required": [ + "profile_sketch_names" + ], + "properties": { + "profile_sketch_names": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 2, + "description": "Ordered list of sketch names whose first profile will be lofted" + }, + "operation": { + "type": "string", + "enum": [ + "new_body", + "join", + "cut", + "intersect" + ], + "default": "new_body" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_polygon", + "file": "src/fusion360_mcp/tools.py", + "line": 395, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L395", + "title": "Create Polygon", + "description": "Draw a regular polygon in the most recent sketch", + "inputSchema": { + "type": "object", + "required": [ + "sides", + "radius" + ], + "properties": { + "sides": { + "type": "integer", + "minimum": 3, + "maximum": 64 + }, + "radius": { + "type": "number", + "minimum": 0.001, + "description": "Circumradius (cm)" + }, + "center_x": { + "type": "number", + "default": 0 + }, + "center_y": { + "type": "number", + "default": 0 + }, + "center_z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "src/fusion360_mcp/tools.py", + "line": 415, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L415", + "title": "Draw Arc", + "description": "Draw an arc in the most recent sketch (center + start point + sweep angle)", + "inputSchema": { + "type": "object", + "required": [ + "center_x", + "center_y", + "start_x", + "start_y", + "sweep_angle" + ], + "properties": { + "center_x": { + "type": "number" + }, + "center_y": { + "type": "number" + }, + "center_z": { + "type": "number", + "default": 0 + }, + "start_x": { + "type": "number" + }, + "start_y": { + "type": "number" + }, + "start_z": { + "type": "number", + "default": 0 + }, + "sweep_angle": { + "type": "number", + "description": "Sweep angle in degrees (positive = CCW)", + "minimum": -360, + "maximum": 360 + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_hole", + "file": "src/fusion360_mcp/tools.py", + "line": 440, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L440", + "title": "Create Hole", + "description": "Create a hole feature on a body face", + "inputSchema": { + "type": "object", + "required": [ + "diameter", + "depth" + ], + "properties": { + "diameter": { + "type": "number", + "minimum": 0.001 + }, + "depth": { + "type": "number", + "minimum": 0.001 + }, + "body_name": { + "type": "string" + }, + "body_index": { + "type": "integer", + "default": 0 + }, + "face_selection": { + "type": "string", + "enum": [ + "top", + "bottom" + ], + "default": "top", + "description": "Drill into the highest up-facing (top) or lowest down-facing (bottom) planar face, which must be near-horizontal (within ~0.6 deg)" + }, + "center_x": { + "type": "number", + "default": 0, + "description": "Hole centre X in model space (cm)" + }, + "center_y": { + "type": "number", + "default": 0, + "description": "Hole centre Y in model space (cm)" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=hole", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern", + "file": "src/fusion360_mcp/tools.py", + "line": 475, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L475", + "title": "Rectangular Pattern", + "description": "Pattern a body in rows and columns", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "x_count": { + "type": "integer", + "minimum": 1, + "default": 1 + }, + "x_spacing": { + "type": "number", + "default": 1.0, + "description": "Spacing between columns (cm)" + }, + "y_count": { + "type": "integer", + "minimum": 1, + "default": 1 + }, + "y_spacing": { + "type": "number", + "default": 1.0, + "description": "Spacing between rows (cm)" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "circular_pattern", + "file": "src/fusion360_mcp/tools.py", + "line": 499, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L499", + "title": "Circular Pattern", + "description": "Pattern a body around an axis", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "count" + ], + "properties": { + "body_name": { + "type": "string" + }, + "count": { + "type": "integer", + "minimum": 2 + }, + "axis": { + "type": "string", + "enum": [ + "x", + "y", + "z" + ], + "default": "z" + }, + "total_angle": { + "type": "number", + "default": 360, + "minimum": 1, + "maximum": 360, + "description": "Total angle to distribute copies over (degrees)" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "src/fusion360_mcp/tools.py", + "line": 525, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L525", + "title": "Create Component", + "description": "Create a new component (sub-assembly) in the design", + "inputSchema": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Component name" + }, + "parent_name": { + "type": "string", + "description": "Parent component name (omit for root)" + } + } + }, + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_joint", + "file": "src/fusion360_mcp/tools.py", + "line": 541, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L541", + "title": "Add Joint", + "description": "Add a joint between two components", + "inputSchema": { + "type": "object", + "required": [ + "component_one", + "component_two" + ], + "properties": { + "component_one": { + "type": "string" + }, + "component_two": { + "type": "string" + }, + "joint_type": { + "type": "string", + "enum": [ + "rigid", + "revolute", + "slider", + "cylindrical", + "pin_slot", + "planar", + "ball" + ], + "default": "rigid" + } + } + }, + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_components", + "file": "src/fusion360_mcp/tools.py", + "line": 567, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L567", + "title": "List Components", + "description": "List all components in the design", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_step", + "file": "src/fusion360_mcp/tools.py", + "line": 577, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L577", + "title": "Export STEP", + "description": "Export a body or component as a STEP file", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "file_path": { + "type": "string", + "description": "Destination path (default: ~/Desktop/.step)" + } + } + }, + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_f3d", + "file": "src/fusion360_mcp/tools.py", + "line": 593, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L593", + "title": "Export F3D", + "description": "Export the design as a native Fusion 360 archive (.f3d)", + "inputSchema": { + "type": "object", + "properties": { + "file_path": { + "type": "string", + "description": "Destination path (default: ~/Desktop/.f3d)" + } + } + }, + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_view_sheet", + "file": "src/fusion360_mcp/tools.py", + "line": 609, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L609", + "title": "Export View Sheet", + "description": "Render canonical orthographic + isometric views as PNGs and emit a self-contained HTML sheet suitable for sharing with a mechanical engineer. Opens in any browser; Print -> Save as PDF for a static artifact. Restores the viewport camera after rendering.", + "inputSchema": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Heading shown on the sheet (default: document name)." + }, + "notes": { + "type": "string", + "description": "Free-form notes rendered below the views. Newlines preserved; HTML is escaped." + }, + "views": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "iso", + "iso_ne", + "iso_nw", + "iso_sw", + "front", + "back", + "top", + "bottom", + "right", + "left" + ] + }, + "description": "Ordered list of views to render (default: iso, front, top, right)." + }, + "image_size": { + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 2, + "maxItems": 2, + "description": "[width, height] in pixels (default [1200, 900])." + }, + "output_dir": { + "type": "string", + "description": "Destination folder (default: ~/Desktop/_views_)." + } + } + }, + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Image view sheet, not native dimensioned drawing (1667).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export", + "file": "src/fusion360_mcp/tools.py", + "line": 674, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L674", + "title": "Export (unified)", + "description": "Unified export wrapper \u2014 dispatches to export_stl / export_step / export_f3d based on format or file extension. Format is auto-detected from file_path extension if not specified. STL and STEP require body_name; F3D exports the whole design.", + "inputSchema": { + "type": "object", + "properties": { + "format": { + "type": "string", + "enum": [ + "stl", + "step", + "stp", + "f3d" + ], + "description": "Output format. Inferred from file_path extension if omitted." + }, + "body_name": { + "type": "string", + "description": "Body to export (required for stl/step)" + }, + "file_path": { + "type": "string", + "description": "Destination path (default: ~/Desktop/.)" + } + } + }, + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "STEP/STL/3MF/F3D/IGES/SAT/SMT/USDZ/FBX/SKP with runtime preflight; no generic OBJ or sketch DXF export.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "import_mesh", + "file": "src/fusion360_mcp/tools.py", + "line": 707, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L707", + "title": "Import Mesh", + "description": "Import a mesh file (STL, OBJ, or 3MF) as a mesh body. Returns the mesh name and bounding box. Use for reference geometry (e.g. exported SketchUp model).", + "inputSchema": { + "type": "object", + "required": [ + "file_path" + ], + "properties": { + "file_path": { + "type": "string", + "description": "Absolute path to mesh file (.stl/.obj/.3mf)" + }, + "component_name": { + "type": "string", + "description": "Target component name (omit for root component)" + }, + "units": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Source mesh units (default: mm)" + } + } + }, + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_parameters", + "file": "src/fusion360_mcp/tools.py", + "line": 737, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L737", + "title": "Get Parameters", + "description": "List all user parameters in the design", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect; fusion_get_parameters", + "gapDetail": "User and model parameters with expressions and units.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_parameter", + "file": "src/fusion360_mcp/tools.py", + "line": 746, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L746", + "title": "Create Parameter", + "description": "Create a new user parameter", + "inputSchema": { + "type": "object", + "required": [ + "name", + "value", + "unit" + ], + "properties": { + "name": { + "type": "string", + "description": "Parameter name" + }, + "value": { + "type": "number", + "description": "Numeric value, expressed in `unit`" + }, + "unit": { + "type": "string", + "description": "Unit the value is given in (e.g. 'mm', 'cm', 'in', 'deg'). Empty means unitless." + }, + "comment": { + "type": "string", + "description": "Optional comment" + } + } + }, + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_create / parameter_batch", + "gapDetail": "Typed length/angle/mass/unitless user parameters; other unit kinds remain outside this schema.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_parameter", + "file": "src/fusion360_mcp/tools.py", + "line": 770, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L770", + "title": "Set Parameter", + "description": "Update the value of an existing user parameter", + "inputSchema": { + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "description": "Parameter name" + }, + "value": { + "type": "number", + "description": "New numeric value, expressed in the unit the parameter already declares" + } + } + }, + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_parameter", + "file": "src/fusion360_mcp/tools.py", + "line": 789, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L789", + "title": "Delete Parameter", + "description": "Remove a user parameter", + "inputSchema": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Parameter name" + } + } + }, + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_batch action=delete", + "gapDetail": "Deletes user parameters only; failed downstream recompute aborts the batch.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint", + "file": "src/fusion360_mcp/tools.py", + "line": 802, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L802", + "title": "Add Sketch Constraint", + "description": "Add a geometric constraint in the active sketch. Entities are referenced by index within the sketch.", + "inputSchema": { + "type": "object", + "required": [ + "constraint_type" + ], + "properties": { + "constraint_type": { + "type": "string", + "enum": [ + "coincident", + "parallel", + "perpendicular", + "tangent", + "equal", + "fix", + "midpoint", + "concentric", + "horizontal", + "vertical", + "symmetry", + "collinear", + "smooth" + ] + }, + "entity_one": { + "type": "integer", + "description": "Index of the first sketch entity", + "minimum": 0 + }, + "entity_two": { + "type": "integer", + "description": "Index of the second sketch entity (not needed for fix/horizontal/vertical)", + "minimum": 0 + }, + "symmetry_line": { + "type": "integer", + "description": "Index of the symmetry line (only for symmetry constraint)", + "minimum": 0 + }, + "sketch_name": { + "type": "string", + "description": "Sketch name (default: most recent)" + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "auto_constrain", + "file": "src/fusion360_mcp/tools.py", + "line": 858, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L858", + "title": "Auto-Constrain Sketch", + "description": "Automatically add geometric constraints and dimensions to fully constrain a sketch (Fusion 2026+ AutoConstrain API). result_option: 1 = thorough/slow (default), 2 = fast, 3 = may move geometry within tolerance.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string", + "description": "Sketch name (default: most recent)" + }, + "result_option": { + "type": "integer", + "enum": [ + 1, + 2, + 3 + ], + "default": 1, + "description": "1 = most thorough (slowest), 2 = fastest, 3 = adjusts geometry within tolerance" + } + } + }, + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_dimension", + "file": "src/fusion360_mcp/tools.py", + "line": 887, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L887", + "title": "Add Sketch Dimension", + "description": "Add a driving dimension to constrain sketch geometry. Value is in cm for distances, degrees for angles.", + "inputSchema": { + "type": "object", + "required": [ + "dimension_type", + "value" + ], + "properties": { + "dimension_type": { + "type": "string", + "enum": [ + "distance", + "horizontal", + "vertical", + "angular", + "radial", + "diameter" + ] + }, + "value": { + "type": "number", + "description": "Dimension value (cm or degrees)" + }, + "entity_one": { + "type": "integer", + "description": "Index of first entity (point or curve)", + "minimum": 0 + }, + "entity_two": { + "type": "integer", + "description": "Index of second entity (for distance/angular; not for radial/diameter)", + "minimum": 0 + }, + "sketch_name": { + "type": "string", + "description": "Sketch name (default: most recent)" + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_dimension", + "gapDetail": "Distance/horizontal/vertical/radius/diameter/angle; expressions and named model parameters.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_construction_plane", + "file": "src/fusion360_mcp/tools.py", + "line": 934, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L934", + "title": "Create Construction Plane", + "description": "Create a construction plane for sketching", + "inputSchema": { + "type": "object", + "required": [ + "method" + ], + "properties": { + "method": { + "type": "string", + "enum": [ + "offset", + "angle", + "midplane", + "three_points", + "tangent" + ] + }, + "plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "description": "Reference plane (for offset/angle)" + }, + "offset": { + "type": "number", + "description": "Offset distance in cm (for offset)" + }, + "angle": { + "type": "number", + "description": "Angle in degrees (for angle method)" + }, + "edge_name": { + "type": "string", + "description": "Edge or axis to rotate around (for angle method)" + }, + "plane_one": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "description": "First plane (for midplane)" + }, + "plane_two": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "description": "Second plane (for midplane)" + }, + "point_one": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3, + "description": "[x,y,z] first point" + }, + "point_two": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3, + "description": "[x,y,z] second point" + }, + "point_three": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3, + "description": "[x,y,z] third point" + } + } + }, + "coverage": "partial", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: plane_create", + "gapDetail": "Offset and angle planes only; three-point/midplane/tangent forms remain gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_construction_axis", + "file": "src/fusion360_mcp/tools.py", + "line": 1003, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1003", + "title": "Create Construction Axis", + "description": "Create a construction axis", + "inputSchema": { + "type": "object", + "required": [ + "method" + ], + "properties": { + "method": { + "type": "string", + "enum": [ + "two_points", + "intersection", + "edge", + "perpendicular_at_point" + ] + }, + "point_one": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + "point_two": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + "plane_one": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "description": "First plane (for intersection)" + }, + "plane_two": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "description": "Second plane (for intersection)" + }, + "body_name": { + "type": "string", + "description": "Body name (for edge method)" + }, + "edge_index": { + "type": "integer", + "description": "Edge index on the body", + "minimum": 0 + } + } + }, + "coverage": "script-only", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_ucs", + "file": "src/fusion360_mcp/tools.py", + "line": 1054, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1054", + "title": "Create User Coordinate System", + "description": "Create a UCS at (x, y, z) with optional rotation (Fusion 2026+ UCS API, preview). A hidden reference sketch is created to anchor the UCS \u2014 do not delete it.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "UCS name" + }, + "x": { + "type": "number", + "default": 0, + "description": "Origin X (cm)" + }, + "y": { + "type": "number", + "default": 0, + "description": "Origin Y (cm)" + }, + "z": { + "type": "number", + "default": 0, + "description": "Origin Z (cm)" + }, + "angle_x": { + "type": "number", + "default": 0, + "description": "Rotation about X (degrees)" + }, + "angle_y": { + "type": "number", + "default": 0, + "description": "Rotation about Y (degrees)" + }, + "angle_z": { + "type": "number", + "default": 0, + "description": "Rotation about Z (degrees)" + } + } + }, + "coverage": "script-only", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_spline", + "file": "src/fusion360_mcp/tools.py", + "line": 1088, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1088", + "title": "Draw Spline", + "description": "Draw a spline in the most recent sketch. Use fit_points for a curve through points, or control_points for a control-polygon spline.", + "inputSchema": { + "type": "object", + "required": [ + "spline_type", + "points" + ], + "properties": { + "spline_type": { + "type": "string", + "enum": [ + "fit_points", + "control_points" + ] + }, + "points": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 3 + }, + "minItems": 2, + "description": "Array of [x,y] or [x,y,z] points" + }, + "degree": { + "type": "integer", + "enum": [ + 3, + 5 + ], + "default": 3, + "description": "Spline degree (only for control_points, 3 or 5)" + } + } + }, + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "offset_curve", + "file": "src/fusion360_mcp/tools.py", + "line": 1125, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1125", + "title": "Offset Curve", + "description": "Offset connected sketch curves by a distance. Direction is determined by the direction_point.", + "inputSchema": { + "type": "object", + "required": [ + "curve_index", + "offset_distance" + ], + "properties": { + "curve_index": { + "type": "integer", + "minimum": 0, + "description": "Index of a curve in the connected loop" + }, + "offset_distance": { + "type": "number", + "minimum": 0.001, + "description": "Offset distance (cm)" + }, + "direction_x": { + "type": "number", + "default": 1, + "description": "X of direction point" + }, + "direction_y": { + "type": "number", + "default": 0, + "description": "Y of direction point" + }, + "sketch_name": { + "type": "string", + "description": "Sketch name (default: most recent)" + } + } + }, + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "trim_curve", + "file": "src/fusion360_mcp/tools.py", + "line": 1163, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1163", + "title": "Trim Curve", + "description": "Trim a sketch curve at its intersections. The segment nearest to the given point is removed.", + "inputSchema": { + "type": "object", + "required": [ + "curve_index", + "point_x", + "point_y" + ], + "properties": { + "curve_index": { + "type": "integer", + "minimum": 0, + "description": "Index of the curve to trim" + }, + "point_x": { + "type": "number", + "description": "X near the segment to remove" + }, + "point_y": { + "type": "number", + "description": "Y near the segment to remove" + }, + "sketch_name": { + "type": "string" + } + } + }, + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extend_curve", + "file": "src/fusion360_mcp/tools.py", + "line": 1191, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1191", + "title": "Extend Curve", + "description": "Extend a sketch curve to the nearest intersection. The end nearest to the given point is extended.", + "inputSchema": { + "type": "object", + "required": [ + "curve_index", + "point_x", + "point_y" + ], + "properties": { + "curve_index": { + "type": "integer", + "minimum": 0, + "description": "Index of the curve to extend" + }, + "point_x": { + "type": "number", + "description": "X near the end to extend" + }, + "point_y": { + "type": "number", + "description": "Y near the end to extend" + }, + "sketch_name": { + "type": "string" + } + } + }, + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_thread", + "file": "src/fusion360_mcp/tools.py", + "line": 1220, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1220", + "title": "Create Thread", + "description": "Add threads to a cylindrical face (cosmetic or modeled)", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "face_index" + ], + "properties": { + "body_name": { + "type": "string" + }, + "face_index": { + "type": "integer", + "minimum": 0, + "description": "Index of the cylindrical face" + }, + "is_internal": { + "type": "boolean", + "default": false, + "description": "True for internal (nut) threads" + }, + "thread_type": { + "type": "string", + "default": "ISO Metric profile", + "description": "Thread standard (e.g. 'ISO Metric profile', 'ANSI Unified Screw Threads')" + }, + "thread_designation": { + "type": "string", + "default": "M10x1.5", + "description": "Size designation (e.g. 'M10x1.5')" + }, + "thread_class": { + "type": "string", + "default": "6g", + "description": "Thread class (e.g. '6g', '6H')" + }, + "is_modeled": { + "type": "boolean", + "default": false, + "description": "True = physical geometry, False = cosmetic" + }, + "is_full_length": { + "type": "boolean", + "default": true, + "description": "Thread entire cylinder length" + }, + "thread_length": { + "type": "number", + "description": "Thread length in cm (only if is_full_length=false)" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=thread", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draft_faces", + "file": "src/fusion360_mcp/tools.py", + "line": 1276, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1276", + "title": "Draft / Taper Faces", + "description": "Add a draft angle to faces of a body (for mold release / injection molding)", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "angle" + ], + "properties": { + "body_name": { + "type": "string" + }, + "angle": { + "type": "number", + "minimum": 0.1, + "maximum": 89, + "description": "Draft angle in degrees" + }, + "face_selection": { + "type": "string", + "enum": [ + "all", + "top", + "bottom", + "vertical" + ], + "default": "vertical", + "description": "Which faces to draft" + }, + "pull_direction_plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "default": "xy", + "description": "Plane defining the pull direction" + }, + "is_tangent_chain": { + "type": "boolean", + "default": true, + "description": "Include tangent-connected faces" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=draft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "split_body", + "file": "src/fusion360_mcp/tools.py", + "line": 1314, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1314", + "title": "Split Body", + "description": "Split a body using a plane or face", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "splitting_plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "default": "xy", + "description": "Plane to split with (or use splitting_body)" + }, + "splitting_body": { + "type": "string", + "description": "Name of a body/surface to use as splitting tool (overrides plane)" + }, + "extend_tool": { + "type": "boolean", + "default": true, + "description": "Extend tool to cut through entire body" + } + } + }, + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=split", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "split_face", + "file": "src/fusion360_mcp/tools.py", + "line": 1344, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1344", + "title": "Split Face", + "description": "Split faces of a body using a plane", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "face_indices": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "description": "Indices of faces to split (default: all faces)" + }, + "splitting_plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "default": "xy" + }, + "extend_tool": { + "type": "boolean", + "default": true + } + } + }, + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "offset_faces", + "file": "src/fusion360_mcp/tools.py", + "line": 1370, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1370", + "title": "Offset Faces", + "description": "Push/pull faces of a body by a distance", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "distance" + ], + "properties": { + "body_name": { + "type": "string" + }, + "distance": { + "type": "number", + "description": "Offset distance in cm (positive = outward)" + }, + "face_selection": { + "type": "string", + "enum": [ + "all", + "top", + "bottom" + ], + "default": "top", + "description": "Which faces to offset" + }, + "face_indices": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "description": "Specific face indices (overrides face_selection)" + } + } + }, + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "scale_body", + "file": "src/fusion360_mcp/tools.py", + "line": 1397, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1397", + "title": "Scale Body", + "description": "Scale a body uniformly or non-uniformly", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "scale" + ], + "properties": { + "body_name": { + "type": "string" + }, + "scale": { + "type": "number", + "minimum": 0.001, + "description": "Uniform scale factor" + }, + "scale_x": { + "type": "number", + "minimum": 0.001, + "description": "X scale (overrides uniform scale)" + }, + "scale_y": { + "type": "number", + "minimum": 0.001, + "description": "Y scale" + }, + "scale_z": { + "type": "number", + "minimum": 0.001, + "description": "Z scale" + }, + "anchor_x": { + "type": "number", + "default": 0, + "description": "Scale anchor point X" + }, + "anchor_y": { + "type": "number", + "default": 0, + "description": "Scale anchor point Y" + }, + "anchor_z": { + "type": "number", + "default": 0, + "description": "Scale anchor point Z" + } + } + }, + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_box", + "file": "src/fusion360_mcp/tools.py", + "line": 1445, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1445", + "title": "Create Box", + "description": "Create a box primitive (non-parametric via TemporaryBRepManager)", + "inputSchema": { + "type": "object", + "required": [ + "length", + "width", + "height" + ], + "properties": { + "length": { + "type": "number", + "minimum": 0.001 + }, + "width": { + "type": "number", + "minimum": 0.001 + }, + "height": { + "type": "number", + "minimum": 0.001 + }, + "center_x": { + "type": "number", + "default": 0 + }, + "center_y": { + "type": "number", + "default": 0 + }, + "center_z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_box_parametric", + "file": "src/fusion360_mcp/tools.py", + "line": 1464, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1464", + "title": "Create Parametric Box", + "description": "Create a history-based rectangular box via sketch rectangle + extrude (unlike create_box which uses TemporaryBRepManager). length/width/height accept a number (cm, Fusion internal unit) or a string expression referencing User Parameters (e.g. 'boxL', '56 mm', 'outer - 2 * wall_t'). Call create_parameter first to define named parameters.", + "inputSchema": { + "type": "object", + "required": [ + "length", + "width", + "height" + ], + "properties": { + "length": { + "oneOf": [ + { + "type": "number", + "minimum": 0.001 + }, + { + "type": "string" + } + ], + "description": "Along sketch X: number (cm) or expression" + }, + "width": { + "oneOf": [ + { + "type": "number", + "minimum": 0.001 + }, + { + "type": "string" + } + ], + "description": "Along sketch Y: number (cm) or expression" + }, + "height": { + "oneOf": [ + { + "type": "number", + "minimum": 0.001 + }, + { + "type": "string" + } + ], + "description": "Extrude distance: number (cm) or expression" + }, + "origin_x": { + "type": "number", + "default": 0 + }, + "origin_y": { + "type": "number", + "default": 0 + }, + "origin_z": { + "type": "number", + "default": 0, + "description": "Z-offset of sketch plane (cm)" + }, + "plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "default": "xy" + }, + "component_name": { + "type": "string", + "description": "Target component (omit for root)" + }, + "body_name": { + "type": "string", + "description": "Optional name for the resulting body" + } + } + }, + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_cylinder", + "file": "src/fusion360_mcp/tools.py", + "line": 1523, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1523", + "title": "Create Cylinder", + "description": "Create a cylinder primitive (non-parametric via TemporaryBRepManager)", + "inputSchema": { + "type": "object", + "required": [ + "radius", + "height" + ], + "properties": { + "radius": { + "type": "number", + "minimum": 0.001 + }, + "height": { + "type": "number", + "minimum": 0.001 + }, + "base_x": { + "type": "number", + "default": 0 + }, + "base_y": { + "type": "number", + "default": 0 + }, + "base_z": { + "type": "number", + "default": 0 + }, + "axis": { + "type": "string", + "enum": [ + "x", + "y", + "z" + ], + "default": "z", + "description": "Cylinder axis direction" + } + } + }, + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry circle + feature_create extrude", + "gapDetail": "Dimension the circle and extrusion for parameter-driven geometry.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sphere", + "file": "src/fusion360_mcp/tools.py", + "line": 1547, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1547", + "title": "Create Sphere", + "description": "Create a sphere primitive (non-parametric via TemporaryBRepManager)", + "inputSchema": { + "type": "object", + "required": [ + "radius" + ], + "properties": { + "radius": { + "type": "number", + "minimum": 0.001 + }, + "center_x": { + "type": "number", + "default": 0 + }, + "center_y": { + "type": "number", + "default": 0 + }, + "center_z": { + "type": "number", + "default": 0 + } + } + }, + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_torus", + "file": "src/fusion360_mcp/tools.py", + "line": 1564, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1564", + "title": "Create Torus", + "description": "Create a torus primitive (non-parametric via TemporaryBRepManager)", + "inputSchema": { + "type": "object", + "required": [ + "major_radius", + "minor_radius" + ], + "properties": { + "major_radius": { + "type": "number", + "minimum": 0.001, + "description": "Distance from center to tube center" + }, + "minor_radius": { + "type": "number", + "minimum": 0.001, + "description": "Tube cross-section radius" + }, + "center_x": { + "type": "number", + "default": 0 + }, + "center_y": { + "type": "number", + "default": 0 + }, + "center_z": { + "type": "number", + "default": 0 + }, + "axis": { + "type": "string", + "enum": [ + "x", + "y", + "z" + ], + "default": "z" + } + } + }, + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_as_built_joint", + "file": "src/fusion360_mcp/tools.py", + "line": 1596, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1596", + "title": "Create As-Built Joint", + "description": "Create a joint from components' current positions (easier than geometric joints)", + "inputSchema": { + "type": "object", + "required": [ + "component_one", + "component_two", + "joint_type" + ], + "properties": { + "component_one": { + "type": "string" + }, + "component_two": { + "type": "string" + }, + "joint_type": { + "type": "string", + "enum": [ + "rigid", + "revolute", + "slider", + "cylindrical", + "pin_slot", + "planar", + "ball" + ], + "default": "rigid" + } + } + }, + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "As-built rigid/revolute/slider/cylindrical/pin-slot/planar/ball motion with explicit geometry and joint-coordinate axes.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_rigid_group", + "file": "src/fusion360_mcp/tools.py", + "line": 1629, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1629", + "title": "Create Rigid Group", + "description": "Lock multiple components together", + "inputSchema": { + "type": "object", + "required": [ + "component_names" + ], + "properties": { + "component_names": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 2, + "description": "Names of components to group" + }, + "include_children": { + "type": "boolean", + "default": true, + "description": "Include child sub-components" + } + } + }, + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: rigid_group_create", + "gapDetail": "Exact occurrences and includeChildren policy.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_distance", + "file": "src/fusion360_mcp/tools.py", + "line": 1652, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1652", + "title": "Measure Distance", + "description": "Measure minimum distance between two entities", + "inputSchema": { + "type": "object", + "required": [ + "entity_one", + "entity_two" + ], + "properties": { + "entity_one": { + "type": "string", + "description": "First entity name (body, sketch, or point 'x,y,z')" + }, + "entity_two": { + "type": "string", + "description": "Second entity name or point" + } + } + }, + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_angle", + "file": "src/fusion360_mcp/tools.py", + "line": 1673, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1673", + "title": "Measure Angle", + "description": "Measure angle between two entities", + "inputSchema": { + "type": "object", + "required": [ + "entity_one", + "entity_two" + ], + "properties": { + "entity_one": { + "type": "string", + "description": "First entity name (face, edge)" + }, + "entity_two": { + "type": "string", + "description": "Second entity name" + } + } + }, + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_physical_properties", + "file": "src/fusion360_mcp/tools.py", + "line": 1692, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1692", + "title": "Get Physical Properties", + "description": "Get mass, volume, surface area, center of mass, and density of a body", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "accuracy": { + "type": "string", + "enum": [ + "low", + "medium", + "high", + "very_high" + ], + "default": "medium" + } + } + }, + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: assembly_properties; fusion_physical_properties", + "gapDetail": "High-accuracy aggregate/root/component/occurrence/body mass, volume, area and center of mass with explicit units/scope.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_section_analysis", + "file": "src/fusion360_mcp/tools.py", + "line": 1711, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1711", + "title": "Create Section Analysis", + "description": "Cut a section plane through the model", + "inputSchema": { + "type": "object", + "properties": { + "plane": { + "type": "string", + "enum": [ + "xy", + "yz", + "xz" + ], + "default": "yz" + }, + "offset": { + "type": "number", + "default": 0, + "description": "Offset from the plane (cm)" + } + } + }, + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_interference", + "file": "src/fusion360_mcp/tools.py", + "line": 1731, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1731", + "title": "Check Interference", + "description": "Detect collisions between components/bodies", + "inputSchema": { + "type": "object", + "required": [ + "component_names" + ], + "properties": { + "component_names": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 2, + "description": "Names of components to check" + }, + "include_coincident_faces": { + "type": "boolean", + "default": false, + "description": "Count touching faces as interference" + } + } + }, + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "compare_meshes", + "file": "src/fusion360_mcp/tools.py", + "line": 1753, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1753", + "title": "Compare Mesh Bodies", + "description": "Compare two mesh bodies and return deviation statistics (min/max/mean/RMS signed distance in cm) \u2014 e.g. validate an imported STL against a reference mesh. Requires Fusion 2026+.", + "inputSchema": { + "type": "object", + "required": [ + "mesh_name_a", + "mesh_name_b" + ], + "properties": { + "mesh_name_a": { + "type": "string", + "description": "Name of the first mesh body" + }, + "mesh_name_b": { + "type": "string", + "description": "Name of the reference mesh body" + } + } + }, + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_appearance", + "file": "src/fusion360_mcp/tools.py", + "line": 1777, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1777", + "title": "Set Appearance", + "description": "Assign a material appearance to a body, face, or component from the Fusion appearance library", + "inputSchema": { + "type": "object", + "required": [ + "target_name", + "appearance_name" + ], + "properties": { + "target_name": { + "type": "string", + "description": "Name of body or component" + }, + "appearance_name": { + "type": "string", + "description": "Library appearance name (e.g. 'Steel - Satin', 'Aluminum - Anodized Red')" + }, + "target_type": { + "type": "string", + "enum": [ + "body", + "component", + "face" + ], + "default": "body" + }, + "face_index": { + "type": "integer", + "minimum": 0, + "description": "Face index (if target_type=face)" + } + } + }, + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_color", + "file": "src/fusion360_mcp/tools.py", + "line": 1813, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1813", + "title": "Set Body Color", + "description": "Assign a flat RGB color to a body (creates/reuses a design-local appearance). Useful for visually distinguishing parts before render_view.", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "red", + "green", + "blue" + ], + "properties": { + "body_name": { + "type": "string", + "description": "Body name" + }, + "red": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "green": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "blue": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "opacity": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1, + "description": "1.0 = opaque, 0.0 = invisible" + } + } + }, + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "project_geometry", + "file": "src/fusion360_mcp/tools.py", + "line": 1840, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1840", + "title": "Project Geometry", + "description": "Project edges or bodies onto the active sketch plane", + "inputSchema": { + "type": "object", + "required": [ + "source_name" + ], + "properties": { + "source_name": { + "type": "string", + "description": "Name of body or edge to project" + }, + "is_linked": { + "type": "boolean", + "default": true, + "description": "True = parametrically linked to source geometry" + }, + "sketch_name": { + "type": "string", + "description": "Target sketch (default: most recent)" + } + } + }, + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_project", + "gapDetail": "Associative projection of supported native entities; projection-to-surface/wrap modes are not included.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "suppress_feature", + "file": "src/fusion360_mcp/tools.py", + "line": 1865, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1865", + "title": "Suppress Feature", + "description": "Suppress (disable) a feature in the timeline", + "inputSchema": { + "type": "object", + "required": [ + "feature_name" + ], + "properties": { + "feature_name": { + "type": "string" + } + } + }, + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "unsuppress_feature", + "file": "src/fusion360_mcp/tools.py", + "line": 1877, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1877", + "title": "Unsuppress Feature", + "description": "Unsuppress (re-enable) a feature in the timeline", + "inputSchema": { + "type": "object", + "required": [ + "feature_name" + ], + "properties": { + "feature_name": { + "type": "string" + } + } + }, + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "patch_surface", + "file": "src/fusion360_mcp/tools.py", + "line": 1890, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1890", + "title": "Patch Surface", + "description": "Create a patch surface from boundary edges", + "inputSchema": { + "type": "object", + "required": [ + "sketch_name" + ], + "properties": { + "sketch_name": { + "type": "string", + "description": "Sketch with boundary curves" + }, + "profile_index": { + "type": "integer", + "default": 0, + "minimum": 0 + }, + "continuity": { + "type": "string", + "enum": [ + "connected", + "tangent", + "curvature" + ], + "default": "connected" + } + } + }, + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "stitch_surfaces", + "file": "src/fusion360_mcp/tools.py", + "line": 1915, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1915", + "title": "Stitch Surfaces", + "description": "Stitch surface bodies into a single body", + "inputSchema": { + "type": "object", + "required": [ + "body_names" + ], + "properties": { + "body_names": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 2 + }, + "tolerance": { + "type": "number", + "default": 0.01, + "description": "Stitch tolerance (cm)" + } + } + }, + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "thicken_surface", + "file": "src/fusion360_mcp/tools.py", + "line": 1936, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1936", + "title": "Thicken Surface", + "description": "Thicken a surface body into a solid", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "thickness" + ], + "properties": { + "body_name": { + "type": "string" + }, + "thickness": { + "type": "number", + "minimum": 0.001, + "description": "Thickness (cm)" + }, + "direction": { + "type": "string", + "enum": [ + "positive", + "negative", + "symmetric" + ], + "default": "symmetric" + } + } + }, + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "ruled_surface", + "file": "src/fusion360_mcp/tools.py", + "line": 1958, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1958", + "title": "Ruled Surface", + "description": "Create a ruled surface from an edge or sketch curve", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "edge_index" + ], + "properties": { + "body_name": { + "type": "string" + }, + "edge_index": { + "type": "integer", + "minimum": 0 + }, + "distance": { + "type": "number", + "default": 1.0, + "description": "Ruled surface distance (cm)" + }, + "rule_type": { + "type": "string", + "enum": [ + "normal", + "tangent" + ], + "default": "normal" + } + } + }, + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "trim_surface", + "file": "src/fusion360_mcp/tools.py", + "line": 1984, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L1984", + "title": "Trim Surface", + "description": "Trim a surface body with another body", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "tool_name" + ], + "properties": { + "body_name": { + "type": "string", + "description": "Surface body to trim" + }, + "tool_name": { + "type": "string", + "description": "Trimming tool body" + } + } + }, + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_flange", + "file": "src/fusion360_mcp/tools.py", + "line": 2004, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2004", + "title": "Create Flange", + "description": "Create a sheet metal flange on an edge", + "inputSchema": { + "type": "object", + "required": [ + "body_name", + "edge_index" + ], + "properties": { + "body_name": { + "type": "string" + }, + "edge_index": { + "type": "integer", + "minimum": 0 + }, + "height": { + "type": "number", + "minimum": 0.001, + "description": "Flange height (cm)" + }, + "angle": { + "type": "number", + "default": 90, + "description": "Bend angle (degrees)" + }, + "bend_radius": { + "type": "number", + "description": "Bend radius (cm)" + } + } + }, + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Unverified creation: assumes flangeFeatures.createInput (3005).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_bend", + "file": "src/fusion360_mcp/tools.py", + "line": 2034, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2034", + "title": "Create Bend", + "description": "Add a bend to a sheet metal body", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "bend_line_sketch": { + "type": "string", + "description": "Sketch with bend line" + }, + "angle": { + "type": "number", + "default": 90, + "description": "Bend angle (degrees)" + }, + "bend_radius": { + "type": "number", + "description": "Override bend radius (cm)" + } + } + }, + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Uses undocumented Features.bendFeatures (3028).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "flat_pattern", + "file": "src/fusion360_mcp/tools.py", + "line": 2059, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2059", + "title": "Flat Pattern", + "description": "Create a flat pattern from a sheet metal body", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + } + } + }, + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Uses Features.flatPatternFeatures vs Component.createFlatPattern (3043).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "unfold", + "file": "src/fusion360_mcp/tools.py", + "line": 2071, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2071", + "title": "Unfold", + "description": "Unfold specific bends in a sheet metal body", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string" + }, + "bend_indices": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "description": "Indices of bends to unfold (omit to unfold all)" + } + } + }, + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Preview createInput takes one stationaryFace, not bends + stationary (3074).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_create_setup", + "file": "src/fusion360_mcp/tools.py", + "line": 2089, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2089", + "title": "Create CAM Setup", + "description": "Create a manufacturing setup for a body. Defines the stock, coordinate system, and operation type (milling/turning/cutting).", + "inputSchema": { + "type": "object", + "required": [ + "body_name" + ], + "properties": { + "body_name": { + "type": "string", + "description": "Body to machine" + }, + "name": { + "type": "string", + "description": "Setup name" + }, + "operation_type": { + "type": "string", + "enum": [ + "milling", + "turning", + "cutting" + ], + "default": "milling" + }, + "stock_mode": { + "type": "string", + "enum": [ + "relative_box", + "fixed_box", + "from_body" + ], + "default": "relative_box" + }, + "stock_offset_sides": { + "type": "number", + "default": 0, + "description": "Side offset (cm)" + }, + "stock_offset_top": { + "type": "number", + "default": 0, + "description": "Top offset (cm)" + }, + "stock_offset_bottom": { + "type": "number", + "default": 0, + "description": "Bottom offset (cm)" + } + } + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_create_operation", + "file": "src/fusion360_mcp/tools.py", + "line": 2141, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2141", + "title": "Create CAM Operation", + "description": "Add a machining operation to a setup. Strategy determines the toolpath type.", + "inputSchema": { + "type": "object", + "required": [ + "setup_name", + "strategy" + ], + "properties": { + "setup_name": { + "type": "string", + "description": "Name of the parent setup" + }, + "strategy": { + "type": "string", + "enum": [ + "face", + "2d_contour", + "2d_pocket", + "2d_adaptive", + "3d_adaptive", + "3d_pocket", + "3d_contour", + "3d_scallop", + "3d_parallel", + "drilling", + "bore", + "thread_milling", + "slot", + "trace", + "engrave" + ], + "description": "Machining strategy" + }, + "name": { + "type": "string", + "description": "Operation name" + }, + "tool_number": { + "type": "integer", + "minimum": 1, + "description": "Tool number from library" + }, + "tool_diameter": { + "type": "number", + "minimum": 0.001, + "description": "Not supported \u2014 tool geometry comes from the CAM tool library; select via tool_number instead. Passing this raises an error." + }, + "stepdown": { + "type": "number", + "minimum": 0.001, + "description": "Axial depth of cut (cm)" + }, + "stepover": { + "type": "number", + "minimum": 0.001, + "description": "Radial stepover (cm)" + }, + "feed_rate": { + "type": "number", + "description": "Feed rate (cm/min)" + }, + "spindle_speed": { + "type": "number", + "description": "Spindle speed (RPM)" + }, + "coolant": { + "type": "string", + "enum": [ + "disabled", + "flood", + "mist", + "through_tool" + ], + "default": "flood" + } + } + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Refuses tool_diameter; tool_number parameter does not assign library Tool (3312).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_generate_toolpath", + "file": "src/fusion360_mcp/tools.py", + "line": 2226, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2226", + "title": "Generate Toolpath", + "description": "Generate toolpaths for a specific operation or all operations in a setup", + "inputSchema": { + "type": "object", + "properties": { + "setup_name": { + "type": "string", + "description": "Setup name (generates all its operations)" + }, + "operation_name": { + "type": "string", + "description": "Specific operation name (overrides setup_name)" + }, + "generate_all": { + "type": "boolean", + "default": false, + "description": "Generate all toolpaths" + } + } + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "externalCaveat": "Wrong future completion members: isCompleted/wait vs isGenerationCompleted (3353).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_post_process", + "file": "src/fusion360_mcp/tools.py", + "line": 2251, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2251", + "title": "Post Process", + "description": "Post-process toolpaths to generate NC code (G-code)", + "inputSchema": { + "type": "object", + "required": [ + "setup_name" + ], + "properties": { + "setup_name": { + "type": "string", + "description": "Setup to post-process" + }, + "operation_name": { + "type": "string", + "description": "Specific operation (omit to post all in setup)" + }, + "post_processor": { + "type": "string", + "default": "fanuc", + "description": "Post processor short name ('fanuc', 'grbl', 'haas') resolved against the local post folder when the Fusion build provides one, or a full path to a .cps file (required on cloud-post builds)" + }, + "output_folder": { + "type": "string", + "description": "Output directory (default: ~/Desktop)" + }, + "output_units": { + "type": "string", + "enum": [ + "mm", + "in" + ], + "default": "mm" + } + } + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_list_setups", + "file": "src/fusion360_mcp/tools.py", + "line": 2289, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2289", + "title": "List CAM Setups", + "description": "List all manufacturing setups in the document", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_list_operations", + "file": "src/fusion360_mcp/tools.py", + "line": 2298, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2298", + "title": "List CAM Operations", + "description": "List operations within a setup", + "inputSchema": { + "type": "object", + "required": [ + "setup_name" + ], + "properties": { + "setup_name": { + "type": "string" + } + } + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_get_operation_info", + "file": "src/fusion360_mcp/tools.py", + "line": 2312, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2312", + "title": "Get CAM Operation Info", + "description": "Get details about a specific operation (strategy, tool, parameters, toolpath status)", + "inputSchema": { + "type": "object", + "required": [ + "setup_name", + "operation_name" + ], + "properties": { + "setup_name": { + "type": "string" + }, + "operation_name": { + "type": "string" + } + } + }, + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "ping", + "file": "src/fusion360_mcp/tools.py", + "line": 2329, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2329", + "title": "Ping", + "description": "Health check \u2014 returns immediately without touching Fusion API", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_design_type", + "file": "src/fusion360_mcp/tools.py", + "line": 2341, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2341", + "title": "Get Design Type", + "description": "Check if the design is in parametric or direct mode. Use this to detect accidental mode switches.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "coverage": "script-only", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_design_type", + "file": "src/fusion360_mcp/tools.py", + "line": 2353, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2353", + "title": "Set Design Type", + "description": "Switch design type between 'parametric' and 'direct'. Use 'parametric' to recover from accidental direct-mode switches (equivalent to Capture Design History in the UI).", + "inputSchema": { + "type": "object", + "required": [ + "design_type" + ], + "properties": { + "design_type": { + "type": "string", + "enum": [ + "parametric", + "direct" + ], + "description": "Target design type" + } + } + }, + "coverage": "script-only", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "render_view", + "file": "src/fusion360_mcp/tools.py", + "line": 2374, + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/tools.py#L2374", + "title": "Render Viewport", + "description": "Capture the active viewport as a PNG so you can visually verify the model. Pass a canonical view (iso/front/top/etc.) to reposition the camera first, or 'current' to keep it as is. Returns base64-encoded image bytes alongside metadata; the MCP server delivers it as an image content block.", + "inputSchema": { + "type": "object", + "properties": { + "view": { + "type": "string", + "enum": [ + "current", + "iso", + "front", + "back", + "top", + "bottom", + "left", + "right" + ], + "default": "current", + "description": "Camera preset; 'current' preserves the existing view" + }, + "width": { + "type": "integer", + "minimum": 64, + "maximum": 4096, + "default": 1024 + }, + "height": { + "type": "integer", + "minimum": 64, + "maximum": 4096, + "default": 768 + }, + "fit": { + "type": "boolean", + "default": true, + "description": "Call Viewport.fit() before capture" + } + } + }, + "coverage": "partial", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_view; fusion_mcp_call screenshot", + "gapDetail": "Standard views/orbit/zoom and capture; arbitrary camera/render parameters require scripting.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/faust-machines/fusion360-mcp-server.git", + "commitDate": "2026-09-16", + "toolCount": 93, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "MCP tools", + "license": "MIT", + "rowCount": 93 + }, + "f360mcp": { + "commit": "3ad4bf2027878da652c93b959dc238fd578174b9", + "tools": [ + { + "name": "batch", + "file": "mcp-server/f360mcp_server.py", + "line": 125, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L125", + "signature": "commands: list", + "description": "Execute multiple Fusion commands in a single call - MUCH faster for complex operations.\n\nExample: batch([\n {\"name\": \"create_sketch\", \"params\": {\"plane\": \"XY\"}},\n {\"name\": \"draw_rectangle\", \"params\": {\"x1\": -50, \"y1\": -50, \"x2\": 50, \"y2\": 50}},\n {\"name\": \"draw_circle\", \"params\": {\"center_x\": 0, \"center_y\": 0, \"radius\": 20}},\n {\"name\": \"finish_sketch\", \"params\": {}},\n {\"name\": \"extrude\", \"params\": {\"distance\": 30}}\n])\n\nThis executes all commands in one round-trip instead of 5 separate calls.\nStops on first error and returns partial results.", + "coverage": "partial", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: parameter_batch / transaction_probe", + "gapDetail": "Atomic parameter batch exists; arbitrary mixed-operation pipeline with file/cloud rollback is absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "mcp-server/f360mcp_server.py", + "line": 147, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L147", + "signature": "plane: str, offset: float=0", + "description": "Create a new sketch on a construction plane (XY, XZ, or YZ) and enter edit mode.\n\nArgs:\n plane: \"XY\" (horizontal), \"XZ\" (vertical front), or \"YZ\" (side)\n offset: Distance to offset sketch plane from origin (mm). Default 0.\n\nExamples:\n create_sketch(plane=\"XY\") # Horizontal at origin\n create_sketch(plane=\"XZ\", offset=50) # Vertical, 50mm forward", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "finish_sketch", + "file": "mcp-server/f360mcp_server.py", + "line": 162, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L162", + "signature": "", + "description": "Exit sketch editing mode", + "coverage": "composable", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Typed operations solve at completion; an interactive sketch-edit mode need not be entered.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "file": "mcp-server/f360mcp_server.py", + "line": 171, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L171", + "signature": "x1: float, y1: float, x2: float, y2: float", + "description": "Draw a rectangle in the active sketch (units: mm)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "file": "mcp-server/f360mcp_server.py", + "line": 176, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L176", + "signature": "center_x: float, center_y: float, radius: float", + "description": "Draw a circle in the active sketch (units: mm)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_slot", + "file": "mcp-server/f360mcp_server.py", + "line": 181, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L181", + "signature": "center_x: float, center_y: float, length: float, width: float", + "description": "Draw a slot (stadium/rounded rectangle) in the active sketch (units: mm).\n\nArgs:\n center_x: Slot center X\n center_y: Slot center Y\n length: Overall slot length\n width: Overall slot width (diameter of rounded ends)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=slot", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_line", + "file": "mcp-server/f360mcp_server.py", + "line": 197, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L197", + "signature": "x1: float, y1: float, x2: float, y2: float", + "description": "Draw a straight line in the active sketch (units: mm)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "mcp-server/f360mcp_server.py", + "line": 202, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L202", + "signature": "center_x: float, center_y: float, start_x: float, start_y: float, end_x: float, end_y: float", + "description": "Draw an arc in the active sketch (units: mm)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_polygon", + "file": "mcp-server/f360mcp_server.py", + "line": 211, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L211", + "signature": "center_x: float, center_y: float, radius: float, sides: int=6", + "description": "Draw a regular polygon in the active sketch (units: mm). Default is hexagon.", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude", + "file": "mcp-server/f360mcp_server.py", + "line": 223, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L223", + "signature": "distance: float, profile_index: int=0, taper_angle: float=0", + "description": "Extrude the most recent sketch profile (units: mm).\n\nArgs:\n distance: Extrusion distance (positive or negative)\n profile_index: Which profile if multiple exist (default 0)\n taper_angle: Draft angle during extrusion in degrees (default 0)", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "file": "mcp-server/f360mcp_server.py", + "line": 239, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L239", + "signature": "angle: float", + "description": "Revolve the most recent sketch profile around an axis (degrees)", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "file": "mcp-server/f360mcp_server.py", + "line": 244, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L244", + "signature": "profile_index: int=0", + "description": "Sweep a profile along a path to create a 3D shape.\n\nRequires two sketches created in order:\n1. Path sketch (line, arc, or spline)\n2. Profile sketch (closed shape, typically perpendicular to path start)\n\nArgs:\n profile_index: Which profile in the profile sketch (default: 0)\n\nExample workflow:\n create_sketch(plane=\"XZ\") \u2192 draw_line(...) \u2192 finish_sketch() # path\n create_sketch(plane=\"XY\") \u2192 draw_circle(...) \u2192 finish_sketch() # profile\n sweep()", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "file": "mcp-server/f360mcp_server.py", + "line": 263, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L263", + "signature": "profile_sketch_indices: list=None", + "description": "Create a loft (smooth transition) between two or more sketch profiles.\n\nEach profile should be on a different plane (e.g., different offsets).\n\nArgs:\n profile_sketch_indices: List of sketch indices to loft between.\n Default: last 2 sketches.\n\nExample workflow:\n create_sketch(plane=\"XY\", offset=0) \u2192 draw_circle(..., radius=25) \u2192 finish_sketch()\n create_sketch(plane=\"XY\", offset=50) \u2192 draw_rectangle(...) \u2192 finish_sketch()\n loft() # smooth transition from circle to square", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet", + "file": "mcp-server/f360mcp_server.py", + "line": 284, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L284", + "signature": "radius: float, edges: list=None, body_index: int=None", + "description": "Add fillets to edges of a body (units: mm).\n\nArgs:\n radius: Fillet radius\n edges: Optional list of edge indices. If None, fillets all edges.\n body_index: Which body (default: most recent)\n\nUse get_body_info() to see available edge indices.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "chamfer", + "file": "mcp-server/f360mcp_server.py", + "line": 303, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L303", + "signature": "distance: float, edges: list=None, body_index: int=None", + "description": "Add chamfers to edges of a body (units: mm).\n\nArgs:\n distance: Chamfer distance\n edges: Optional list of edge indices. If None, chamfers all edges.\n body_index: Which body (default: most recent)\n\nUse get_body_info() to see available edge indices.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell", + "file": "mcp-server/f360mcp_server.py", + "line": 326, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L326", + "signature": "thickness: float, faces_to_remove: list=None, body_index: int=None", + "description": "Create a hollow shell from a solid body (units: mm).\n\nArgs:\n thickness: Wall thickness\n faces_to_remove: List of face indices to remove (create openings). Default: closed shell.\n body_index: Which body (default: most recent)\n\nExamples:\n shell(thickness=2) # 2mm closed shell\n shell(thickness=1.5, faces_to_remove=[0]) # 1.5mm open-top container\n\nUse get_body_info() to see available face indices.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draft", + "file": "mcp-server/f360mcp_server.py", + "line": 349, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L349", + "signature": "angle: float, faces: list=None, body_index: int=None, pull_x: float=0, pull_y: float=0, pull_z: float=1", + "description": "Apply draft angles to faces for injection molding (angle in degrees).\n\nArgs:\n angle: Draft angle (typically 0.5-3 degrees, guideline: 1 degree per inch)\n faces: List of face indices. If None, drafts all faces.\n body_index: Which body (default: most recent)\n pull_x, pull_y, pull_z: Pull direction vector (default: +Z)", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=draft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "pattern_rectangular", + "file": "mcp-server/f360mcp_server.py", + "line": 368, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L368", + "signature": "x_count: int, x_spacing: float, y_count: int=1, y_spacing: float=0, body_index: int=None", + "description": "Create a rectangular (linear) pattern of a body (spacing in mm).\n\nArgs:\n x_count: Number of instances in X direction\n x_spacing: Spacing between instances in X\n y_count: Number of instances in Y direction (default 1)\n y_spacing: Spacing between instances in Y\n body_index: Which body (default: most recent)\n\nExample:\n pattern_rectangular(x_count=4, x_spacing=25, y_count=3, y_spacing=25)\n # Creates 4x3 = 12 instances", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "pattern_circular", + "file": "mcp-server/f360mcp_server.py", + "line": 391, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L391", + "signature": "count: int, angle: float=360, axis: str='Z', body_index: int=None", + "description": "Create a circular (radial) pattern of a body.\n\nArgs:\n count: Number of instances\n angle: Total angle in degrees (default 360 for full circle)\n axis: Rotation axis - \"X\", \"Y\", or \"Z\" (default \"Z\")\n body_index: Which body (default: most recent)\n\nExample:\n pattern_circular(count=6, angle=360, axis=\"Z\")\n # 6 instances evenly spaced around Z axis", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror", + "file": "mcp-server/f360mcp_server.py", + "line": 411, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L411", + "signature": "plane: str='YZ', body_index: int=None", + "description": "Create a mirrored copy of a body.\n\nArgs:\n plane: Mirror plane - \"XY\", \"XZ\", or \"YZ\" (default \"YZ\" for left-right symmetry)\n body_index: Which body (default: most recent)", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fit_view", + "file": "mcp-server/f360mcp_server.py", + "line": 429, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L429", + "signature": "", + "description": "Fit the viewport to show all geometry", + "coverage": "dedicated", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_view", + "gapDetail": "Named standard views and fit; view action schema governs exact options.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_design_info", + "file": "mcp-server/f360mcp_server.py", + "line": 434, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L434", + "signature": "", + "description": "Get information about the current design (name, body count, sketch count, component count, active sketch status)", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_body_info", + "file": "mcp-server/f360mcp_server.py", + "line": 443, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L443", + "signature": "body_index: int=None", + "description": "Get detailed information about a body including all edges and faces.\n\nArgs:\n body_index: Which body (default: most recent)\n\nReturns edge indices with lengths, face indices with areas.\nUse this to find indices for selective fillet, chamfer, shell, or draft.", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure", + "file": "mcp-server/f360mcp_server.py", + "line": 459, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L459", + "signature": "type: str='body', body_index: int=None, edge_index: int=None, face_index: int=None", + "description": "Measure dimensions of bodies, edges, or faces.\n\nArgs:\n type: What to measure - \"body\", \"edge\", or \"face\"\n body_index: Which body (default: most recent)\n edge_index: Edge index (for type=\"edge\")\n face_index: Face index (for type=\"face\")\n\nReturns:\n body: volume, surface_area, bounding_box with size\n edge: length\n face: area", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "mcp-server/f360mcp_server.py", + "line": 489, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L489", + "signature": "name: str=None", + "description": "Convert the most recent body into a new component for assembly", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_components", + "file": "mcp-server/f360mcp_server.py", + "line": 497, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L497", + "signature": "", + "description": "List all components with names, positions, and bounding boxes", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_component", + "file": "mcp-server/f360mcp_server.py", + "line": 502, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L502", + "signature": "name: str=None, index: int=None", + "description": "Delete a component by name or index", + "coverage": "partial", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: occurrence_delete", + "gapDetail": "Deletes exact selected instance; bulk deletion of every instance of a definition is not a one-call operation.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_interference", + "file": "mcp-server/f360mcp_server.py", + "line": 512, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L512", + "signature": "", + "description": "Check if any components overlap (bounding box collision detection)", + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_component", + "file": "mcp-server/f360mcp_server.py", + "line": 521, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L521", + "signature": "x: float=0, y: float=0, z: float=0, index: int=None, name: str=None, absolute: bool=True", + "description": "Move a component to a new position (units: mm).\n\nArgs:\n x, y, z: Target position or offset\n index: Component index (from list_components)\n name: Component name (alternative to index)\n absolute: If True, set absolute position. If False, move by offset.\n\nExamples:\n move_component(x=0, y=100, z=0, index=1) # Move to Y=100mm\n move_component(x=50, y=0, z=0, index=0, absolute=False) # Move 50mm in X\n\nCRITICAL: Use this to position components after creation to avoid overlaps.", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: occurrence_update", + "gapDetail": "Absolute instance pose in assembly context, grounding checks and captured position. Relative motion requires composing the requested pose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rotate_component", + "file": "mcp-server/f360mcp_server.py", + "line": 547, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L547", + "signature": "angle: float, axis: str='Z', index: int=None, name: str=None, origin_x: float=0, origin_y: float=0, origin_z: float=0", + "description": "Rotate a component around an axis (angle in degrees).\n\nArgs:\n angle: Rotation angle in degrees\n axis: Rotation axis - \"X\", \"Y\", or \"Z\" (default \"Z\")\n index: Component index (from list_components)\n name: Component name (alternative to index)\n origin_x, origin_y, origin_z: Rotation origin point (mm)", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: occurrence_update", + "gapDetail": "Absolute instance pose in assembly context, grounding checks and captured position. Relative motion requires composing the requested pose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_revolute_joint", + "file": "mcp-server/f360mcp_server.py", + "line": 575, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L575", + "signature": "component1_index: int=None, component2_index: int=None, x: float=0, y: float=0, z: float=0, axis_x: float=0, axis_y: float=0, axis_z: float=1, min_angle: float=None, max_angle: float=None, flip: bool=False", + "description": "Create a revolute (rotating) joint between two components", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "As-built revolute/slider joints are implemented. Comparator regular joints that align and move occurrences are not covered.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset.", + "externalCaveat": "Source attempts a regular geometry-moving joint (rootComp.joints.createInput), not an as-built joint. Its two-argument JointGeometry.createByPoint call appears mismatched to the documented API; source presence is not working-kernel certification." + }, + { + "name": "create_slider_joint", + "file": "mcp-server/f360mcp_server.py", + "line": 596, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L596", + "signature": "component1_index: int=None, component2_index: int=None, x: float=0, y: float=0, z: float=0, axis_x: float=1, axis_y: float=0, axis_z: float=0, min_distance: float=None, max_distance: float=None", + "description": "Create a slider (linear) joint between two components", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "As-built revolute/slider joints are implemented. Comparator regular joints that align and move occurrences are not covered.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset.", + "externalCaveat": "Source attempts a regular geometry-moving joint (rootComp.joints.createInput), not an as-built joint. Its two-argument JointGeometry.createByPoint call appears mismatched to the documented API; source presence is not working-kernel certification." + }, + { + "name": "set_joint_angle", + "file": "mcp-server/f360mcp_server.py", + "line": 616, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L616", + "signature": "angle: float, joint_index: int=None", + "description": "Animate a revolute joint to a specific angle (degrees)", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_joint_distance", + "file": "mcp-server/f360mcp_server.py", + "line": 624, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L624", + "signature": "distance: float, joint_index: int=None", + "description": "Animate a slider joint to a specific distance (mm)", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "combine", + "file": "mcp-server/f360mcp_server.py", + "line": 636, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L636", + "signature": "target_body: int, tool_bodies: list, operation: str='cut', keep_tools: bool=False", + "description": "Boolean operations: cut, join, or intersect bodies.\n\nArgs:\n target_body: Index of body to modify (0 = first body)\n tool_bodies: List of body indices to use as tools\n operation: \"cut\" (subtract), \"join\" (add), or \"intersect\"\n keep_tools: If True, keep tool bodies after operation\n\nExamples:\n combine(target_body=0, tool_bodies=[1], operation=\"cut\") # Cut body1 from body0\n combine(target_body=0, tool_bodies=[1,2], operation=\"join\") # Merge 3 bodies\n\nUse get_body_info() to verify body indices before combining.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "undo", + "file": "mcp-server/f360mcp_server.py", + "line": 663, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L663", + "signature": "count: int=1", + "description": "Undo recent operations.\n\nArgs:\n count: Number of operations to undo (default 1)\n\nReturns:\n undone_count: How many operations were actually undone", + "coverage": "delegated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body", + "file": "mcp-server/f360mcp_server.py", + "line": 676, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L676", + "signature": "body_index: int=None", + "description": "Delete a body by index.\n\nArgs:\n body_index: Index of body to delete (default: most recent body)\n\nUse get_design_info() to see body count, get_body_info() for details.", + "coverage": "partial", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_sketch", + "file": "mcp-server/f360mcp_server.py", + "line": 691, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L691", + "signature": "sketch_index: int=None", + "description": "Delete a sketch by index.\n\nArgs:\n sketch_index: Index of sketch to delete (default: most recent sketch)\n\nUse get_design_info() to see sketch count.", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_stl", + "file": "mcp-server/f360mcp_server.py", + "line": 709, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L709", + "signature": "filepath: str", + "description": "Export the design as STL file for 3D printing", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_step", + "file": "mcp-server/f360mcp_server.py", + "line": 714, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L714", + "signature": "filepath: str", + "description": "Export the design as STEP file (CAD standard)", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_3mf", + "file": "mcp-server/f360mcp_server.py", + "line": 719, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L719", + "signature": "filepath: str", + "description": "Export the design as 3MF file (modern 3D printing format)", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "import_mesh", + "file": "mcp-server/f360mcp_server.py", + "line": 728, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L728", + "signature": "filepath: str, unit: str='mm'", + "description": "Import STL, OBJ, or 3MF mesh file. Units: mm, cm, or in", + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_api", + "file": "mcp-server/f360mcp_server.py", + "line": 737, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L737", + "signature": "api_path: str, args: list=None, kwargs: dict=None, store_as: str=None, return_properties: list=None", + "description": "Execute ANY Fusion 360 API call via path navigation \u2014 no dedicated tool needed.\n\nNOTE: This tool uses Fusion's native CENTIMETERS, not millimeters.\nThe mm auto-conversion only applies to the specific named tools.\n\nArgs:\n api_path: Dotted path to API method/property. Shortcuts:\n \"app\", \"design\", \"rootComponent\", \"$stored_name\"\n args: Positional arguments. Use {\"type\": \"Point3D\", \"x\": 0, \"y\": 0, \"z\": 0}\n for Fusion objects. Dimensions in CM.\n kwargs: Keyword arguments\n store_as: Store result for later use (reference as \"$name\" in future calls)\n return_properties: List of property names to extract from result\n\nExamples:\n # Create sketch and store it\n execute_api(api_path=\"rootComponent.sketches.add\",\n args=[\"rootComponent.xYConstructionPlane\"],\n store_as=\"sketch1\")\n\n # Add line to stored sketch (dimensions in cm)\n execute_api(api_path=\"$sketch1.sketchCurves.sketchLines.addByTwoPoints\",\n args=[{\"type\": \"Point3D\", \"x\": 0, \"y\": 0, \"z\": 0},\n {\"type\": \"Point3D\", \"x\": 10, \"y\": 0, \"z\": 0}])\n\n # Query properties\n execute_api(api_path=\"design\", return_properties=[\"parentDocument\"])\n\n # Clear/list stored objects\n execute_api(api_path=\"clear_context\")\n execute_api(api_path=\"list_context\")", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_python", + "file": "mcp-server/f360mcp_server.py", + "line": 788, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L788", + "signature": "code: str, session_id: str='default'", + "description": " Execute Python code inside Fusion 360 with full API access.\n\n NOTE: Dimensions in Python code must be in CENTIMETERS (Fusion's native units).\n The mm auto-conversion only applies to the specific named tools.\n\n Available in execution environment:\n app, ui, design, rootComp, adsk, math, json, context (shared dict)\n\n Use print() for output. Set __return__ = value for a return value.\n Session variables persist across calls with the same session_id.\n\n Args:\n code: Python code to execute\n session_id: Session ID for persistent variables (default: \"default\")\n\n Example:\n execute_python(code=\"\"\"\nimport adsk.core, adsk.fusion\nsketch = rootComp.sketches.add(rootComp.xYConstructionPlane)\nlines = sketch.sketchCurves.sketchLines\nlines.addTwoPointRectangle(\n adsk.core.Point3D.create(0, 0, 0),\n adsk.core.Point3D.create(5, 3, 0)) # 5cm x 3cm\nprof = sketch.profiles.item(0)\next = rootComp.features.extrudeFeatures\ninp = ext.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)\ninp.setDistanceExtent(False, adsk.core.ValueInput.createByReal(2)) # 2cm\next.add(inp)\nprint(\"Created 50x30x20mm box\")\n\"\"\")\n ", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "dedicated script executor", + "baselineGap": false, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "transaction", + "file": "mcp-server/f360mcp_server.py", + "line": 828, + "sourceUrl": "https://github.com/dterracino/f360mcp/blob/3ad4bf2027878da652c93b959dc238fd578174b9/mcp-server/f360mcp_server.py#L828", + "signature": "action: str, name: str='MCP Operation'", + "description": "Control atomic undo transactions \u2014 multiple operations become a single Ctrl+Z.\n\nArgs:\n action: \"start\", \"commit\", or \"abort\"\n name: Transaction name shown in undo history (only for \"start\")\n\nUsage:\n 1. transaction(action=\"start\", name=\"Create Assembly\")\n 2. ... perform multiple operations ...\n 3. transaction(action=\"commit\") # All ops = single undo step\n\n On error:\n 3. transaction(action=\"abort\") # Rolls back everything since start", + "coverage": "partial", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: parameter_batch / transaction_probe", + "gapDetail": "Atomic parameter batch exists; arbitrary mixed-operation pipeline with file/cloud rollback is absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/dterracino/f360mcp.git", + "commitDate": "2026-04-04", + "toolCount": 45, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "MCP tools", + "license": "MIT", + "rowCount": 45 + }, + "FusionMCP": { + "commit": "12bb2bce20a416c8167dd879c87b4e4c833ab152", + "tools": [ + { + "name": "get_info", + "file": "FusionMCP.py", + "line": 3843, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3843", + "description": "get info", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_bodies_info", + "file": "FusionMCP.py", + "line": 3844, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3844", + "description": "get bodies info", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_face_info", + "file": "FusionMCP.py", + "line": 3845, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3845", + "description": "get face info", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_edge_info", + "file": "FusionMCP.py", + "line": 3846, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3846", + "description": "get edge info", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_sketch_info", + "file": "FusionMCP.py", + "line": 3847, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3847", + "description": "get sketch info", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_timeline_info", + "file": "FusionMCP.py", + "line": 3848, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3848", + "description": "get timeline info", + "coverage": "dedicated", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_body", + "file": "FusionMCP.py", + "line": 3849, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3849", + "description": "measure body", + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity; fusion_physical_properties", + "gapDetail": "Explicit units; component-definition and occurrence scopes are separate.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_between", + "file": "FusionMCP.py", + "line": 3850, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3850", + "description": "measure between", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_script", + "file": "FusionMCP.py", + "line": 3851, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3851", + "description": "execute script", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "dedicated script executor", + "baselineGap": false, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_new_document", + "file": "FusionMCP.py", + "line": 3852, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3852", + "description": "create new document", + "coverage": "dedicated", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: new_design", + "gapDetail": "Creates an unnamed unsaved parametric hybrid design to avoid save prompts.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "clear_design", + "file": "FusionMCP.py", + "line": 3853, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3853", + "description": "clear design", + "coverage": "script-only", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "FusionMCP.py", + "line": 3854, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3854", + "description": "create sketch", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_on_face", + "file": "FusionMCP.py", + "line": 3855, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3855", + "description": "create sketch on face", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "finish_sketch", + "file": "FusionMCP.py", + "line": 3856, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3856", + "description": "finish sketch", + "coverage": "composable", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Typed operations solve at completion; an interactive sketch-edit mode need not be entered.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_sketch", + "file": "FusionMCP.py", + "line": 3857, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3857", + "description": "delete sketch", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "file": "FusionMCP.py", + "line": 3858, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3858", + "description": "draw rectangle", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_center_rectangle", + "file": "FusionMCP.py", + "line": 3859, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3859", + "description": "draw center rectangle", + "coverage": "composable", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Convert center/width/height into two opposite corners.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "file": "FusionMCP.py", + "line": 3860, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3860", + "description": "draw circle", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_line", + "file": "FusionMCP.py", + "line": 3861, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3861", + "description": "draw line", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "FusionMCP.py", + "line": 3862, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3862", + "description": "draw arc", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_polygon", + "file": "FusionMCP.py", + "line": 3863, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3863", + "description": "draw polygon", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_ellipse", + "file": "FusionMCP.py", + "line": 3864, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3864", + "description": "draw ellipse", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_spline", + "file": "FusionMCP.py", + "line": 3865, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3865", + "description": "draw spline", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_slot", + "file": "FusionMCP.py", + "line": 3866, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3866", + "description": "draw slot", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=slot", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_text", + "file": "FusionMCP.py", + "line": 3867, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3867", + "description": "draw text", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_sketch_fillet", + "file": "FusionMCP.py", + "line": 3868, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3868", + "description": "add sketch fillet", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "offset_sketch", + "file": "FusionMCP.py", + "line": 3869, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3869", + "description": "offset sketch", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror_sketch", + "file": "FusionMCP.py", + "line": 3870, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3870", + "description": "mirror sketch", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern_sketch", + "file": "FusionMCP.py", + "line": 3871, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3871", + "description": "rectangular pattern sketch", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint", + "file": "FusionMCP.py", + "line": 3872, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3872", + "description": "add constraint", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_sketch_dimension", + "file": "FusionMCP.py", + "line": 3873, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3873", + "description": "add sketch dimension", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_dimension", + "gapDetail": "Distance/horizontal/vertical/radius/diameter/angle; expressions and named model parameters.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude", + "file": "FusionMCP.py", + "line": 3874, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3874", + "description": "extrude", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "file": "FusionMCP.py", + "line": 3875, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3875", + "description": "revolve", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "file": "FusionMCP.py", + "line": 3876, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3876", + "description": "loft", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "file": "FusionMCP.py", + "line": 3877, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3877", + "description": "sweep", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "helix", + "file": "FusionMCP.py", + "line": 3878, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3878", + "description": "helix", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_pipe", + "file": "FusionMCP.py", + "line": 3879, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3879", + "description": "create pipe", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_hole", + "file": "FusionMCP.py", + "line": 3880, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3880", + "description": "create hole", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=hole", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell", + "file": "FusionMCP.py", + "line": 3881, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3881", + "description": "shell", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet", + "file": "FusionMCP.py", + "line": 3882, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3882", + "description": "fillet", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "chamfer", + "file": "FusionMCP.py", + "line": 3883, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3883", + "description": "chamfer", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror_body", + "file": "FusionMCP.py", + "line": 3884, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3884", + "description": "mirror body", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern_body", + "file": "FusionMCP.py", + "line": 3885, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3885", + "description": "rectangular pattern body", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "circular_pattern_body", + "file": "FusionMCP.py", + "line": 3886, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3886", + "description": "circular pattern body", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "combine_bodies", + "file": "FusionMCP.py", + "line": 3887, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3887", + "description": "combine bodies", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "scale_body", + "file": "FusionMCP.py", + "line": 3888, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3888", + "description": "scale body", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body", + "file": "FusionMCP.py", + "line": 3889, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3889", + "description": "move body", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rotate_body", + "file": "FusionMCP.py", + "line": 3890, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3890", + "description": "rotate body", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "press_pull", + "file": "FusionMCP.py", + "line": 3891, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3891", + "description": "press pull", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "thicken", + "file": "FusionMCP.py", + "line": 3892, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3892", + "description": "thicken", + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draft_face", + "file": "FusionMCP.py", + "line": 3893, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3893", + "description": "draft face", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=draft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_thread", + "file": "FusionMCP.py", + "line": 3894, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3894", + "description": "add thread", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=thread", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "FusionMCP.py", + "line": 3895, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3895", + "description": "create component", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body_to_component", + "file": "FusionMCP.py", + "line": 3896, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3896", + "description": "move body to component", + "coverage": "script-only", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint", + "file": "FusionMCP.py", + "line": 3897, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3897", + "description": "create joint", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_as_built_joint", + "file": "FusionMCP.py", + "line": 3898, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3898", + "description": "create as built joint", + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "As-built rigid/revolute/slider/cylindrical/pin-slot/planar/ball motion with explicit geometry and joint-coordinate axes.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rename_component", + "file": "FusionMCP.py", + "line": 3899, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3899", + "description": "rename component", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_metadata", + "gapDetail": "Definition rename affects all its occurrences.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_occurrence", + "file": "FusionMCP.py", + "line": 3900, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3900", + "description": "delete occurrence", + "coverage": "partial", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: occurrence_delete", + "gapDetail": "Deletes exact selected instance; bulk deletion of every instance of a definition is not a one-call operation.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "toggle_component_visibility", + "file": "FusionMCP.py", + "line": 3901, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3901", + "description": "toggle component visibility", + "coverage": "script-only", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_occurrences_tree", + "file": "FusionMCP.py", + "line": 3902, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3902", + "description": "list occurrences tree", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "activate_component", + "file": "FusionMCP.py", + "line": 3903, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3903", + "description": "activate component", + "coverage": "script-only", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_component_info", + "file": "FusionMCP.py", + "line": 3904, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3904", + "description": "get component info", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_documents", + "file": "FusionMCP.py", + "line": 3905, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3905", + "description": "list documents", + "coverage": "dedicated", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_get_app_state", + "gapDetail": "Open document discovery.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "switch_document", + "file": "FusionMCP.py", + "line": 3906, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3906", + "description": "switch document", + "coverage": "dedicated", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_activate_document", + "gapDetail": "Explicit name selection; obtain fresh mechanical target after switching.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body", + "file": "FusionMCP.py", + "line": 3907, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3907", + "description": "delete body", + "coverage": "partial", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rename_body", + "file": "FusionMCP.py", + "line": 3908, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3908", + "description": "rename body", + "coverage": "script-only", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "copy_body", + "file": "FusionMCP.py", + "line": 3909, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3909", + "description": "copy body", + "coverage": "script-only", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "toggle_body_visibility", + "file": "FusionMCP.py", + "line": 3910, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3910", + "description": "toggle body visibility", + "coverage": "script-only", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_construction_plane", + "file": "FusionMCP.py", + "line": 3911, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3911", + "description": "add construction plane", + "coverage": "partial", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: plane_create", + "gapDetail": "Offset and angle planes only; three-point/midplane/tangent forms remain gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_construction_axis", + "file": "FusionMCP.py", + "line": 3912, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3912", + "description": "add construction axis", + "coverage": "script-only", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_parameter", + "file": "FusionMCP.py", + "line": 3913, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3913", + "description": "add parameter", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_create / parameter_batch", + "gapDetail": "Typed length/angle/mass/unitless user parameters; other unit kinds remain outside this schema.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "update_parameter", + "file": "FusionMCP.py", + "line": 3914, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3914", + "description": "update parameter", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_parameters", + "file": "FusionMCP.py", + "line": 3915, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3915", + "description": "list parameters", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect; fusion_get_parameters", + "gapDetail": "User and model parameters with expressions and units.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_appearances", + "file": "FusionMCP.py", + "line": 3916, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3916", + "description": "list appearances", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_appearance", + "file": "FusionMCP.py", + "line": 3917, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3917", + "description": "apply appearance", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_body_color", + "file": "FusionMCP.py", + "line": 3918, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3918", + "description": "set body color", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_stl", + "file": "FusionMCP.py", + "line": 3919, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3919", + "description": "export stl", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_step", + "file": "FusionMCP.py", + "line": 3920, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3920", + "description": "export step", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_3mf", + "file": "FusionMCP.py", + "line": 3921, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3921", + "description": "export 3mf", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_f3d", + "file": "FusionMCP.py", + "line": 3922, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3922", + "description": "export f3d", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "capture_screenshot", + "file": "FusionMCP.py", + "line": 3923, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3923", + "description": "capture screenshot", + "coverage": "dedicated", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "undo", + "file": "FusionMCP.py", + "line": 3924, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3924", + "description": "undo", + "coverage": "delegated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "redo", + "file": "FusionMCP.py", + "line": 3925, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3925", + "description": "redo", + "coverage": "delegated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "save", + "file": "FusionMCP.py", + "line": 3926, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3926", + "description": "save", + "coverage": "partial", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_save_to_cloud; fusion_mechanical: export", + "gapDetail": "Explicit cloud destination or native archive path; local save semantics differ from cloud-version save.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "save_as", + "file": "FusionMCP.py", + "line": 3927, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3927", + "description": "save as", + "coverage": "partial", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_save_to_cloud; fusion_mechanical: export", + "gapDetail": "Explicit cloud destination or native archive path; local save semantics differ from cloud-version save.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fusion_status", + "file": "FusionMCP.py", + "line": 3928, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3928", + "description": "fusion status", + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_obj", + "file": "FusionMCP.py", + "line": 3929, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3929", + "description": "export obj", + "coverage": "script-only", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Always rejected by dispatcher (3929).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_interference", + "file": "FusionMCP.py", + "line": 3930, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3930", + "description": "check interference", + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "assign_material", + "file": "FusionMCP.py", + "line": 3931, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3931", + "description": "assign material", + "coverage": "dedicated", + "category": "Physical materials", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: material_assign", + "gapDetail": "Loaded library/document material IDs; native component/body assignment and measured readback.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_section_properties", + "file": "FusionMCP.py", + "line": 3932, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3932", + "description": "get section properties", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_curvature_info", + "file": "FusionMCP.py", + "line": 3933, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3933", + "description": "get curvature info", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_wall_thickness", + "file": "FusionMCP.py", + "line": 3934, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3934", + "description": "check wall thickness", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_draft_angles", + "file": "FusionMCP.py", + "line": 3935, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3935", + "description": "check draft angles", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_mesh_body_info", + "file": "FusionMCP.py", + "line": 3936, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3936", + "description": "get mesh body info", + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_printability", + "file": "FusionMCP.py", + "line": 3937, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3937", + "description": "check printability", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_get_setups", + "file": "FusionMCP.py", + "line": 3938, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3938", + "description": "cam get setups", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_create_setup", + "file": "FusionMCP.py", + "line": 3939, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3939", + "description": "cam create setup", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Wrong enum: SetupTypes vs documented OperationTypes (1961).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_create_operation", + "file": "FusionMCP.py", + "line": 3940, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3940", + "description": "cam create operation", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_generate_toolpath", + "file": "FusionMCP.py", + "line": 3941, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3941", + "description": "cam generate toolpath", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_list_tools", + "file": "FusionMCP.py", + "line": 3942, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3942", + "description": "cam list tools", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Uses cam.toolLibraries vs documented CAMManager library access (2053).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_post_process", + "file": "FusionMCP.py", + "line": 3943, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3943", + "description": "cam post process", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Wrong enum MillimeterOutput vs MillimetersOutput; ignores postProcess result (2109).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_simulate", + "file": "FusionMCP.py", + "line": 3944, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3944", + "description": "cam simulate", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Uses undocumented CAM.simulate (2122).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cam_get_operation_info", + "file": "FusionMCP.py", + "line": 3945, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3945", + "description": "cam get operation info", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_feature", + "file": "FusionMCP.py", + "line": 3946, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3946", + "description": "edit feature", + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "suppress_feature", + "file": "FusionMCP.py", + "line": 3947, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3947", + "description": "suppress feature", + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_feature", + "file": "FusionMCP.py", + "line": 3948, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3948", + "description": "delete feature", + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "reorder_feature", + "file": "FusionMCP.py", + "line": 3949, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3949", + "description": "reorder feature", + "coverage": "script-only", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "auto_constrain", + "file": "FusionMCP.py", + "line": 3950, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3950", + "description": "auto constrain", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_sketch_health", + "file": "FusionMCP.py", + "line": 3951, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3951", + "description": "get sketch health", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "remove_constraint", + "file": "FusionMCP.py", + "line": 3952, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3952", + "description": "remove constraint", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "save_variant", + "file": "FusionMCP.py", + "line": 3953, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3953", + "description": "save variant", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "load_variant", + "file": "FusionMCP.py", + "line": 3954, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3954", + "description": "load variant", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_variants", + "file": "FusionMCP.py", + "line": 3955, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3955", + "description": "list variants", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_variant", + "file": "FusionMCP.py", + "line": 3956, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3956", + "description": "delete variant", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_parameter_expression", + "file": "FusionMCP.py", + "line": 3957, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3957", + "description": "add parameter expression", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_create / parameter_batch", + "gapDetail": "Typed length/angle/mass/unitless user parameters; other unit kinds remain outside this schema.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "batch_update_parameters", + "file": "FusionMCP.py", + "line": 3958, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3958", + "description": "batch update parameters", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_batch", + "gapDetail": "One probed model transaction; failure reports measured restoration.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "generate_bom", + "file": "FusionMCP.py", + "line": 3959, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3959", + "description": "generate bom", + "coverage": "dedicated", + "category": "BOM", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: bom / bom_export", + "gapDetail": "Definition grouping, nested/repeated instances, root bodies, purchased subtree collapse/explode/exclusion and flat/structured CSV with source metadata.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_bom", + "file": "FusionMCP.py", + "line": 3960, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3960", + "description": "export bom", + "coverage": "dedicated", + "category": "BOM", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: bom / bom_export", + "gapDetail": "Definition grouping, nested/repeated instances, root bodies, purchased subtree collapse/explode/exclusion and flat/structured CSV with source metadata.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "generate_drawing", + "file": "FusionMCP.py", + "line": 3961, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3961", + "description": "generate drawing", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Viewport PNG + bounding-box dimensions, not native engineering drawing (2490).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_3d_sketch", + "file": "FusionMCP.py", + "line": 3962, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3962", + "description": "create 3d sketch", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Coordinates accept Z; no dedicated is3D mode/3D constraint contract is claimed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_3d_line", + "file": "FusionMCP.py", + "line": 3963, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3963", + "description": "draw 3d line", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Coordinates accept Z; no dedicated is3D mode/3D constraint contract is claimed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_3d_spline", + "file": "FusionMCP.py", + "line": 3964, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3964", + "description": "draw 3d spline", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Coordinates accept Z; no dedicated is3D mode/3D constraint contract is claimed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "project_to_surface", + "file": "FusionMCP.py", + "line": 3965, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3965", + "description": "project to surface", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_hole_pattern_linear", + "file": "FusionMCP.py", + "line": 3966, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3966", + "description": "create hole pattern linear", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry points + feature_create hole", + "gapDetail": "Hole positions can be supplied together; no dedicated hole-pattern feature wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_hole_pattern_circular", + "file": "FusionMCP.py", + "line": 3967, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3967", + "description": "create hole pattern circular", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry points + feature_create hole", + "gapDetail": "Hole positions can be supplied together; no dedicated hole-pattern feature wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_hole_info", + "file": "FusionMCP.py", + "line": 3968, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3968", + "description": "get hole info", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sheet_metal_rule", + "file": "FusionMCP.py", + "line": 3969, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3969", + "description": "create sheet metal rule", + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: returns created without a creation call (2636).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sheet_metal_flange", + "file": "FusionMCP.py", + "line": 3970, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3970", + "description": "sheet metal flange", + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Unverified creation: assumes flangeFeatures.createInput (2664).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sheet_metal_bend", + "file": "FusionMCP.py", + "line": 3971, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3971", + "description": "sheet metal bend", + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Uses undocumented Features.bendFeatures (2678).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sheet_metal_unfold", + "file": "FusionMCP.py", + "line": 3972, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3972", + "description": "sheet metal unfold", + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Preview API signature mismatch: passes two arguments; createInput requires stationaryFace only (2705).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sheet_metal_flat_pattern", + "file": "FusionMCP.py", + "line": 3973, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3973", + "description": "sheet metal flat pattern", + "coverage": "script-only", + "category": "Sheet metal", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "import_mesh", + "file": "FusionMCP.py", + "line": 3974, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3974", + "description": "import mesh", + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "repair_mesh", + "file": "FusionMCP.py", + "line": 3975, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3975", + "description": "repair mesh", + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Checks MeshBody.repair then returns UI note; repair not established (2770).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "convert_mesh_to_brep", + "file": "FusionMCP.py", + "line": 3976, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3976", + "description": "convert mesh to brep", + "coverage": "script-only", + "category": "Mesh", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Uses absent Features.meshToBrep vs current preview meshConvertFeatures (2789).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint_from_geometry", + "file": "FusionMCP.py", + "line": 3978, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3978", + "description": "create joint from geometry", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_rigid_group", + "file": "FusionMCP.py", + "line": 3979, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3979", + "description": "create rigid group", + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: rigid_group_create", + "gapDetail": "Exact occurrences and includeChildren policy.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_joint_limits", + "file": "FusionMCP.py", + "line": 3980, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3980", + "description": "set joint limits", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "drive_joint", + "file": "FusionMCP.py", + "line": 3981, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3981", + "description": "drive joint", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_joint", + "file": "FusionMCP.py", + "line": 3982, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3982", + "description": "edit joint", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_joint_info", + "file": "FusionMCP.py", + "line": 3983, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3983", + "description": "get joint info", + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Typed motion readback and occurrence identity; exact output shape differs.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_joints", + "file": "FusionMCP.py", + "line": 3984, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3984", + "description": "list joints", + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Typed motion readback and occurrence identity; exact output shape differs.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_data_hubs", + "file": "FusionMCP.py", + "line": 3986, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3986", + "description": "list data hubs", + "coverage": "partial", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_list_cloud_projects / fusion_list_cloud_files", + "gapDetail": "Signed-in session project/folder discovery; API and pagination semantics differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_data_projects", + "file": "FusionMCP.py", + "line": 3987, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3987", + "description": "list data projects", + "coverage": "partial", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_list_cloud_projects / fusion_list_cloud_files", + "gapDetail": "Signed-in session project/folder discovery; API and pagination semantics differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_data_folders", + "file": "FusionMCP.py", + "line": 3988, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3988", + "description": "list data folders", + "coverage": "partial", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_list_cloud_projects / fusion_list_cloud_files", + "gapDetail": "Signed-in session project/folder discovery; API and pagination semantics differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "open_data_file", + "file": "FusionMCP.py", + "line": 3989, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3989", + "description": "open data file", + "coverage": "dedicated", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": false, + "bridgeRoute": "fusion_open_cloud_file / fusion_aps_open", + "gapDetail": "Existing cloud document open workflow.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "save_to_folder", + "file": "FusionMCP.py", + "line": 3990, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3990", + "description": "save to folder", + "coverage": "partial", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_save_to_cloud; fusion_mechanical: export", + "gapDetail": "Explicit cloud destination or native archive path; local save semantics differ from cloud-version save.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_data_versions", + "file": "FusionMCP.py", + "line": 3991, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3991", + "description": "list data versions", + "coverage": "script-only", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "open_data_version", + "file": "FusionMCP.py", + "line": 3992, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3992", + "description": "open data version", + "coverage": "script-only", + "category": "Cloud data", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "subscribe_design_events", + "file": "FusionMCP.py", + "line": 3994, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3994", + "description": "subscribe design events", + "coverage": "script-only", + "category": "Events", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "poll_design_events", + "file": "FusionMCP.py", + "line": 3995, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3995", + "description": "poll design events", + "coverage": "script-only", + "category": "Events", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "unsubscribe_design_events", + "file": "FusionMCP.py", + "line": 3996, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3996", + "description": "unsubscribe design events", + "coverage": "script-only", + "category": "Events", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_subscription_status", + "file": "FusionMCP.py", + "line": 3997, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3997", + "description": "get subscription status", + "coverage": "script-only", + "category": "Events", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_render_environment", + "file": "FusionMCP.py", + "line": 3999, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L3999", + "description": "set render environment", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_appearance_detailed", + "file": "FusionMCP.py", + "line": 4000, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4000", + "description": "set appearance detailed", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_render_camera", + "file": "FusionMCP.py", + "line": 4001, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4001", + "description": "create render camera", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_render_camera", + "file": "FusionMCP.py", + "line": 4002, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4002", + "description": "apply render camera", + "coverage": "script-only", + "category": "Appearance and rendering", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_drawing_document", + "file": "FusionMCP.py", + "line": 4004, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4004", + "description": "create drawing document", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: imports module, returns note only (3541).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_base_view", + "file": "FusionMCP.py", + "line": 4005, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4005", + "description": "add base view", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: echoes inputs only (3558).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_projected_view", + "file": "FusionMCP.py", + "line": 4006, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4006", + "description": "add projected view", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: note only (3567).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_section_view", + "file": "FusionMCP.py", + "line": 4007, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4007", + "description": "add section view", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: note only (3570).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_drawing_dimension", + "file": "FusionMCP.py", + "line": 4008, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4008", + "description": "add drawing dimension", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: note only (3573).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_annotation", + "file": "FusionMCP.py", + "line": 4009, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4009", + "description": "add annotation", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Placeholder: echoes text only (3576).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_drawing", + "file": "FusionMCP.py", + "line": 4010, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4010", + "description": "export drawing", + "coverage": "script-only", + "category": "Drawings and view sheets", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Only PDF attempts export; other formats falsely report exported. Active Design dispatcher gate also obstructs drawing context (3598,3835).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "compare_variants", + "file": "FusionMCP.py", + "line": 4012, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4012", + "description": "compare variants", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_design_table", + "file": "FusionMCP.py", + "line": 4013, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4013", + "description": "create design table", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Custom JSON presets in attributes, not native configurations (3640).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_design_table_row", + "file": "FusionMCP.py", + "line": 4014, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4014", + "description": "apply design table row", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "generate_variant_batch", + "file": "FusionMCP.py", + "line": 4015, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4015", + "description": "generate variant batch", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Swallows parameter errors; can export stale state and count failures as generated (3706).", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "validate_parameters", + "file": "FusionMCP.py", + "line": 4016, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4016", + "description": "validate parameters", + "coverage": "partial", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_mechanical: health / parameter_batch", + "gapDetail": "Expression validation and downstream health; no separate arbitrary expression dependency-analysis report.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_parameter_dependents", + "file": "FusionMCP.py", + "line": 4017, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4017", + "description": "get parameter dependents", + "coverage": "script-only", + "category": "Parameters and variants", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "pipeline_execute", + "file": "FusionMCP.py", + "line": 4018, + "sourceUrl": "https://github.com/fozzfut/FusionMCP/blob/12bb2bce20a416c8167dd879c87b4e4c833ab152/FusionMCP.py#L4018", + "description": "pipeline execute", + "coverage": "partial", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "HTTP handler source; no MCP protocol adapter found; some commands are placeholders", + "externalCaveat": "Rollback only deletes appended timeline entries; existing parameter/file/document effects survive (3785).", + "gap": true, + "bridgeRoute": "fusion_mechanical: parameter_batch / transaction_probe", + "gapDetail": "Atomic parameter batch exists; arbitrary mixed-operation pipeline with file/cloud rollback is absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/fozzfut/FusionMCP.git", + "commitDate": "2026-04-05", + "toolCount": 170, + "licenseFiles": [], + "inventoryKind": "HTTP dispatch commands; no MCP adapter", + "license": "README says MIT; no licence file", + "rowCount": 170 + }, + "mcp-fusion360": { + "commit": "3419de8ae314f9a2c4a85770cf4b6c02163e0d7a", + "tools": [ + { + "name": "get_active_design_parameters", + "file": "mcp-server/src/index.ts", + "line": 40, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L40", + "description": "get active design parameters", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect; fusion_get_parameters", + "gapDetail": "User and model parameters with expressions and units.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_clearance", + "file": "mcp-server/src/index.ts", + "line": 46, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L46", + "description": "measure clearance", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "update_user_parameter", + "file": "mcp-server/src/index.ts", + "line": 53, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L53", + "description": "update user parameter", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_circular_cutout", + "file": "mcp-server/src/index.ts", + "line": 60, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L60", + "description": "create circular cutout", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry + feature_create extrude operation=cut", + "gapDetail": "Create the profile on the selected plane and explicitly select participant bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_rectangular_cutout", + "file": "mcp-server/src/index.ts", + "line": 67, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L67", + "description": "create rectangular cutout", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry + feature_create extrude operation=cut", + "gapDetail": "Create the profile on the selected plane and explicitly select participant bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_slot_cutout", + "file": "mcp-server/src/index.ts", + "line": 74, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L74", + "description": "create slot cutout", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry + feature_create extrude operation=cut", + "gapDetail": "Create the profile on the selected plane and explicitly select participant bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_bodies", + "file": "mcp-server/src/index.ts", + "line": 81, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L81", + "description": "list bodies", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_document_info", + "file": "mcp-server/src/index.ts", + "line": 87, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L87", + "description": "get document info", + "coverage": "dedicated", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_document_info / fusion_mechanical: inspect", + "gapDetail": "Live document identity and save metadata.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_body_info", + "file": "mcp-server/src/index.ts", + "line": 93, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L93", + "description": "get body info", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_features", + "file": "mcp-server/src/index.ts", + "line": 100, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L100", + "description": "list features", + "coverage": "dedicated", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_sketches", + "file": "mcp-server/src/index.ts", + "line": 106, + "sourceUrl": "https://github.com/ignaciomolini/mcp-fusion360/blob/3419de8ae314f9a2c4a85770cf4b6c02163e0d7a/mcp-server/src/index.ts#L106", + "description": "list sketches", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/ignaciomolini/mcp-fusion360.git", + "commitDate": "2026-06-24", + "toolCount": 11, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "MCP tools", + "license": "MIT", + "rowCount": 11 + }, + "Justus": { + "commit": "dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a", + "tools": [ + { + "name": "move_latest_body", + "file": "Server/MCP_Server.py", + "line": 121, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L121", + "signature": "x: float, y: float, z: float", + "description": "Du kannst den letzten K\u00f6rper in Fusion 360 verschieben in x,y und z Richtung", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rotate_latest_body", + "file": "Server/MCP_Server.py", + "line": 136, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L136", + "signature": "angle: float, axis: str='Z'", + "description": "Dreht den zuletzt erstellten K\u00f6rper um eine Achse, an Ort und Stelle.\nDer Pivot ist der Mittelpunkt (Bounding-Box-Zentrum) des K\u00f6rpers, der K\u00f6rper\ndreht sich also auf der Stelle ohne wegzuwandern.\n\nangle: Drehwinkel in Grad (z.B. 90 oder -45).\naxis: Drehachse als String \"X\", \"Y\" oder \"Z\" (Default \"Z\").\n\nSehr n\u00fctzlich um einen K\u00f6rper auszurichten, z.B. einen liegenden Zylinder\naufzustellen oder eine schief platzierte S\u00e4ule gerade zu drehen.", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_last_body", + "file": "Server/MCP_Server.py", + "line": 161, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L161", + "signature": "", + "description": "L\u00f6scht nur den zuletzt erstellten K\u00f6rper (nicht alle).\nPraktisch um einen einzelnen Fehlversuch r\u00fcckg\u00e4ngig zu machen, ohne mit\ndelete_all das ganze Modell zu verlieren.", + "coverage": "partial", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rotate_body_by_index", + "file": "Server/MCP_Server.py", + "line": 176, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L176", + "signature": "index: int, angle: float, axis: str='Z'", + "description": "Dreht den K\u00f6rper mit dem angegebenen Index um eine Achse, an Ort und Stelle.\nWie rotate_latest_body, aber statt des letzten K\u00f6rpers w\u00e4hlst du \u00fcber den Index.\nDen Index bekommst du \u00fcber list_bodies.\n\nindex: 0-basierter Index des K\u00f6rpers (0 = erster K\u00f6rper).\nangle: Drehwinkel in Grad (z.B. 90 oder -45).\naxis: Drehachse als String \"X\", \"Y\" oder \"Z\" (Default \"Z\").", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body_by_index", + "file": "Server/MCP_Server.py", + "line": 200, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L200", + "signature": "index: int", + "description": "L\u00f6scht den K\u00f6rper mit dem angegebenen Index (nicht alle).\nWie delete_last_body, aber statt des letzten K\u00f6rpers w\u00e4hlst du \u00fcber den Index.\nDen Index bekommst du \u00fcber list_bodies.\n\nindex: 0-basierter Index des K\u00f6rpers (0 = erster K\u00f6rper).", + "coverage": "partial", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body_by_index", + "file": "Server/MCP_Server.py", + "line": 220, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L220", + "signature": "index: int, x: float, y: float, z: float", + "description": "Verschiebt den K\u00f6rper mit dem angegebenen Index in x, y und z Richtung.\nWie move_latest_body, aber statt des letzten K\u00f6rpers w\u00e4hlst du \u00fcber den Index.\nDen Index bekommst du \u00fcber list_bodies.\n\nindex: 0-basierter Index des K\u00f6rpers (0 = erster K\u00f6rper).\nx, y, z: Translationsvektor.", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_bodies", + "file": "Server/MCP_Server.py", + "line": 244, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L244", + "signature": "", + "description": "Listet alle K\u00f6rper im aktuellen Modell auf.\nGibt f\u00fcr jeden K\u00f6rper Index, Name, Zentrum (Bounding-Box-Mittelpunkt)\nund Gr\u00f6\u00dfe (dx, dy, dz) zur\u00fcck.\nN\u00fctzlich um den Index f\u00fcr rotate_body_by_index, delete_body_by_index\noder move_body_by_index zu bestimmen.", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_thread", + "file": "Server/MCP_Server.py", + "line": 261, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L261", + "signature": "inside: bool, allsizes: int", + "description": "Erstellt ein Gewinde in Fusion 360\nIm Moment w\u00e4hlt der User selber in Fusioibn 360 das Profil aus\nDu musst nur angeben ob es innen oder au\u00dfen sein soll\nund die l\u00e4nge des Gewindes\nallsizes haben folgende werte :\n # allsizes :\n #'1/4', '5/16', '3/8', '7/16', '1/2', '5/8', '3/4', '7/8', '1', '1 1/8', '1 1/4',\n # '1 3/8', '1 1/2', '1 3/4', '2', '2 1/4', '2 1/2', '2 3/4', '3', '3 1/2', '4', '4 1/2', '5')\n # allsizes = int value from 1 to 22", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=thread", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "test_connection", + "file": "Server/MCP_Server.py", + "line": 287, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L287", + "signature": "", + "description": "Testes die Verbindung zum Fusion 360 Server.", + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_all", + "file": "Server/MCP_Server.py", + "line": 297, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L297", + "signature": "", + "description": "L\u00f6scht alle Objekte in der aktuellen Fusion 360-Sitzung.", + "coverage": "script-only", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_holes", + "file": "Server/MCP_Server.py", + "line": 308, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L308", + "signature": "points: list, depth: float, width: float, faceindex: int=0", + "description": "Zeichne L\u00f6cher in Fusion 360\n\u00dcbergebe die Json in richter Form\nDu muss die x und y koordinate angeben z = 0\nDas wird meistens aufgerufen wenn eine Bohrung in der Mitte eines Kreises sein soll\nAlso wenn du ein zylinder baust musst du den Mittelpunkt des Zylinders angeben\n\u00dcbergebe zus\u00e4tzlich die Tiefe und den Durchmesser der Bohrung\nDu machst im Moment nur Counterbore holes\nDu brauchs den faceindex damit Fusion wei\u00df auf welcher Fl\u00e4che die Bohrung gemacht werden soll\nwenn du einen keris extrudierst ist die oberste Fl\u00e4che meistens faceindex 1 untere fl\u00e4che 2\nDie punkte m\u00fcssen so sein, dass sie nicht au\u00dferhalb des K\u00f6rpers liegen\nBSP:\n2,1mm tief = depth: 0.21\nBreite 10mm = diameter: 1.0\n{\npoints : [[0,0,]],\nwidth : 1.0,\ndepth : 0.21,\nfaceindex : 0\n}", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=hole", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_witzenmannlogo", + "file": "Server/MCP_Server.py", + "line": 345, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L345", + "signature": "scale: float=1.0, z: float=1.0", + "description": "Du baust das witzenmann logo\nDu kannst es skalieren\nes ist immer im Mittelpunkt\nDu kannst die H\u00f6he angeben mit z\n\n:param scale:\n:param z:\n:return:", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "spline", + "file": "Server/MCP_Server.py", + "line": 369, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L369", + "signature": "points: list, plane: str", + "description": "Zeichne eine Spline Kurve in Fusion 360\nDu kannst die Punkte als Liste von Listen \u00fcbergeben\nBeispiel: [[0,0,0],[5,0,0],[5,5,5],[0,5,5],[0,0,0]]\nEs ist essenziell, dass du die Z-Koordinate angibst, auch wenn sie 0 ist\nWenn nicht explizit danach gefragt ist mache es so, dass die Linien nach oben zeigen\nDu kannst die Ebene als String \u00fcbergeben\nEs ist essenziell, dass die linien die gleiche ebene haben wie das profil was du sweepen willst", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "file": "Server/MCP_Server.py", + "line": 392, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L392", + "signature": "", + "description": "Benutzt den vorhrig erstellten spline und den davor erstellten krei,\num eine sweep funktion auszuf\u00fchren", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "undo", + "file": "Server/MCP_Server.py", + "line": 405, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L405", + "signature": "", + "description": "Macht die letzte Aktion r\u00fcckg\u00e4ngig.", + "coverage": "delegated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "count", + "file": "Server/MCP_Server.py", + "line": 415, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L415", + "signature": "", + "description": "Z\u00e4hlt die Parameter im aktuellen Modell.", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_parameters", + "file": "Server/MCP_Server.py", + "line": 425, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L425", + "signature": "", + "description": "Listet alle Parameter im aktuellen Modell auf.", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect; fusion_get_parameters", + "gapDetail": "User and model parameters with expressions and units.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_step", + "file": "Server/MCP_Server.py", + "line": 435, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L435", + "signature": "name: str", + "description": "Exportiert das Modell als STEP-Datei.", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_stl", + "file": "Server/MCP_Server.py", + "line": 448, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L448", + "signature": "name: str", + "description": "Exportiert das Modell als STL-Datei.", + "coverage": "partial", + "category": "Export", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet_edges", + "file": "Server/MCP_Server.py", + "line": 461, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L461", + "signature": "radius: str", + "description": "Erstellt eine Abrundung an den angegebenen Kanten.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "change_parameter", + "file": "Server/MCP_Server.py", + "line": 475, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L475", + "signature": "name: str, value: str", + "description": "\u00c4ndert den Wert eines Parameters.", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_cylinder", + "file": "Server/MCP_Server.py", + "line": 490, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L490", + "signature": "radius: float, height: float, x: float, y: float, z: float, plane: str='XY'", + "description": "Zeichne einen Zylinder, du kannst du in der XY Ebende arbeiten\nEs gibt Standartwerte", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry circle + feature_create extrude", + "gapDetail": "Dimension the circle and extrusion for parameter-driven geometry.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_box", + "file": "Server/MCP_Server.py", + "line": 512, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L512", + "signature": "height_value: str, width_value: str, depth_value: str, x_value: float, y_value: float, z_value: float, plane: str='XY'", + "description": "Du kannst die H\u00f6he, Breite und Tiefe der Box als Strings \u00fcbergeben.\nDepth ist die Tiefe in z Richtung also wenn gesagt wird die Box soll flach sein,\ndann gibst du einen geringen Wert an!\nDu kannst die Koordinaten x, y,z der Box als Strings \u00fcbergeben.Gib immer Koordinaten an,\njene geben den Mittelpunkt der Box an.\nDepth ist die Tiefe in z Richtung\nGanz wichtg 10 ist 100mm in Fusion 360\nDu kannst die Ebene als String \u00fcbergeben\nDepth ist die eigentliche h\u00f6he in z Richtung\nEin in der Luft schwebende Box machst du so: \n{\n`plane`: `XY`,\n`x_value`: 5,\n`y_value`: 5,\n`z_value`: 20,\n`depth_value`: `2`,\n`width_value`: `5`,\n`height_value`: `3`\n}\nDas kannst du beliebig anpassen\n\nBeispiel: \"XY\", \"YZ\", \"XZ\"", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell_body", + "file": "Server/MCP_Server.py", + "line": 559, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L559", + "signature": "thickness: float, faceindex: int", + "description": "Du kannst die Dicke der Wand als Float \u00fcbergeben\nDu kannst den Faceindex als Integer \u00fcbergeben\nWEnn du davor eine Box abgerundet hast muss die im klaren sein, dass du 20 neue Fl\u00e4chen hast.\nDie sind alle die kleinen abgerundeten\nFalls du eine Box davor die Ecken verrundet hast, \ndann ist der Facinedex der gro\u00dfen Fl\u00e4chen mindestens 21\nEs kann immer nur der letzte Body gesch\u00e4lt werde\n\n:param thickness:\n:param faceindex:\n:return:", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_sphere", + "file": "Server/MCP_Server.py", + "line": 586, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L586", + "signature": "x: float, y: float, z: float, radius: float", + "description": "Zeichne eine Kugel in Fusion 360\nDu kannst die Koordinaten als Float \u00fcbergeben\nDu kannst den Radius als Float \u00fcbergeben\nBeispiel: \"XY\", \"YZ\", \"XZ\"\nGib immer JSON SO:\n{\n \"x\":0,\n \"y\":0,\n \"z\":0,\n \"radius\":5\n}", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_2d_rectangle", + "file": "Server/MCP_Server.py", + "line": 617, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L617", + "signature": "x_1: float, y_1: float, z_1: float, x_2: float, y_2: float, z_2: float, plane: str", + "description": "Zeichne ein 2D-Rechteck in Fusion 360 f\u00fcr loft /Sweep etc.", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "boolean_operation", + "file": "Server/MCP_Server.py", + "line": 640, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L640", + "signature": "operation: str", + "description": "F\u00fchre eine boolesche Operation auf dem letzten K\u00f6rper aus.\nDu kannst die Operation als String \u00fcbergeben.\nM\u00f6gliche Werte sind: \"cut\", \"join\", \"intersect\"\nWichtig ist, dass du vorher zwei K\u00f6rper erstellt hast,", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_lines", + "file": "Server/MCP_Server.py", + "line": 661, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L661", + "signature": "points: list, plane: str", + "description": "Zeichne Linien in Fusion 360\nDu kannst die Punkte als Liste von Listen \u00fcbergeben\nBeispiel: [[0,0,0],[5,0,0],[5,5,5],[0,5,5],[0,0,0]]\nEs ist essenziell, dass du die Z-Koordinate angibst, auch wenn sie 0 ist\nWenn nicht explizit danach gefragt ist mache es so, dass die Linien nach oben zeigen\nDu kannst die Ebene als String \u00fcbergeben\nBeispiel: \"XY\", \"YZ\", \"XZ\"", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude", + "file": "Server/MCP_Server.py", + "line": 683, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L683", + "signature": "value: float, angle: float", + "description": "Extrudiert die letzte Skizze um einen angegebenen Wert.\nDu kannst auch einen Winkel angeben", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_text", + "file": "Server/MCP_Server.py", + "line": 703, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L703", + "signature": "text: str, plane: str, x_1: float, y_1: float, z_1: float, x_2: float, y_2: float, z_2: float, thickness: float, value: float", + "description": "Zeichne einen Text in Fusion 360 der ist ein Sketch also kannst dz ann extruden\nMit value kannst du angeben wie weit du den text extrudieren willst", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude_thin", + "file": "Server/MCP_Server.py", + "line": 729, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L729", + "signature": "thickness: float, distance: float", + "description": "Du kannst die Dicke der Wand als Float \u00fcbergeben\nDu kannst sch\u00f6ne Hohlk\u00f6rper damit erstellen\n:param thickness: Die Dicke der Wand in mm", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cut_extrude", + "file": "Server/MCP_Server.py", + "line": 748, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L748", + "signature": "depth: float", + "description": "Du kannst die Tiefe des Schnitts als Float \u00fcbergeben\n:param depth: Die Tiefe des Schnitts in mm\ndepth muss negativ sein ganz wichtig!", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "file": "Server/MCP_Server.py", + "line": 767, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L767", + "signature": "angle: float", + "description": "Sobald du dieses tool aufrufst wird der nutzer gebeten in Fusion ein profil\nauszuw\u00e4hlen und dann eine Achse.\nWir \u00fcbergeben den Winkel als Float", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "Server/MCP_Server.py", + "line": 786, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L786", + "signature": "point1: list, point2: list, point3: list, plane: str", + "description": "Zeichne einen Bogen in Fusion 360\nDu kannst die Punkte als Liste von Listen \u00fcbergeben\nBeispiel: point1 = [0,0,0], point2 = [5,5,5], point3 = [10,0,0]\nDu kannst die Ebene als String \u00fcbergeben\nEs wird eine Linie von point1 zu point3 gezeichnet die durch point2 geht also musst du nicht extra eine Linie zeichnen\nBeispiel: \"XY\", \"YZ\", \"XZ\"", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_one_line", + "file": "Server/MCP_Server.py", + "line": 811, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L811", + "signature": "x1: float, y1: float, z1: float, x2: float, y2: float, z2: float, plane: str='XY'", + "description": "Zeichne eine Linie in Fusion 360\nDu kannst die Koordinaten als Float \u00fcbergeben\nBeispiel: x1 = 0.0, y1 = 0.0, z1 = 0.0, x2 = 10.0, y2 = 10.0, z2 = 10.0\nDu kannst die Ebene als String \u00fcbergeben\nBeispiel: \"XY\", \"YZ\", \"XZ\"", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern", + "file": "Server/MCP_Server.py", + "line": 838, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L838", + "signature": "plane: str, quantity_one: float, quantity_two: float, distance_one: float, distance_two: float, axis_one: str, axis_two: str", + "description": "Du kannst ein Rectangular Pattern (Rechteckmuster) erstellen um Objekte in einer rechteckigen Anordnung zu verteilen.\nDu musst zwei Mengen (quantity_one, quantity_two) als Float \u00fcbergeben,\nzwei Abst\u00e4nde (distance_one, distance_two) als Float \u00fcbergeben,\nDie beiden Richtungen sind die axen ( axis_one, axis_two) als String (\"X\", \"Y\" oder \"Z\") und die Ebene als String (\"XY\", \"YZ\" oder \"XZ\").\nAus Gr\u00fcnden musst du distance immer mit einer 10 multiplizieren damit es in Fusion 360 stimmt.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "circular_pattern", + "file": "Server/MCP_Server.py", + "line": 867, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L867", + "signature": "plane: str, quantity: float, axis: str", + "description": "Du kannst ein Circular Pattern (Kreismuster) erstellen um Objekte kreisf\u00f6rmig um eine Achse zu verteilen.\nDu \u00fcbergibst die Anzahl der Kopien als Float, die Achse als String (\"X\", \"Y\" oder \"Z\") und die Ebene als String (\"XY\", \"YZ\" oder \"XZ\").\n\nDie Achse gibt an, um welche Achse rotiert wird.\nDie Ebene gibt an, in welcher Ebene das Muster verteilt wird.\n\nBeispiel: \n- quantity: 6.0 erstellt 6 Kopien gleichm\u00e4\u00dfig um 360\u00b0 verteilt\n- axis: \"Z\" rotiert um die Z-Achse\n- plane: \"XY\" verteilt die Objekte in der XY-Ebene\n\nDas Feature wird auf das zuletzt erstellte/ausgew\u00e4hlte Objekt angewendet.\nTypische Anwendungen: Schraubenl\u00f6cher in Kreisform, Zahnrad-Z\u00e4hne, L\u00fcftungsgitter, dekorative Muster.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "ellipsie", + "file": "Server/MCP_Server.py", + "line": 898, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L898", + "signature": "x_center: float, y_center: float, z_center: float, x_major: float, y_major: float, z_major: float, x_through: float, y_through: float, z_through: float, plane: str", + "description": "Zeichne eine Ellipse in Fusion 360.", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw2Dcircle", + "file": "Server/MCP_Server.py", + "line": 923, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L923", + "signature": "radius: float, x: float, y: float, z: float, plane: str='XY'", + "description": "Zeichne einen Kreis in Fusion 360\nDu kannst den Radius als Float \u00fcbergeben\nDu kannst die Koordinaten als Float \u00fcbergeben\nDu kannst die Ebene als String \u00fcbergeben\nBeispiel: \"XY\", \"YZ\", \"XZ\"\n\nKRITISCH - Welche Koordinate f\u00fcr \"nach oben\":\n- XY-Ebene: z erh\u00f6hen = nach oben\n- YZ-Ebene: x erh\u00f6hen = nach oben \n- XZ-Ebene: y erh\u00f6hen = nach oben\n\nGib immer JSON SO:\n{\n \"radius\":5,\n \"x\":0,\n \"y\":0,\n \"z\":0,\n \"plane\":\"XY\"\n}", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "file": "Server/MCP_Server.py", + "line": 962, + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L962", + "signature": "sketchcount: int", + "description": "Du kannst eine Loft Funktion in Fusion 360 erstellen\nDu \u00fcbergibst die Anzahl der Sketches die du f\u00fcr die Loft benutzt hast als Integer\nDie Sketches m\u00fcssen in der richtigen Reihenfolge erstellt worden sein\nAlso zuerst Sketch 1 dann Sketch 2 dann Sketch 3 usw.", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server.git", + "commitDate": "2026-07-01", + "toolCount": 40, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "MCP tools", + "license": "MIT", + "rowCount": 40 + }, + "ncmlabs": { + "commit": "91bdfae836989a6c86d1cc3af8280e16eaacaa3f", + "tools": [ + { + "name": "get_design_state", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 24, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L24", + "signature": "", + "description": "Get the current Fusion 360 design state.\n\nReturns comprehensive design information including:\n- Design name and units (mm, cm, in, etc.)\n- Total count of bodies, sketches, and components\n- Timeline feature count\n- Active component ID\n\n**Use this first** to understand the current design context before\nmaking any modifications. This gives you an overview of what exists\nin the design.\n\nReturns:\n Dict containing design state information\n\nExample response:\n {\n \"name\": \"MyDesign\",\n \"units\": \"mm\",\n \"bodies_count\": 3,\n \"sketches_count\": 2,\n \"components_count\": 1,\n \"timeline_count\": 5,\n \"active_component_id\": \"RootComponent\"\n }", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_bodies", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 56, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L56", + "signature": "component_id: Optional[str]=None", + "description": "Get all bodies in the design or a specific component.\n\nLists all solid and surface bodies with their key properties.\nUse this to understand what geometry exists before modifying it.\n\nArgs:\n component_id: Optional component ID to filter bodies.\n If not provided, returns bodies from root component.\n\nReturns:\n Dict containing:\n - bodies: List of body summaries with id, name, volume, bounding_box\n - total: Total count of bodies\n - component_id: The component that was queried\n\nEach body summary includes:\n- id: Unique identifier for referencing this body in other operations\n- name: Display name of the body\n- is_solid: True if solid body, False if surface body\n- bounding_box: Spatial extent with min/max points\n- volume: Body volume in mm^3\n- faces_count: Number of faces\n\nExample response:\n {\n \"bodies\": [\n {\n \"id\": \"Body1\",\n \"name\": \"Body1\",\n \"is_solid\": true,\n \"bounding_box\": {\n \"min_point\": {\"x\": 0, \"y\": 0, \"z\": 0},\n \"max_point\": {\"x\": 100, \"y\": 50, \"z\": 10}\n },\n \"volume\": 50000.0,\n \"faces_count\": 6\n }\n ],\n \"total\": 1,\n \"component_id\": null\n }", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_body_by_id", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 109, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L109", + "signature": "body_id: str, include_faces: bool=False, include_edges: bool=False", + "description": "Get detailed information about a specific body.\n\nRetrieves comprehensive body data including topology details\nwhen requested. Use this when you need detailed information\nabout a specific body for modifications or measurements.\n\nArgs:\n body_id: The body ID (from get_bodies). This is required.\n include_faces: Include face geometry details (type, area, normal).\n Set to True when you need to select faces for operations.\n include_edges: Include edge geometry details (type, length).\n Set to True when you need to select edges for fillets/chamfers.\n\nReturns:\n Dict with full body information including:\n - All summary fields (name, volume, bounding_box)\n - faces_count, edges_count, vertices_count\n - center_of_mass: Center of mass point\n - area: Total surface area in mm^2\n - component_id: Parent component ID\n - Optional faces array with type, area, normal for each face\n - Optional edges array with type, length for each edge\n\nUse include_faces/include_edges only when needed, as they add\nsignificant data to the response.\n\nExample response (with include_faces=True):\n {\n \"id\": \"Body1\",\n \"name\": \"Body1\",\n \"is_solid\": true,\n \"volume\": 50000.0,\n \"area\": 13000.0,\n \"faces_count\": 6,\n \"edges_count\": 12,\n \"vertices_count\": 8,\n \"faces\": [\n {\n \"id\": \"Body1_face_0\",\n \"face_type\": \"planar\",\n \"area\": 5000.0,\n \"normal\": {\"x\": 0, \"y\": 0, \"z\": 1}\n }\n ]\n }", + "coverage": "partial", + "category": "Inspection", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_sketches", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 174, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L174", + "signature": "component_id: Optional[str]=None", + "description": "Get all sketches in the design or a specific component.\n\nLists all sketches with their key properties. Sketches are\n2D drawings that define profiles for features like extrusions.\n\nArgs:\n component_id: Optional component ID to filter sketches.\n If not provided, returns sketches from root component.\n\nReturns:\n Dict containing:\n - sketches: List of sketch summaries\n - total: Total count of sketches\n - component_id: The component that was queried\n\nEach sketch summary includes:\n- id: Unique identifier for the sketch\n- name: Display name of the sketch\n- plane: Reference plane information\n- is_fully_constrained: True if all geometry is constrained\n- curves_count: Number of sketch curves\n- profiles_count: Number of closed profiles (regions)\n\nExample response:\n {\n \"sketches\": [\n {\n \"id\": \"Sketch1\",\n \"name\": \"Sketch1\",\n \"is_fully_constrained\": true,\n \"curves_count\": 4,\n \"profiles_count\": 1\n }\n ],\n \"total\": 1\n }", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_sketch_by_id", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 222, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L222", + "signature": "sketch_id: str, include_curves: bool=True, include_constraints: bool=True, include_dimensions: bool=True, include_profiles: bool=False", + "description": "Get detailed information about a specific sketch.\n\nRetrieves comprehensive sketch data including geometry,\nconstraints, and dimensions. Use this when you need to\nunderstand or modify a specific sketch.\n\nArgs:\n sketch_id: The sketch ID (from get_sketches). Required.\n include_curves: Include curve geometry details (default True).\n include_constraints: Include constraint details (default True).\n include_dimensions: Include dimension details (default True).\n include_profiles: Include profile details for extrusion.\n\nReturns:\n Dict with full sketch information including:\n - All summary fields (name, plane, constraint status)\n - curves: Array of sketch curves with geometry\n - constraints: Array of geometric constraints\n - dimensions: Array of dimensions with values\n - profiles: Array of closed profile regions (if requested)\n\nExample response:\n {\n \"id\": \"Sketch1\",\n \"name\": \"Sketch1\",\n \"is_fully_constrained\": true,\n \"curves\": [\n {\n \"id\": \"Sketch1_curve_0\",\n \"curve_type\": \"line\",\n \"start_point\": {\"x\": 0, \"y\": 0, \"z\": 0},\n \"end_point\": {\"x\": 100, \"y\": 0, \"z\": 0},\n \"length\": 100.0\n }\n ],\n \"dimensions\": [\n {\n \"id\": \"Sketch1_dimension_0\",\n \"dimension_type\": \"linear\",\n \"value\": 100.0,\n \"expression\": \"100 mm\"\n }\n ]\n }", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_parameters", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 289, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L289", + "signature": "user_only: bool=False", + "description": "Get all parameters in the design.\n\nRetrieves model and user parameters. Parameters drive dimensions\nand can be modified to update the design parametrically.\n\nArgs:\n user_only: If True, only return user-defined parameters.\n Model parameters (created by features) are excluded.\n\nReturns:\n Dict containing:\n - parameters: List of parameter objects\n - total: Total count of parameters\n\nEach parameter includes:\n- id: Parameter name (used as identifier)\n- name: Display name\n- value: Current value in internal units\n- expression: Value expression (may include units or formulas)\n- unit: Unit of measurement\n- is_user_parameter: True if user-created\n- comment: Optional description\n- is_favorite: True if marked as favorite\n\nExample response:\n {\n \"parameters\": [\n {\n \"id\": \"width\",\n \"name\": \"width\",\n \"value\": 100.0,\n \"expression\": \"100 mm\",\n \"unit\": \"mm\",\n \"is_user_parameter\": true\n },\n {\n \"id\": \"d1\",\n \"name\": \"d1\",\n \"value\": 50.0,\n \"expression\": \"width / 2\",\n \"unit\": \"mm\",\n \"is_user_parameter\": false\n }\n ],\n \"total\": 2\n }", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect; fusion_get_parameters", + "gapDetail": "User and model parameters with expressions and units.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_timeline", + "file": "Server/src/fusion360_mcp_server/tools/query_tools.py", + "line": 347, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/query_tools.py#L347", + "signature": "", + "description": "Get the design timeline (feature history).\n\nRetrieves the ordered list of features that created the design.\nThe timeline shows the parametric history and can be used to\nunderstand how the design was built.\n\nReturns:\n Dict containing:\n - timeline: List of timeline entries in creation order\n - total: Total count of timeline entries\n - marker_position: Current timeline marker position\n\nEach timeline entry includes:\n- index: Position in timeline (0-based)\n- name: Feature name\n- feature_type: Type of feature (extrude, revolve, etc.)\n- is_suppressed: True if feature is suppressed\n- is_group: True if this is a group\n- is_rolled_back: True if rolled back past this feature\n- health_state: \"healthy\", \"warning\", or \"error\"\n- parent_group_index: Index of parent group (if in a group)\n\nExample response:\n {\n \"timeline\": [\n {\n \"index\": 0,\n \"name\": \"Sketch1\",\n \"feature_type\": \"sketch\",\n \"is_suppressed\": false,\n \"health_state\": \"healthy\"\n },\n {\n \"index\": 1,\n \"name\": \"Extrusion1\",\n \"feature_type\": \"extrude\",\n \"is_suppressed\": false,\n \"health_state\": \"healthy\"\n }\n ],\n \"total\": 2,\n \"marker_position\": 2\n }", + "coverage": "dedicated", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_box", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 26, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L26", + "signature": "width: float, depth: float, height: float, x: float=0.0, y: float=0.0, z: float=0.0, name: Optional[str]=None, plane: str='XY'", + "description": "Create a box (rectangular prism) in the design.\n\nCreates a solid box by sketching a rectangle and extruding it.\nThe box is centered at the specified (x, y) position on the\nchosen construction plane.\n\n**All dimensions are in millimeters (mm).**\n\nArgs:\n width: Box width in mm (X direction on XY plane). Must be positive.\n depth: Box depth in mm (Y direction on XY plane). Must be positive.\n height: Box height in mm (extrusion direction). Must be positive.\n x: X position of box center in mm. Default 0.\n y: Y position of box center in mm. Default 0.\n z: Z offset from the construction plane in mm. Default 0.\n name: Optional name for the created body. If not provided,\n Fusion 360 will auto-generate a name like \"Body1\".\n plane: Construction plane for the base sketch.\n Options: \"XY\" (default), \"YZ\", \"XZ\"\n\nReturns:\n Dict containing:\n - success: True if box was created\n - body: Body information including id, name, bounding_box, volume\n - feature: Feature information including id and type\n\nExample:\n # Create a 100x50x10mm base plate\n result = await create_box(width=100, depth=50, height=10, name=\"base_plate\")\n\n # Create a box offset in Z\n result = await create_box(width=20, depth=20, height=30, z=10)\n\n # Create a box on the XZ plane (vertical)\n result = await create_box(width=50, depth=30, height=20, plane=\"XZ\")", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_cylinder", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 96, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L96", + "signature": "radius: float, height: float, x: float=0.0, y: float=0.0, z: float=0.0, name: Optional[str]=None, plane: str='XY'", + "description": "Create a cylinder in the design.\n\nCreates a solid cylinder by sketching a circle and extruding it.\nThe cylinder is centered at the specified (x, y) position.\n\n**All dimensions are in millimeters (mm).**\n\nArgs:\n radius: Cylinder radius in mm. Must be positive.\n height: Cylinder height in mm (extrusion distance). Must be positive.\n x: X position of cylinder center in mm. Default 0.\n y: Y position of cylinder center in mm. Default 0.\n z: Z offset from the construction plane in mm. Default 0.\n name: Optional name for the created body.\n plane: Construction plane for the base circle.\n Options: \"XY\" (default), \"YZ\", \"XZ\"\n\nReturns:\n Dict containing:\n - success: True if cylinder was created\n - body: Body information including id, name, bounding_box, volume\n - feature: Feature information including id and type\n\nExample:\n # Create a cylinder with 25mm radius and 50mm height\n result = await create_cylinder(radius=25, height=50, name=\"shaft\")\n\n # Create an offset cylinder\n result = await create_cylinder(radius=10, height=20, x=50, y=50)", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry circle + feature_create extrude", + "gapDetail": "Dimension the circle and extrusion for parameter-driven geometry.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 159, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L159", + "signature": "plane: str='XY', name: Optional[str]=None, offset: float=0.0", + "description": "Create a new sketch on a construction plane.\n\nCreates an empty sketch that you can then draw geometry into\nusing draw_line, draw_circle, draw_rectangle, and draw_arc.\n\nArgs:\n plane: Construction plane for the sketch.\n Options: \"XY\" (default), \"YZ\", \"XZ\", or a face_id reference\n name: Optional name for the sketch.\n offset: Offset from the plane in mm. Use for sketching at a\n specific Z height (for XY plane). Default 0.\n\nReturns:\n Dict containing:\n - success: True if sketch was created\n - sketch: Sketch information including id, name, plane info\n\nExample:\n # Create a sketch on the XY plane\n result = await create_sketch(plane=\"XY\", name=\"base_profile\")\n sketch_id = result[\"sketch\"][\"id\"]\n\n # Create an offset sketch at Z=10mm\n result = await create_sketch(plane=\"XY\", offset=10)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_line", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 199, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L199", + "signature": "sketch_id: str, start_x: float, start_y: float, end_x: float, end_y: float", + "description": "Draw a line in a sketch.\n\n**All coordinates are in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch to draw in. Get this from create_sketch\n or get_sketches.\n start_x: Start point X coordinate in mm.\n start_y: Start point Y coordinate in mm.\n end_x: End point X coordinate in mm.\n end_y: End point Y coordinate in mm.\n\nReturns:\n Dict containing:\n - success: True if line was drawn\n - curve: Curve information including id, type, start_point, end_point, length\n - sketch_id: The sketch the line was added to\n\nExample:\n # Draw a horizontal line\n result = await draw_line(\n sketch_id=\"Sketch1\",\n start_x=0, start_y=0,\n end_x=100, end_y=0\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 250, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L250", + "signature": "sketch_id: str, center_x: float, center_y: float, radius: float", + "description": "Draw a circle in a sketch.\n\nCreates a closed circular profile that can be extruded.\n\n**All dimensions are in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n center_x: Center X coordinate in mm.\n center_y: Center Y coordinate in mm.\n radius: Circle radius in mm. Must be positive.\n\nReturns:\n Dict containing:\n - success: True if circle was drawn\n - curve: Curve information including id, type, center, radius\n - sketch_id: The sketch the circle was added to\n - profiles_count: Number of closed profiles in the sketch\n\nExample:\n # Draw a circle at origin with 25mm radius\n result = await draw_circle(\n sketch_id=\"Sketch1\",\n center_x=0, center_y=0,\n radius=25\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 299, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L299", + "signature": "sketch_id: str, x1: float, y1: float, x2: float, y2: float", + "description": "Draw a rectangle in a sketch using two corner points.\n\nCreates a closed rectangular profile that can be extruded.\n\n**All coordinates are in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n x1: First corner X coordinate in mm.\n y1: First corner Y coordinate in mm.\n x2: Opposite corner X coordinate in mm.\n y2: Opposite corner Y coordinate in mm.\n\nReturns:\n Dict containing:\n - success: True if rectangle was drawn\n - curves: List of curve IDs for the 4 lines\n - rectangle: Rectangle info with corners, width, height\n - sketch_id: The sketch the rectangle was added to\n - profiles_count: Number of closed profiles in the sketch\n\nExample:\n # Draw a 100x50mm rectangle\n result = await draw_rectangle(\n sketch_id=\"Sketch1\",\n x1=-50, y1=-25,\n x2=50, y2=25\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 353, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L353", + "signature": "sketch_id: str, center_x: float, center_y: float, radius: float, start_angle: float, end_angle: float", + "description": "Draw an arc in a sketch.\n\nCreates an arc from start_angle to end_angle, measured counterclockwise\nfrom the positive X axis.\n\n**Dimensions in mm, angles in degrees.**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n center_x: Center X coordinate in mm.\n center_y: Center Y coordinate in mm.\n radius: Arc radius in mm. Must be positive.\n start_angle: Start angle in degrees (0 = positive X axis).\n end_angle: End angle in degrees (counterclockwise from start).\n\nReturns:\n Dict containing:\n - success: True if arc was drawn\n - curve: Curve information including id, type, center, radius, angles\n - sketch_id: The sketch the arc was added to\n\nExample:\n # Draw a quarter circle arc (90 degrees)\n result = await draw_arc(\n sketch_id=\"Sketch1\",\n center_x=0, center_y=0,\n radius=50,\n start_angle=0, end_angle=90\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_polygon", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 413, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L413", + "signature": "sketch_id: str, radius: float, sides: int, center_x: float=0.0, center_y: float=0.0, rotation_angle: float=0.0", + "description": "Draw a regular polygon in a sketch.\n\nCreates a regular polygon (triangle, square, pentagon, hexagon, etc.)\nby calculating vertices on a circumscribed circle and connecting them.\n\n**All dimensions in millimeters (mm), angles in degrees.**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n radius: Circumscribed circle radius in mm (distance from center to vertex).\n Must be positive.\n sides: Number of sides (3-64). Examples: 3=triangle, 4=square,\n 5=pentagon, 6=hexagon, 8=octagon.\n center_x: Center X coordinate in mm. Default 0.\n center_y: Center Y coordinate in mm. Default 0.\n rotation_angle: Rotation angle in degrees. Default 0 (first vertex\n points in positive X direction).\n\nReturns:\n Dict containing:\n - success: True if polygon was created\n - curves: List of curve IDs for the polygon edges\n - polygon: Polygon info with center, radius, sides, side_length,\n apothem, perimeter, area\n - sketch_id: The sketch the polygon was added to\n - profiles_count: Number of closed profiles in the sketch\n\nExample:\n # Draw a hexagon with 20mm radius\n result = await draw_polygon(\n sketch_id=\"Sketch1\",\n radius=20,\n sides=6\n )\n\n # Draw a rotated octagon\n result = await draw_polygon(\n sketch_id=\"Sketch1\",\n center_x=50, center_y=50,\n radius=15,\n sides=8,\n rotation_angle=22.5\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_ellipse", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 485, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L485", + "signature": "sketch_id: str, major_radius: float, minor_radius: float, center_x: float=0.0, center_y: float=0.0, rotation_angle: float=0.0", + "description": "Draw an ellipse in a sketch.\n\nCreates an ellipse (oval) with specified major and minor radii.\n\n**All dimensions in millimeters (mm), angles in degrees.**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n major_radius: Major axis radius in mm (longest radius). Must be positive.\n minor_radius: Minor axis radius in mm (shortest radius). Must be positive\n and less than or equal to major_radius.\n center_x: Center X coordinate in mm. Default 0.\n center_y: Center Y coordinate in mm. Default 0.\n rotation_angle: Rotation of major axis in degrees. Default 0\n (major axis along positive X).\n\nReturns:\n Dict containing:\n - success: True if ellipse was created\n - curve: Curve info with id, type, center, radii, perimeter, area\n - sketch_id: The sketch the ellipse was added to\n - profiles_count: Number of closed profiles in the sketch\n\nExample:\n # Draw an ellipse with 30mm x 20mm radii\n result = await draw_ellipse(\n sketch_id=\"Sketch1\",\n major_radius=30,\n minor_radius=20\n )\n\n # Draw a 45-degree rotated ellipse\n result = await draw_ellipse(\n sketch_id=\"Sketch1\",\n center_x=50, center_y=0,\n major_radius=25,\n minor_radius=15,\n rotation_angle=45\n )", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_slot", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 553, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L553", + "signature": "sketch_id: str, length: float, width: float, center_x: float=0.0, center_y: float=0.0, slot_type: str='overall', rotation_angle: float=0.0", + "description": "Draw a slot shape (rounded rectangle/oblong) in a sketch.\n\nCreates a slot by drawing two parallel lines connected by two\nsemicircular arcs. Commonly used for mounting holes and adjustable\nfastener positions.\n\n**All dimensions in millimeters (mm), angles in degrees.**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n length: Slot length in mm. Interpretation depends on slot_type.\n width: Slot width in mm (diameter of the rounded ends). Must be positive.\n center_x: Center X coordinate in mm. Default 0.\n center_y: Center Y coordinate in mm. Default 0.\n slot_type: How to interpret the length parameter:\n - \"overall\": length is total slot length (default)\n - \"center_to_center\": length is distance between arc centers\n rotation_angle: Rotation angle in degrees. Default 0 (horizontal slot).\n\nReturns:\n Dict containing:\n - success: True if slot was created\n - curves: List of curve IDs (2 lines + 2 arcs)\n - slot: Slot info with overall_length, center_to_center, width,\n perimeter, area\n - sketch_id: The sketch the slot was added to\n - profiles_count: Number of closed profiles in the sketch\n\nExample:\n # Draw a horizontal 30mm x 8mm slot\n result = await draw_slot(\n sketch_id=\"Sketch1\",\n length=30,\n width=8\n )\n\n # Draw a vertical slot using center-to-center measurement\n result = await draw_slot(\n sketch_id=\"Sketch1\",\n center_x=50, center_y=0,\n length=20,\n width=6,\n slot_type=\"center_to_center\",\n rotation_angle=90\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=slot", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_spline", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 630, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L630", + "signature": "sketch_id: str, points: List[dict], is_closed: bool=False", + "description": "Draw a spline (smooth curve) through control points in a sketch.\n\nCreates a fitted spline that passes smoothly through all specified\npoints. Useful for organic shapes and smooth contours.\n\n**All coordinates in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n points: List of point dicts with 'x' and 'y' coordinates in mm.\n Must have at least 2 points (3 for closed spline).\n Example: [{\"x\": 0, \"y\": 0}, {\"x\": 10, \"y\": 5}, {\"x\": 20, \"y\": 0}]\n is_closed: If True, create a closed spline loop. Default False.\n Closed splines require at least 3 points.\n\nReturns:\n Dict containing:\n - success: True if spline was created\n - curve: Curve info with id, type, points, point_count, is_closed\n - sketch_id: The sketch the spline was added to\n - profiles_count: Number of closed profiles (for closed splines)\n\nExample:\n # Draw an open spline through 4 points\n result = await draw_spline(\n sketch_id=\"Sketch1\",\n points=[\n {\"x\": 0, \"y\": 0},\n {\"x\": 20, \"y\": 15},\n {\"x\": 40, \"y\": -10},\n {\"x\": 60, \"y\": 5}\n ]\n )\n\n # Draw a closed spline (organic shape)\n result = await draw_spline(\n sketch_id=\"Sketch1\",\n points=[\n {\"x\": 0, \"y\": 20},\n {\"x\": 20, \"y\": 0},\n {\"x\": 0, \"y\": -20},\n {\"x\": -20, \"y\": 0}\n ],\n is_closed=True\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_point", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 695, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L695", + "signature": "sketch_id: str, x: float, y: float, is_construction: bool=False", + "description": "Draw a point in a sketch.\n\nCreates a sketch point that can be used as a reference for dimensions,\nconstraints, or as construction geometry for parametric designs.\n\n**All coordinates in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch to draw in.\n x: X coordinate in mm.\n y: Y coordinate in mm.\n is_construction: If True, mark as construction geometry. Default False.\n Construction geometry is used for reference but doesn't\n appear in profiles for extrusion.\n\nReturns:\n Dict containing:\n - success: True if point was created\n - point: Point info with id, position, is_construction\n - sketch_id: The sketch the point was added to\n\nExample:\n # Draw a reference point at the origin\n result = await draw_point(\n sketch_id=\"Sketch1\",\n x=0, y=0\n )\n\n # Draw a construction point for alignment\n result = await draw_point(\n sketch_id=\"Sketch1\",\n x=50, y=50,\n is_construction=True\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=point", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 754, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L754", + "signature": "sketch_id: str, distance: float, direction: str='positive', operation: str='new_body', profile_index: int=0, name: Optional[str]=None", + "description": "Extrude a sketch profile to create 3D geometry.\n\nTakes a closed profile from a sketch and extrudes it perpendicular\nto the sketch plane.\n\n**Distance in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch containing the profile.\n distance: Extrusion distance in mm. Must be positive.\n direction: Extrusion direction relative to sketch normal.\n - \"positive\": Extrude in positive normal direction (default)\n - \"negative\": Extrude in negative normal direction\n - \"symmetric\": Extrude equally in both directions\n operation: How to combine with existing bodies.\n - \"new_body\": Create a new body (default)\n - \"join\": Add to existing body\n - \"cut\": Subtract from existing body\n - \"intersect\": Keep only intersection\n profile_index: Index of the profile to extrude (0-based).\n Use 0 for the first/only profile.\n name: Optional name for the created body.\n\nReturns:\n Dict containing:\n - success: True if extrusion succeeded\n - feature: Feature information including id and type\n - bodies: List of created/modified bodies\n\nExample:\n # Create a sketch, draw a circle, and extrude it\n sketch = await create_sketch(plane=\"XY\", name=\"circle_sketch\")\n await draw_circle(sketch_id=sketch[\"sketch\"][\"id\"], center_x=0, center_y=0, radius=25)\n result = await extrude(sketch_id=sketch[\"sketch\"][\"id\"], distance=50)\n\n # Cut a hole using extrude with cut operation\n result = await extrude(\n sketch_id=\"hole_sketch\",\n distance=20,\n operation=\"cut\"\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 824, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L824", + "signature": "sketch_id: str, axis: str, angle: float=360.0, operation: str='new_body', profile_index: int=0, name: Optional[str]=None", + "description": "Revolve a sketch profile around an axis.\n\nCreates a solid of revolution by rotating a sketch profile\naround an axis.\n\n**Angle in degrees.**\n\nArgs:\n sketch_id: ID of the sketch containing the profile.\n axis: Axis to revolve around.\n - \"X\": X construction axis\n - \"Y\": Y construction axis\n - \"Z\": Z construction axis\n angle: Revolution angle in degrees. 360 for full revolution (default).\n operation: How to combine with existing bodies.\n - \"new_body\": Create a new body (default)\n - \"join\": Add to existing body\n - \"cut\": Subtract from existing body\n - \"intersect\": Keep only intersection\n profile_index: Index of the profile to revolve (0-based).\n name: Optional name for the created body.\n\nReturns:\n Dict containing:\n - success: True if revolve succeeded\n - feature: Feature information\n - bodies: List of created/modified bodies\n\nExample:\n # Create a sphere by revolving a semicircle\n # First draw a semicircle profile, then:\n result = await revolve(sketch_id=\"sphere_profile\", axis=\"Y\", angle=360)", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 885, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L885", + "signature": "body_id: str, edge_ids: List[str], radius: float", + "description": "Apply fillet (rounded edge) to body edges.\n\nRounds the specified edges with the given radius.\n\n**Radius in millimeters (mm).**\n\nArgs:\n body_id: ID of the body containing the edges.\n edge_ids: List of edge IDs to fillet. Get these from\n get_body_by_id with include_edges=True.\n radius: Fillet radius in mm. Must be positive.\n\nReturns:\n Dict containing:\n - success: True if fillet succeeded\n - feature: Feature information\n - radius: Applied radius\n\nExample:\n # Get edges from a body\n body = await get_body_by_id(body_id=\"Body1\", include_edges=True)\n\n # Apply 2mm fillet to all edges\n result = await fillet(\n body_id=\"Body1\",\n edge_ids=[e[\"id\"] for e in body[\"edges\"]],\n radius=2\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "chamfer", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 933, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L933", + "signature": "body_id: str, edge_ids: List[str], distance: float, distance2: Optional[float]=None", + "description": "Apply chamfer (beveled edge) to body edges.\n\nBevels the specified edges at the given distance(s).\n\n**Distance in millimeters (mm).**\n\nArgs:\n body_id: ID of the body containing the edges.\n edge_ids: List of edge IDs to chamfer.\n distance: Chamfer distance in mm. Must be positive.\n distance2: Optional second distance for asymmetric chamfer.\n If provided, creates an asymmetric chamfer with\n different distances on each face.\n\nReturns:\n Dict containing:\n - success: True if chamfer succeeded\n - feature: Feature information\n - distance: Applied distance(s)\n\nExample:\n # Apply 1mm chamfer to edges\n result = await chamfer(\n body_id=\"Body1\",\n edge_ids=[\"Body1_edge_0\", \"Body1_edge_1\"],\n distance=1\n )\n\n # Asymmetric chamfer (1mm x 2mm)\n result = await chamfer(\n body_id=\"Body1\",\n edge_ids=[\"Body1_edge_0\"],\n distance=1,\n distance2=2\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_hole", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 991, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L991", + "signature": "diameter: float, depth: float, body_id: Optional[str]=None, face_id: Optional[str]=None, x: float=0.0, y: float=0.0, name: Optional[str]=None, hole_type: str='simple'", + "description": "Create a hole in a body.\n\nCreates a cylindrical hole at the specified position.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n diameter: Hole diameter in mm. Must be positive.\n depth: Hole depth in mm. Must be positive.\n body_id: ID of the body to drill into.\n Either body_id or face_id must be provided.\n face_id: ID of the face to place the hole on.\n Overrides body_id if both are provided.\n x: X position of hole center in mm on the face.\n y: Y position of hole center in mm on the face.\n name: Optional name for the hole feature.\n hole_type: Type of hole.\n - \"simple\": Plain cylindrical hole (default)\n - \"countersink\": Hole with countersink\n - \"counterbore\": Hole with counterbore\n\nReturns:\n Dict containing:\n - success: True if hole was created\n - feature: Feature information including hole details\n - body_id: ID of the body the hole was made in\n\nExample:\n # Create a 6.5mm diameter, 10mm deep hole\n result = await create_hole(\n body_id=\"base_plate\",\n diameter=6.5,\n depth=10,\n x=15, y=15\n )\n\n # Create a countersink hole for a screw\n result = await create_hole(\n body_id=\"cover_plate\",\n diameter=5,\n depth=20,\n hole_type=\"countersink\"\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=hole", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sketch_mirror", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1071, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1071", + "signature": "sketch_id: str, curve_ids: List[str], mirror_line_id: str", + "description": "Mirror sketch entities across a line.\n\nCreates mirrored copies of the specified curves across a mirror line,\nuseful for creating symmetric geometry.\n\nArgs:\n sketch_id: ID of the sketch containing the curves.\n curve_ids: List of curve IDs to mirror. Get these from draw_* operations\n or get_sketch_by_id.\n mirror_line_id: ID of the line to mirror across. Must be a SketchLine\n (not a circle or arc).\n\nReturns:\n Dict containing:\n - success: True if mirror succeeded\n - mirrored_curves: List of new curve IDs created\n - original_curves: Original curve IDs that were mirrored\n - mirror_line_id: The mirror line used\n - sketch_id: The sketch ID\n - profiles_count: Number of closed profiles in sketch\n\nExample:\n # Draw a rectangle and mirror it across a vertical centerline\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n # Draw rectangle on left side\n rect = await draw_rectangle(sketch_id=sketch_id, x1=-50, y1=0, x2=-10, y2=30)\n\n # Draw vertical centerline\n line = await draw_line(sketch_id=sketch_id, start_x=0, start_y=-10, end_x=0, end_y=40)\n\n # Mirror rectangle across centerline\n result = await sketch_mirror(\n sketch_id=sketch_id,\n curve_ids=rect[\"curves\"],\n mirror_line_id=line[\"curve\"][\"id\"]\n )", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sketch_circular_pattern", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1129, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1129", + "signature": "sketch_id: str, curve_ids: List[str], count: int, center_x: float=0.0, center_y: float=0.0, total_angle: float=360.0", + "description": "Create a circular pattern of sketch entities.\n\nCopies the specified curves in a circular array around a center point.\nCommonly used for bolt hole patterns, gear teeth, and radial features.\n\n**Coordinates in millimeters (mm), angles in degrees.**\n\nArgs:\n sketch_id: ID of the sketch containing the curves.\n curve_ids: List of curve IDs to pattern.\n count: Total number of instances (including original). Must be 2-360.\n center_x: Pattern center X coordinate in mm. Default 0.\n center_y: Pattern center Y coordinate in mm. Default 0.\n total_angle: Total angle span in degrees. Default 360 (full circle).\n Use smaller values for partial patterns.\n\nReturns:\n Dict containing:\n - success: True if pattern succeeded\n - pattern_curves: List of new curve IDs created (excludes original)\n - original_curves: The original curve IDs\n - pattern: Pattern info with type, center, count, angles\n - sketch_id: The sketch ID\n - profiles_count: Number of closed profiles\n\nExample:\n # Create a 6-hole bolt pattern\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n # Draw one mounting hole\n hole = await draw_circle(sketch_id=sketch_id, center_x=40, center_y=0, radius=3)\n\n # Create 6-hole pattern around origin\n result = await sketch_circular_pattern(\n sketch_id=sketch_id,\n curve_ids=[hole[\"curve\"][\"id\"]],\n center_x=0, center_y=0,\n count=6\n )\n\n # Create partial pattern (180 degrees, 4 instances)\n result = await sketch_circular_pattern(\n sketch_id=sketch_id,\n curve_ids=[hole[\"curve\"][\"id\"]],\n count=4,\n total_angle=180\n )", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sketch_rectangular_pattern", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1206, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1206", + "signature": "sketch_id: str, curve_ids: List[str], x_count: int, y_count: int, x_spacing: float, y_spacing: float", + "description": "Create a rectangular pattern of sketch entities.\n\nCopies the specified curves in a rectangular grid array.\nCommonly used for mounting holes, ventilation patterns, and grid layouts.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch containing the curves.\n curve_ids: List of curve IDs to pattern.\n x_count: Number of columns. Must be >= 1.\n y_count: Number of rows. Must be >= 1.\n x_spacing: Column spacing in mm (horizontal distance between copies).\n y_spacing: Row spacing in mm (vertical distance between copies).\n\nReturns:\n Dict containing:\n - success: True if pattern succeeded\n - pattern_curves: List of new curve IDs created (excludes original)\n - original_curves: The original curve IDs\n - pattern: Pattern info with type, counts, spacing, total_instances\n - sketch_id: The sketch ID\n - profiles_count: Number of closed profiles\n\nExample:\n # Create a 4x3 grid of mounting slots\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n # Draw one slot\n slot = await draw_slot(\n sketch_id=sketch_id,\n center_x=0, center_y=0,\n length=15, width=5\n )\n\n # Create 4x3 pattern with 25mm horizontal and 20mm vertical spacing\n result = await sketch_rectangular_pattern(\n sketch_id=sketch_id,\n curve_ids=slot[\"curves\"],\n x_count=4,\n y_count=3,\n x_spacing=25,\n y_spacing=20\n )", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "project_geometry", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1280, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1280", + "signature": "sketch_id: str, entity_ids: List[str], project_type: str='standard'", + "description": "Project edges or faces from 3D bodies onto a sketch.\n\nProjects existing 3D geometry onto the sketch plane, creating reference\ncurves that can be used for further sketch operations. Useful for creating\nfeatures that reference existing geometry.\n\nArgs:\n sketch_id: ID of the target sketch.\n entity_ids: List of entity IDs to project. Can be:\n - Edge IDs (e.g., \"Body1_edge_0\")\n - Face IDs (e.g., \"Body1_face_0\")\n - Body IDs (e.g., \"body_0\") - projects all edges\n project_type: Type of projection:\n - \"standard\": Regular projection (default)\n - \"cut_edges\": Project only edges that intersect the\n sketch plane (silhouette edges)\n\nReturns:\n Dict containing:\n - success: True if projection succeeded\n - projected_curves: List of new curve IDs created\n - source_entities: The entities that were projected\n - project_type: The projection type used\n - sketch_id: The sketch ID\n - curves_created: Number of curves created\n\nExample:\n # Create a box, then project its top face edges onto a new sketch\n box = await create_box(width=50, depth=30, height=20)\n body_id = box[\"body\"][\"id\"]\n\n # Get body details to find top face\n body = await get_body_by_id(body_id=body_id, include_faces=True)\n\n # Create a new sketch at Z=25 (above the box)\n sketch = await create_sketch(plane=\"XY\", offset=25)\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n # Project the box edges onto the new sketch\n result = await project_geometry(\n sketch_id=sketch_id,\n entity_ids=[body_id]\n )", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_project", + "gapDetail": "Associative projection of supported native entities; projection-to-surface/wrap modes are not included.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_sketch_text", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1343, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1343", + "signature": "sketch_id: str, text: str, height: float, x: float=0.0, y: float=0.0, font_name: Optional[str]=None, is_bold: bool=False, is_italic: bool=False", + "description": "Add text to a sketch for engraving or embossing.\n\nCreates sketch text that generates profiles suitable for extrusion,\nenabling engraved or embossed text on parts. Useful for part numbers,\nlogos, labels, and decorative text.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the target sketch.\n text: Text content to add. Cannot be empty.\n height: Text height in mm. Must be positive. This is the height\n of capital letters.\n x: Text position X coordinate in mm. Default 0. This is the\n left edge of the text.\n y: Text position Y coordinate in mm. Default 0. This is the\n top edge of the text.\n font_name: Optional font name. Uses system default if not specified.\n Common fonts: \"Arial\", \"Times New Roman\", \"Courier New\"\n is_bold: Make text bold. Default False.\n is_italic: Make text italic. Default False.\n\nReturns:\n Dict containing:\n - success: True if text was created\n - text: Text info with content, position, height, font settings\n - curves: List of curve IDs created (text outlines)\n - sketch_id: The sketch ID\n - profiles_count: Number of closed profiles (for extrusion)\n\nExample:\n # Add a part number to a sketch for engraving\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n result = await add_sketch_text(\n sketch_id=sketch_id,\n text=\"PART-001\",\n height=5,\n x=10, y=10,\n font_name=\"Arial\",\n is_bold=True\n )\n\n # Extrude the text as a cut for engraving\n await extrude(\n sketch_id=sketch_id,\n distance=0.5,\n direction=\"negative\",\n operation=\"cut\"\n )", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "wrap_sketch_to_surface", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1429, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1429", + "signature": "sketch_id: str, face_id: str, projection_type: str='closest_point', direction_axis: Optional[str]=None, create_new_sketch: bool=True", + "description": "Wrap sketch curves onto a curved surface using projection.\n\nProjects 2D sketch geometry (curves, shapes) onto curved surfaces\nlike cylinders, enabling text/logos to conform to cylindrical objects.\nUses Fusion 360's `projectToSurface()` method.\n\n**Use this for:** Adding logos or patterns to bottles, wrapping text\naround pipes, creating curved labels on cylindrical objects.\n\nArgs:\n sketch_id: ID of the source sketch containing curves to wrap.\n Get this from create_sketch or get_sketches.\n face_id: ID of the target curved face (e.g., cylinder surface).\n Get face IDs from get_body_by_id with include_faces=True.\n projection_type: Projection method:\n - \"closest_point\": Project curves to closest point on surface (default)\n - \"along_vector\": Project along a specified axis direction\n direction_axis: Required when projection_type is \"along_vector\".\n Options: \"X\", \"Y\", \"Z\" for construction axes.\n create_new_sketch: If True (default), create a new sketch for the\n projected curves. If False, add to existing sketch.\n\nReturns:\n Dict containing:\n - success: True if projection succeeded\n - wrapped_curves: List of new curve IDs created on the surface\n - wrapped_sketch_id: ID of the sketch containing wrapped curves\n - source_sketch_id: Original sketch ID\n - face_id: Target face ID\n - projection_type: Projection method used\n - curves_created: Number of curves created\n - profiles_count: Number of closed profiles in wrapped sketch\n\nExample:\n # Create a cylinder and wrap a shape onto it\n cyl = await create_cylinder(radius=25, height=100)\n body = await get_body_by_id(body_id=cyl[\"body\"][\"id\"], include_faces=True)\n # Find the cylindrical face (not top/bottom)\n cyl_face_id = body[\"faces\"][1][\"id\"]\n\n # Create a sketch with shapes to wrap\n sketch = await create_sketch(plane=\"XY\")\n await draw_circle(sketch_id=sketch[\"sketch\"][\"id\"],\n center_x=0, center_y=0, radius=5)\n\n # Wrap the sketch onto the cylinder\n result = await wrap_sketch_to_surface(\n sketch_id=sketch[\"sketch\"][\"id\"],\n face_id=cyl_face_id\n )\n\n # The wrapped curves can now be used for emboss/extrude\n # if profiles were created", + "coverage": "script-only", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_horizontal", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1510, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1510", + "signature": "sketch_id: str, curve_id: str", + "description": "Add a horizontal constraint to a line.\n\nConstrains a line to be horizontal (parallel to the sketch X axis).\nThe line will maintain its length but rotate to become horizontal.\n\n**Use for:** Ensuring edges are aligned with the X axis, creating\nlevel surfaces, maintaining horizontal alignment.\n\nArgs:\n sketch_id: ID of the sketch containing the line.\n curve_id: ID of the line to constrain. Must be a SketchLine\n (not a circle or arc).\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve_id\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status including\n is_fully_constrained, under_constrained_count\n\nExample:\n # Draw a rectangle and make the top edge horizontal\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n rect = await draw_rectangle(sketch_id=sketch_id, x1=0, y1=0, x2=50, y2=30)\n\n # Get line IDs from rectangle (4 lines)\n # Constrain top edge to be horizontal\n result = await add_constraint_horizontal(\n sketch_id=sketch_id,\n curve_id=rect[\"curves\"][0] # Top edge\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_vertical", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1561, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1561", + "signature": "sketch_id: str, curve_id: str", + "description": "Add a vertical constraint to a line.\n\nConstrains a line to be vertical (parallel to the sketch Y axis).\nThe line will maintain its length but rotate to become vertical.\n\n**Use for:** Ensuring edges are aligned with the Y axis, creating\nupright surfaces, maintaining vertical alignment.\n\nArgs:\n sketch_id: ID of the sketch containing the line.\n curve_id: ID of the line to constrain. Must be a SketchLine\n (not a circle or arc).\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve_id\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Draw a rectangle and make a side edge vertical\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n rect = await draw_rectangle(sketch_id=sketch_id, x1=0, y1=0, x2=50, y2=30)\n\n # Constrain left edge to be vertical\n result = await add_constraint_vertical(\n sketch_id=sketch_id,\n curve_id=rect[\"curves\"][1] # Left edge\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_coincident", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1610, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1610", + "signature": "sketch_id: str, entity1_id: str, entity2_id: str", + "description": "Add a coincident constraint between two entities.\n\nMakes two points occupy the same location, or places a point on a curve.\nThis is fundamental for connecting sketch geometry.\n\n**Use for:** Connecting line endpoints, placing points on curves,\nensuring geometry meets at specific locations.\n\nArgs:\n sketch_id: ID of the sketch containing the entities.\n entity1_id: ID of the first entity (point or curve endpoint).\n entity2_id: ID of the second entity (point or curve).\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, entity IDs\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Connect two lines at their endpoints\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n line1 = await draw_line(sketch_id=sketch_id, start_x=0, start_y=0, end_x=50, end_y=0)\n line2 = await draw_line(sketch_id=sketch_id, start_x=50, start_y=0, end_x=50, end_y=30)\n\n # Make endpoint of line1 coincident with startpoint of line2\n # (The lines already share this point from drawing)", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_perpendicular", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1660, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1660", + "signature": "sketch_id: str, curve1_id: str, curve2_id: str", + "description": "Add a perpendicular constraint between two lines.\n\nMakes two lines perpendicular (at exactly 90 degrees to each other).\nOne or both lines will rotate to achieve perpendicularity.\n\n**Use for:** Creating right angles, L-shaped brackets, rectangular\nfeatures, ensuring orthogonal alignment.\n\nArgs:\n sketch_id: ID of the sketch containing the lines.\n curve1_id: ID of the first line.\n curve2_id: ID of the second line.\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve IDs\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Create two lines and make them perpendicular\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n line1 = await draw_line(sketch_id=sketch_id, start_x=0, start_y=0, end_x=50, end_y=0)\n line2 = await draw_line(sketch_id=sketch_id, start_x=0, start_y=0, end_x=0, end_y=30)\n\n result = await add_constraint_perpendicular(\n sketch_id=sketch_id,\n curve1_id=line1[\"curve\"][\"id\"],\n curve2_id=line2[\"curve\"][\"id\"]\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_parallel", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1713, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1713", + "signature": "sketch_id: str, curve1_id: str, curve2_id: str", + "description": "Add a parallel constraint between two lines.\n\nMakes two lines parallel (same direction). One or both lines will\nrotate to achieve parallelism while maintaining their lengths.\n\n**Use for:** Creating parallel edges, maintaining consistent spacing,\nensuring features remain aligned in the same direction.\n\nArgs:\n sketch_id: ID of the sketch containing the lines.\n curve1_id: ID of the first line.\n curve2_id: ID of the second line.\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve IDs\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Create two parallel lines (like rails)\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n line1 = await draw_line(sketch_id=sketch_id, start_x=0, start_y=0, end_x=100, end_y=0)\n line2 = await draw_line(sketch_id=sketch_id, start_x=0, start_y=20, end_x=100, end_y=20)\n\n result = await add_constraint_parallel(\n sketch_id=sketch_id,\n curve1_id=line1[\"curve\"][\"id\"],\n curve2_id=line2[\"curve\"][\"id\"]\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_tangent", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1766, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1766", + "signature": "sketch_id: str, curve1_id: str, curve2_id: str", + "description": "Add a tangent constraint between two curves.\n\nMakes two curves tangent (smooth transition) at their connection point.\nCommonly used for smooth transitions between lines and arcs.\n\n**Use for:** Creating smooth curves, filleted corners, cam profiles,\ntransitions between straight and curved segments.\n\nArgs:\n sketch_id: ID of the sketch containing the curves.\n curve1_id: ID of the first curve (line, arc, or circle).\n curve2_id: ID of the second curve (line, arc, or circle).\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve IDs\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Create a line tangent to a circle\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n circle = await draw_circle(sketch_id=sketch_id, center_x=0, center_y=0, radius=20)\n line = await draw_line(sketch_id=sketch_id, start_x=20, start_y=0, end_x=50, end_y=10)\n\n result = await add_constraint_tangent(\n sketch_id=sketch_id,\n curve1_id=circle[\"curve\"][\"id\"],\n curve2_id=line[\"curve\"][\"id\"]\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_equal", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1819, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1819", + "signature": "sketch_id: str, curve1_id: str, curve2_id: str", + "description": "Add an equal constraint between two curves.\n\nMakes two curves equal in size (same length for lines, same radius\nfor circles/arcs). Changing one will change the other.\n\n**Use for:** Ensuring symmetric features, matching hole sizes,\ncreating uniform spacing, maintaining equal dimensions.\n\nArgs:\n sketch_id: ID of the sketch containing the curves.\n curve1_id: ID of the first curve.\n curve2_id: ID of the second curve. Must be same type as curve1.\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve IDs\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Create two circles with equal radius\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n circle1 = await draw_circle(sketch_id=sketch_id, center_x=-30, center_y=0, radius=15)\n circle2 = await draw_circle(sketch_id=sketch_id, center_x=30, center_y=0, radius=10)\n\n # Make circles equal - circle2 will resize to match circle1\n result = await add_constraint_equal(\n sketch_id=sketch_id,\n curve1_id=circle1[\"curve\"][\"id\"],\n curve2_id=circle2[\"curve\"][\"id\"]\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_concentric", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1873, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1873", + "signature": "sketch_id: str, curve1_id: str, curve2_id: str", + "description": "Add a concentric constraint between two circles or arcs.\n\nMakes two circles or arcs share the same center point.\nUseful for creating rings, washers, and nested circular features.\n\n**Use for:** Creating concentric circles, rings, washers, nested\nholes, features that must share a common center.\n\nArgs:\n sketch_id: ID of the sketch containing the curves.\n curve1_id: ID of the first circle or arc.\n curve2_id: ID of the second circle or arc.\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, curve IDs\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Create concentric circles (like a washer)\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n outer = await draw_circle(sketch_id=sketch_id, center_x=0, center_y=0, radius=20)\n inner = await draw_circle(sketch_id=sketch_id, center_x=5, center_y=5, radius=8)\n\n # Make circles concentric - inner will move to share center\n result = await add_constraint_concentric(\n sketch_id=sketch_id,\n curve1_id=outer[\"curve\"][\"id\"],\n curve2_id=inner[\"curve\"][\"id\"]\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint_fix", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1927, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1927", + "signature": "sketch_id: str, entity_id: str", + "description": "Fix a point or curve in place.\n\nFixes the entity at its current position so it cannot move during\nconstraint solving. Useful for anchoring geometry.\n\n**Use for:** Anchoring reference points, preventing geometry from\nmoving, establishing fixed positions for subsequent constraints.\n\nArgs:\n sketch_id: ID of the sketch containing the entity.\n entity_id: ID of the point or curve to fix.\n\nReturns:\n Dict containing:\n - success: True if constraint was added\n - constraint: Constraint info with id, type, entity_id\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Fix the origin point of a rectangle\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n rect = await draw_rectangle(sketch_id=sketch_id, x1=0, y1=0, x2=50, y2=30)\n\n # Fix one corner of the rectangle\n result = await add_constraint_fix(\n sketch_id=sketch_id,\n entity_id=rect[\"curves\"][0] # Fix first line\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_dimension", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 1975, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L1975", + "signature": "sketch_id: str, dimension_type: str, entity1_id: str, value: float, entity2_id: Optional[str]=None, text_position_x: Optional[float]=None, text_position_y: Optional[float]=None", + "description": "Add a dimensional constraint to a sketch.\n\nAdds a driving dimension that controls geometry size. Changing the\ndimension value will update the geometry. This is the primary way\nto create parametric, precisely-sized sketches.\n\n**Values in mm for distance/radius/diameter, degrees for angle.**\n\nArgs:\n sketch_id: ID of the sketch.\n dimension_type: Type of dimension:\n - \"distance\": Distance between two entities or line length\n - \"radius\": Radius of a circle or arc\n - \"diameter\": Diameter of a circle or arc\n - \"angle\": Angle between two lines\n entity1_id: ID of the first entity.\n value: Dimension value in mm (distance/radius/diameter) or\n degrees (angle). Must be positive for non-angle types.\n entity2_id: ID of second entity. Required for:\n - distance between two separate entities\n - angle between two lines\n Not needed for:\n - line length (uses line endpoints)\n - radius/diameter (uses circle/arc)\n text_position_x: Optional X position for dimension text in mm.\n text_position_y: Optional Y position for dimension text in mm.\n\nReturns:\n Dict containing:\n - success: True if dimension was added\n - dimension: Dimension info with id, type, entity IDs,\n requested_value, actual_value, parameter_name\n - sketch_id: The sketch ID\n - sketch_status: Current constraint status\n\nExample:\n # Add dimensions to a rectangle to make it exactly 50x30mm\n sketch = await create_sketch(plane=\"XY\")\n sketch_id = sketch[\"sketch\"][\"id\"]\n\n rect = await draw_rectangle(sketch_id=sketch_id, x1=0, y1=0, x2=40, y2=25)\n # rect[\"curves\"] contains 4 line IDs\n\n # Add horizontal dimension (width = 50mm)\n await add_dimension(\n sketch_id=sketch_id,\n dimension_type=\"distance\",\n entity1_id=rect[\"curves\"][0], # Top line\n value=50\n )\n\n # Add vertical dimension (height = 30mm)\n await add_dimension(\n sketch_id=sketch_id,\n dimension_type=\"distance\",\n entity1_id=rect[\"curves\"][1], # Left line\n value=30\n )\n\n # Add radius dimension to a circle\n circle = await draw_circle(sketch_id=sketch_id, center_x=25, center_y=15, radius=8)\n await add_dimension(\n sketch_id=sketch_id,\n dimension_type=\"diameter\",\n entity1_id=circle[\"curve\"][\"id\"],\n value=20 # 20mm diameter (10mm radius)\n )\n\n # Add angle dimension between two lines\n await add_dimension(\n sketch_id=sketch_id,\n dimension_type=\"angle\",\n entity1_id=rect[\"curves\"][0],\n entity2_id=rect[\"curves\"][1],\n value=90 # 90 degrees\n )", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_dimension", + "gapDetail": "Distance/horizontal/vertical/radius/diameter/angle; expressions and named model parameters.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2083, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2083", + "signature": "profile_sketch_id: str, path_sketch_id: str, profile_index: int=0, operation: str='new_body', orientation: str='perpendicular', name: Optional[str]=None", + "description": "Sweep a 2D profile along a path to create complex 3D shapes.\n\nSweep takes a closed 2D profile and extrudes it along a 3D path,\ncreating tubular or channel-like shapes. Essential for pipes,\ncables, handrails, and any geometry that follows a curved path.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n profile_sketch_id: ID of the sketch containing the closed profile\n to sweep. Must have at least one closed profile.\n path_sketch_id: ID of the sketch containing the sweep path.\n The path can be a line, arc, spline, or connected\n curves.\n profile_index: Which profile to sweep if sketch has multiple\n closed profiles. Default 0 (first profile).\n operation: Boolean operation for the resulting body:\n - \"new_body\": Create as a new solid body (default)\n - \"join\": Add material to existing body\n - \"cut\": Remove material from existing body\n - \"intersect\": Keep only overlapping volume\n orientation: How the profile aligns during sweep:\n - \"perpendicular\": Profile stays perpendicular to path (default)\n - \"parallel\": Profile maintains fixed orientation\n name: Optional name for the created body.\n\nReturns:\n Dict containing:\n - success: True if sweep succeeded\n - feature: Feature info with id and type\n - bodies: List of created/modified bodies\n - orientation: The orientation mode used\n\nExample:\n # Create a pipe by sweeping a circle along a path\n # 1. Create the profile sketch (circle for pipe cross-section)\n profile_sketch = await create_sketch(plane=\"XY\")\n profile_id = profile_sketch[\"sketch\"][\"id\"]\n await draw_circle(sketch_id=profile_id, center_x=0, center_y=0, radius=5)\n\n # 2. Create the path sketch (curved line for pipe path)\n path_sketch = await create_sketch(plane=\"XZ\")\n path_id = path_sketch[\"sketch\"][\"id\"]\n await draw_spline(sketch_id=path_id, points=[\n {\"x\": 0, \"y\": 0},\n {\"x\": 50, \"y\": 20},\n {\"x\": 100, \"y\": 0}\n ])\n\n # 3. Sweep to create pipe\n result = await sweep(\n profile_sketch_id=profile_id,\n path_sketch_id=path_id\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2165, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2165", + "signature": "sketch_ids: List[str], profile_indices: Optional[List[int]]=None, operation: str='new_body', is_solid: bool=True, is_closed: bool=False, name: Optional[str]=None, target_body_id: Optional[str]=None", + "description": "Create a smooth 3D shape by transitioning between multiple profiles.\n\nLoft creates geometry by smoothly blending between two or more 2D\nprofiles on different planes. Perfect for organic shapes, transitions\nbetween different cross-sections, and aerodynamic forms.\n\n**Profiles must be on different planes (offset in Z or parallel planes).**\n\nArgs:\n sketch_ids: List of sketch IDs in order from start to end.\n Minimum 2 sketches required. Each must have a closed\n profile. Order determines the loft direction.\n profile_indices: Optional list of profile indices for each sketch\n if sketches have multiple profiles. Default uses\n first profile (index 0) from each sketch.\n operation: Boolean operation for the resulting body:\n - \"new_body\": Create as a new solid body (default)\n - \"join\": Add material to existing body\n - \"cut\": Remove material from existing body\n - \"intersect\": Keep only overlapping volume\n is_solid: Create solid (True) or surface (False). Default True.\n is_closed: Close the loft ends to create a hollow shape.\n Default False.\n name: Optional name for the created body.\n target_body_id: Body ID for boolean operations (cut/join/intersect).\n **Required** when operation is \"cut\", \"join\", or\n \"intersect\". This specifies which existing body the\n loft will interact with.\n\nReturns:\n Dict containing:\n - success: True if loft succeeded\n - feature: Feature info with id and type\n - bodies: List of created/modified bodies\n - sections_count: Number of profiles used\n - is_solid, is_closed: Settings used\n\nExample:\n # Create a tapered shape from large square to small circle\n # 1. Create bottom profile (large square)\n bottom_sketch = await create_sketch(plane=\"XY\", offset=0)\n bottom_id = bottom_sketch[\"sketch\"][\"id\"]\n await draw_rectangle(sketch_id=bottom_id, x1=-25, y1=-25, x2=25, y2=25)\n\n # 2. Create top profile (small circle)\n top_sketch = await create_sketch(plane=\"XY\", offset=50)\n top_id = top_sketch[\"sketch\"][\"id\"]\n await draw_circle(sketch_id=top_id, center_x=0, center_y=0, radius=10)\n\n # 3. Loft between them\n result = await loft(sketch_ids=[bottom_id, top_id])\n\n # 4. Create inner profiles and cut to hollow out\n inner_bottom = await create_sketch(plane=\"XY\", offset=0)\n await draw_rectangle(sketch_id=inner_bottom[\"sketch\"][\"id\"], x1=-20, y1=-20, x2=20, y2=20)\n inner_top = await create_sketch(plane=\"XY\", offset=50)\n await draw_circle(sketch_id=inner_top[\"sketch\"][\"id\"], center_x=0, center_y=0, radius=8)\n await loft(\n sketch_ids=[inner_bottom[\"sketch\"][\"id\"], inner_top[\"sketch\"][\"id\"]],\n operation=\"cut\",\n target_body_id=result[\"bodies\"][0][\"id\"]\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sphere", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2257, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2257", + "signature": "radius: float, x: float=0.0, y: float=0.0, z: float=0.0, name: Optional[str]=None, component_id: Optional[str]=None", + "description": "Create a solid sphere primitive.\n\nCreates a perfect spherical body at the specified position.\nUseful for balls, domes, beads, and spherical features.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n radius: Sphere radius in mm. Must be positive.\n x: Center X position in mm. Default 0.\n y: Center Y position in mm. Default 0.\n z: Center Z position in mm. Default 0.\n name: Optional name for the body.\n component_id: Optional component ID to create sphere in.\n\nReturns:\n Dict containing:\n - success: True if sphere was created\n - body: Body info with id, name, bounding box\n - feature: Feature info with id and type\n - sphere: Geometry info with center, radius, diameter,\n volume, and surface_area\n\nExample:\n # Create a ball bearing\n bearing = await create_sphere(radius=5, name=\"BallBearing\")\n\n # Create a sphere at a specific location\n await create_sphere(radius=10, x=50, y=0, z=25, name=\"Dome\")", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_torus", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2313, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2313", + "signature": "major_radius: float, minor_radius: float, x: float=0.0, y: float=0.0, z: float=0.0, name: Optional[str]=None, component_id: Optional[str]=None", + "description": "Create a torus (donut/ring shape).\n\nCreates a donut-shaped solid body. The major_radius defines the\ndistance from center to the tube center, and minor_radius defines\nthe tube thickness. Useful for O-rings, handles, and decorative\nelements.\n\n**All dimensions in millimeters (mm).**\n**Constraint: minor_radius must be less than major_radius.**\n\nArgs:\n major_radius: Distance from torus center to tube center in mm.\n Must be positive and greater than minor_radius.\n minor_radius: Tube radius in mm. Must be positive and less\n than major_radius.\n x: Center X position in mm. Default 0.\n y: Center Y position in mm. Default 0.\n z: Center Z position in mm. Default 0.\n name: Optional name for the body.\n component_id: Optional component ID to create torus in.\n\nReturns:\n Dict containing:\n - success: True if torus was created\n - body: Body info with id, name, bounding box\n - feature: Feature info with id and type\n - torus: Geometry info with center, major_radius, minor_radius,\n volume, and surface_area\n\nExample:\n # Create an O-ring\n oring = await create_torus(\n major_radius=20, # Ring diameter 40mm\n minor_radius=2, # Tube diameter 4mm\n name=\"O-Ring\"\n )\n\n # Create a decorative ring at position\n await create_torus(\n major_radius=15,\n minor_radius=5,\n x=0, y=0, z=50,\n name=\"DecoRing\"\n )", + "coverage": "composable", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_coil", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2387, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2387", + "signature": "diameter: float, pitch: float, revolutions: float, section_size: float, section_type: str='circular', operation: str='new_body', name: Optional[str]=None, x: float=0.0, y: float=0.0, z: float=0.0, component_id: Optional[str]=None", + "description": "Create a helix/spring shape (coil).\n\n**NOT SUPPORTED: This tool will return an error.**\n\nThe Fusion 360 API does not expose a createInput() method for\nCoilFeatures, making programmatic coil creation impossible.\n\n**Workarounds:**\n1. Create coils manually in Fusion 360: Solid > Create > Coil\n2. For spring-like shapes, use sweep() with a helical path sketch\n\nArgs:\n diameter: Coil diameter in mm (outer diameter of the helix).\n pitch: Distance between coils (vertical rise per revolution) in mm.\n revolutions: Number of complete turns.\n section_size: Wire/section diameter in mm.\n section_type: \"circular\" or \"square\"\n operation: \"new_body\", \"join\", \"cut\", \"intersect\"\n name: Optional name for the body.\n x: X position of coil center in mm.\n y: Y position of coil center in mm.\n z: Z position (base of coil) in mm.\n component_id: Optional component ID.\n\nReturns:\n Dict with error explaining the API limitation.", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_pipe", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2455, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2455", + "signature": "path_sketch_id: str, outer_diameter: float, wall_thickness: float, operation: str='new_body', name: Optional[str]=None", + "description": "Create a hollow tubular shape (pipe) along a path.\n\nCreates a hollow pipe that follows a sketch path. Unlike sweep\n(which creates solid geometry), pipe automatically creates a\nhollow tube with specified wall thickness. Perfect for plumbing,\ntubing, cables, and conduits.\n\n**All dimensions in millimeters (mm).**\n**Constraint: wall_thickness must be less than outer_diameter/2.**\n\nArgs:\n path_sketch_id: ID of the sketch containing the pipe path.\n Can be a line, arc, spline, or connected curves.\n outer_diameter: Outer pipe diameter in mm. Must be positive.\n wall_thickness: Pipe wall thickness in mm. Must be positive\n and less than half the outer diameter.\n operation: Boolean operation for the resulting body:\n - \"new_body\": Create as a new solid body (default)\n - \"join\": Add material to existing body\n - \"cut\": Remove material from existing body\n - \"intersect\": Keep only overlapping volume\n name: Optional name for the body.\n\nReturns:\n Dict containing:\n - success: True if pipe was created\n - feature: Feature info with id and type\n - bodies: List of created/modified bodies\n - pipe: Geometry info with outer_diameter, inner_diameter,\n wall_thickness, path_sketch_id\n\nExample:\n # Create a curved pipe for plumbing\n # 1. Create the path sketch\n path_sketch = await create_sketch(plane=\"XZ\")\n path_id = path_sketch[\"sketch\"][\"id\"]\n await draw_arc(\n sketch_id=path_id,\n center_x=0, center_y=0,\n radius=50,\n start_angle=0, end_angle=90\n )\n\n # 2. Create the pipe along the path\n pipe = await create_pipe(\n path_sketch_id=path_id,\n outer_diameter=20, # 20mm OD\n wall_thickness=2, # 2mm wall = 16mm ID\n name=\"ElbowPipe\"\n )\n # inner_diameter = 20 - 2*2 = 16mm\n\n # Create a straight pipe\n straight_path = await create_sketch(plane=\"XY\")\n path_id2 = straight_path[\"sketch\"][\"id\"]\n await draw_line(sketch_id=path_id2, start_x=0, start_y=0, end_x=100, end_y=0)\n\n await create_pipe(\n path_sketch_id=path_id2,\n outer_diameter=10,\n wall_thickness=1,\n name=\"StraightPipe\"\n )", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2545, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2545", + "signature": "entity_ids: List[str], entity_type: str, x_count: int, x_spacing: float, x_axis: str='X', y_count: int=1, y_spacing: float=0.0, y_axis: Optional[str]=None", + "description": "Create a rectangular (linear) pattern of bodies or features.\n\nCreates copies of existing bodies or features arranged in a rectangular\ngrid pattern. Perfect for mounting hole patterns, ventilation grids,\nlinear arrays of components, and any repeated geometry.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n entity_ids: List of body IDs or feature IDs to pattern.\n Get body IDs from create_box, create_cylinder, etc.\n Get feature IDs from extrude, fillet, chamfer, etc.\n entity_type: Type of entities being patterned:\n - \"bodies\": Pattern solid bodies\n - \"features\": Pattern timeline features\n x_count: Number of columns (instances in first direction).\n Must be at least 2.\n x_spacing: Spacing between columns in mm. Must be positive.\n x_axis: Direction for first pattern axis.\n - \"X\": Along X axis (default)\n - \"Y\": Along Y axis\n - \"Z\": Along Z axis\n Or provide an edge_id for custom direction.\n y_count: Number of rows (instances in second direction).\n Default 1 for linear (1D) patterns.\n y_spacing: Spacing between rows in mm. Required if y_count > 1.\n y_axis: Direction for second pattern axis. If not specified,\n defaults to perpendicular to x_axis.\n\nReturns:\n Dict containing:\n - success: True if pattern was created\n - feature: Pattern feature info with id and type\n - pattern: Pattern details with x_count, x_spacing, y_count,\n y_spacing, total_instances\n - source_entities: Original entity IDs that were patterned\n - created_instances: IDs of new pattern instances\n\nExample:\n # Create a 4x3 grid of mounting holes\n # First create a single hole\n box = await create_box(width=100, depth=80, height=10)\n body_id = box[\"body\"][\"id\"]\n\n # Create hole at first position\n await create_hole(body_id=body_id, diameter=5, depth=10, x=-35, y=-25)\n\n # Pattern the hole in a 4x3 grid\n result = await rectangular_pattern(\n entity_ids=[body_id],\n entity_type=\"bodies\",\n x_count=4,\n x_spacing=25,\n y_count=3,\n y_spacing=20\n )\n # Creates 12 total instances (4 columns x 3 rows)\n\n # Create a linear 1D pattern (single row)\n result = await rectangular_pattern(\n entity_ids=[\"body_0\"],\n entity_type=\"bodies\",\n x_count=5,\n x_spacing=20\n )\n # Creates 5 instances in a row", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "circular_pattern", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2644, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2644", + "signature": "entity_ids: List[str], entity_type: str, axis: str, count: int, total_angle: float=360.0, is_symmetric: bool=True", + "description": "Create a circular (radial) pattern of bodies or features.\n\nCreates copies of existing bodies or features arranged in a circular\npattern around an axis. Perfect for bolt hole patterns, gear teeth,\nturbine blades, wheel spokes, and any radially symmetric geometry.\n\n**Angles in degrees.**\n\nArgs:\n entity_ids: List of body IDs or feature IDs to pattern.\n entity_type: Type of entities being patterned:\n - \"bodies\": Pattern solid bodies\n - \"features\": Pattern timeline features\n axis: Rotation axis for the pattern:\n - \"X\": Around X axis\n - \"Y\": Around Y axis\n - \"Z\": Around Z axis (most common for horizontal patterns)\n Or provide an axis_id for custom rotation axis.\n count: Total number of instances (including the original).\n Must be at least 2.\n total_angle: Total angle span in degrees (default 360 for full circle).\n Use smaller values for partial patterns (e.g., 180 for\n half circle, 90 for quarter circle).\n is_symmetric: If True, distribute instances evenly within total_angle.\n If False, angle is measured between adjacent instances.\n Default True.\n\nReturns:\n Dict containing:\n - success: True if pattern was created\n - feature: Pattern feature info with id and type\n - pattern: Pattern details with axis, count, total_angle,\n angle_between, is_symmetric\n - source_entities: Original entity IDs that were patterned\n - created_instances: IDs of new pattern instances\n\nExample:\n # Create a 6-bolt flange pattern\n # First create a base plate with one mounting hole\n plate = await create_cylinder(radius=50, height=10)\n plate_id = plate[\"body\"][\"id\"]\n\n # Create mounting hole at radius 35mm\n await create_hole(body_id=plate_id, diameter=8, depth=10, x=35, y=0)\n\n # Pattern the hole around Z axis (6 holes, 60\u00b0 apart)\n result = await circular_pattern(\n entity_ids=[plate_id],\n entity_type=\"bodies\",\n axis=\"Z\",\n count=6\n )\n # Creates 6 evenly spaced holes at 0\u00b0, 60\u00b0, 120\u00b0, 180\u00b0, 240\u00b0, 300\u00b0\n\n # Create a partial pattern (quarter arc)\n result = await circular_pattern(\n entity_ids=[\"body_0\"],\n entity_type=\"bodies\",\n axis=\"Z\",\n count=4,\n total_angle=90\n )\n # Creates 4 instances within 90\u00b0 arc", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror_feature", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2736, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2736", + "signature": "entity_ids: List[str], entity_type: str, mirror_plane: str", + "description": "Mirror bodies or features across a plane.\n\nCreates a mirrored copy of existing bodies or features across a\nsymmetry plane. Essential for creating symmetric designs efficiently -\ndesign one half, then mirror to create the other half.\n\nArgs:\n entity_ids: List of body IDs or feature IDs to mirror.\n entity_type: Type of entities being mirrored:\n - \"bodies\": Mirror solid bodies\n - \"features\": Mirror timeline features\n mirror_plane: The symmetry plane for mirroring:\n - \"XY\": Mirror across the XY plane (Z=0)\n - \"YZ\": Mirror across the YZ plane (X=0)\n - \"XZ\": Mirror across the XZ plane (Y=0)\n Or provide a plane_id or face_id for custom plane.\n\nReturns:\n Dict containing:\n - success: True if mirror was created\n - feature: Mirror feature info with id and type\n - mirror: Mirror details with plane used\n - source_entities: Original entity IDs that were mirrored\n - created_instances: IDs of new mirrored instances\n\nExample:\n # Design one half of a symmetric bracket, then mirror it\n # Create left half of bracket\n left_half = await create_box(width=50, depth=30, height=20, x=-25)\n left_id = left_half[\"body\"][\"id\"]\n\n # Add features to left half\n await fillet(body_id=left_id, edge_ids=[\"...\"], radius=2)\n\n # Mirror to create right half\n result = await mirror_feature(\n entity_ids=[left_id],\n entity_type=\"bodies\",\n mirror_plane=\"YZ\" # Mirror across YZ plane (X=0)\n )\n # Creates a complete symmetric bracket\n\n # Mirror a feature instead of a body\n extrusion = await extrude(sketch_id=\"...\", distance=10)\n feature_id = extrusion[\"feature\"][\"id\"]\n\n result = await mirror_feature(\n entity_ids=[feature_id],\n entity_type=\"features\",\n mirror_plane=\"XZ\" # Mirror across XZ plane (Y=0)\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_thread", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2809, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2809", + "signature": "face_id: str, thread_type: str, thread_size: str, is_internal: bool=False, is_full_length: bool=True, thread_length: Optional[float]=None, is_modeled: bool=False", + "description": "Add threads to a cylindrical face.\n\nCreates threaded features on cylindrical faces for bolts, screws, nuts,\nand threaded holes. Supports standard thread profiles like ISO Metric,\nUnified Thread Standard (UTS), etc.\n\n**Use this when**: Creating bolts, screws, nuts, threaded rods, or\nthreaded holes for mechanical assemblies.\n\nArgs:\n face_id: ID of the cylindrical face to add thread to.\n Must be a cylindrical face from a shaft or hole.\n Get face IDs from get_body_by_id with include_faces=True.\n thread_type: Thread standard/profile. Common options:\n - \"ISO Metric profile\": Standard metric threads (M6, M8, etc.)\n - \"ANSI Metric M Profile\": ANSI metric threads\n - \"ANSI Unified Screw Threads\": UNC, UNF threads\n - \"ISO Metric Trapezoidal Threads\": Trapezoidal/acme threads\n thread_size: Thread designation matching the standard. Examples:\n - For ISO Metric: \"M6x1\", \"M8x1.25\", \"M10x1.5\", \"M12x1.75\"\n - For ANSI: \"1/4-20 UNC\", \"3/8-16 UNC\"\n is_internal: True for internal threads (nuts/holes),\n False for external threads (bolts/screws). Default False.\n is_full_length: True to thread the entire face length (default),\n False to specify a custom thread_length.\n thread_length: Custom thread length in mm. Only used when\n is_full_length is False.\n is_modeled: True to create actual 3D thread geometry (slower but\n visible in renders). False creates cosmetic threads\n (faster, shown as decorative lines). Default False.\n\nReturns:\n Dict containing:\n - success: True if thread was created\n - feature: Thread feature info with id and type\n - thread: Thread specification including type, size, designation,\n class, pitch, and other properties\n - face_id: The face that was threaded\n\nExample:\n # Create an M8 external thread on a shaft\n # First create a cylinder for the shaft\n shaft = await create_cylinder(radius=4, height=30) # 8mm diameter\n body_details = await get_body_by_id(\n body_id=shaft[\"body\"][\"id\"],\n include_faces=True\n )\n # Find the cylindrical face (typically faces[1] or faces[2])\n cyl_face_id = body_details[\"faces\"][1][\"id\"]\n\n result = await create_thread(\n face_id=cyl_face_id,\n thread_type=\"ISO Metric profile\",\n thread_size=\"M8x1.25\",\n is_internal=False\n )\n\n # Create an internal M6 thread in a hole\n # First create a hole\n hole = await create_hole(body_id=\"...\", diameter=5, depth=15)\n # Get the hole's cylindrical face\n result = await create_thread(\n face_id=hole_face_id,\n thread_type=\"ISO Metric profile\",\n thread_size=\"M6x1\",\n is_internal=True\n )\n\n # Create a partial thread (threaded portion only)\n result = await create_thread(\n face_id=face_id,\n thread_type=\"ISO Metric profile\",\n thread_size=\"M10x1.5\",\n is_full_length=False,\n thread_length=15 # Only thread 15mm\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=thread", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "thicken", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 2917, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L2917", + "signature": "face_ids: List[str], thickness: float, direction: str='both', operation: str='new_body', is_chain: bool=True", + "description": "Add thickness to surface faces to create solid bodies.\n\nConverts surface faces into solid bodies by adding thickness in\none or both directions. Useful for sheet metal design, creating\nshells from surfaces, and converting imported surfaces to solids.\n\n**Use this when**: Working with surface bodies, creating sheet metal\nparts, or converting imported surface geometry to solids.\n\nArgs:\n face_ids: List of face IDs to thicken. Get face IDs from\n get_body_by_id with include_faces=True.\n thickness: Material thickness to add in mm. Must be positive.\n direction: Direction to add thickness:\n - \"both\": Add thickness equally in both directions (default)\n - \"positive\": Add thickness in the face normal direction\n - \"negative\": Add thickness opposite to face normal\n operation: Boolean operation with existing geometry:\n - \"new_body\": Create new solid body (default)\n - \"join\": Join with existing body\n - \"cut\": Subtract from existing body\n - \"intersect\": Keep only overlapping volume\n is_chain: True to include tangent-connected faces (default),\n False to thicken only the specified faces.\n\nReturns:\n Dict containing:\n - success: True if thicken was successful\n - feature: Thicken feature info with id and type\n - thicken: Thicken details including thickness, direction,\n operation, and source face count\n - bodies: List of created/modified body information\n\nExample:\n # Create a surface and thicken it to make a shell\n # First create a loft between two circles to get a surface\n sketch1 = await create_sketch(plane=\"XY\", offset=0)\n await draw_circle(sketch_id=sketch1[\"sketch\"][\"id\"], radius=20)\n sketch2 = await create_sketch(plane=\"XY\", offset=30)\n await draw_circle(sketch_id=sketch2[\"sketch\"][\"id\"], radius=10)\n\n loft = await loft(\n sketch_ids=[sketch1[\"sketch\"][\"id\"], sketch2[\"sketch\"][\"id\"]],\n is_solid=False # Creates a surface, not solid\n )\n\n # Get the surface face\n body_details = await get_body_by_id(body_id=loft[\"body\"][\"id\"], include_faces=True)\n surface_face_id = body_details[\"faces\"][0][\"id\"]\n\n # Thicken the surface to create a solid shell\n result = await thicken(\n face_ids=[surface_face_id],\n thickness=2, # 2mm wall thickness\n direction=\"both\" # 1mm each way = 2mm total\n )\n\n # Thicken to create sheet metal-like part\n result = await thicken(\n face_ids=[face_id],\n thickness=1.5,\n direction=\"negative\",\n operation=\"new_body\"\n )", + "coverage": "script-only", + "category": "Surfaces", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "emboss", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 3007, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L3007", + "signature": "sketch_id: str, face_id: str, depth: float, is_emboss: bool=True, profile_index: int=0, taper_angle: float=0.0", + "description": "Create raised (emboss) or recessed (deboss/engrave) features from sketch profiles.\n\n**WARNING: NOT CURRENTLY SUPPORTED**\n\nThe Fusion 360 EmbossFeatures API is in \"preview status\" and does not\nsupport programmatic creation. This tool will return an error with\nworkaround instructions.\n\n**Alternative Workflow (Recommended):**\nInstead of using emboss, use extrude() with join/cut operations:\n\n1. For embossed text (raised letters):\n - Create a sketch with closed profiles (circles, rectangles, etc.)\n - Use extrude(sketch_id, distance, operation=\"join\") to add material\n\n2. For debossed/engraved text (recessed letters):\n - Create a sketch with closed profiles\n - Use extrude(sketch_id, distance, direction=\"negative\", operation=\"cut\")\n\n**Note on Text:** add_sketch_text() creates SketchText entities which\ndo NOT automatically generate extrudable profiles. In Fusion 360's UI,\nyou would use \"Explode Text\" to convert text to curves, but this is\nnot available via the API. Use geometric shapes instead.\n\nArgs:\n sketch_id: ID of the sketch containing the profile/text to emboss.\n face_id: ID of the face to emboss onto.\n depth: Emboss/deboss depth in mm. Must be positive.\n is_emboss: True for raised emboss, False for deboss/engraving.\n profile_index: Index of which profile to use. Default 0.\n taper_angle: Side taper angle in degrees (0-89). Default 0.\n\nReturns:\n This tool currently returns an error with workaround instructions.\n\nExample (Alternative using extrude):\n # Create a box with an engraved circle pattern\n box = await create_box(width=100, depth=50, height=10)\n box_id = box[\"body\"][\"id\"]\n\n # Create a sketch on the top face\n sketch = await create_sketch(plane=\"XY\", offset=10)\n\n # Draw a circle (this creates a valid profile, unlike text)\n await draw_circle(sketch_id=sketch[\"sketch\"][\"id\"],\n center_x=0, center_y=0, radius=10)\n\n # Engrave by extruding as a cut\n await extrude(sketch_id=sketch[\"sketch\"][\"id\"],\n distance=2,\n direction=\"negative\",\n operation=\"cut\")", + "coverage": "script-only", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_offset_plane", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 3090, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L3090", + "signature": "base_plane: str, offset: float, name: Optional[str]=None, component_id: Optional[str]=None", + "description": "Create a construction plane offset from an existing plane or face.\n\nCreates a new construction plane parallel to a base plane at a\nspecified offset distance. Useful for creating sketches or features\nat specific heights above or below existing geometry.\n\n**All dimensions are in millimeters (mm).**\n\nArgs:\n base_plane: Base plane reference. Options:\n - \"XY\", \"YZ\", \"XZ\": Standard construction planes\n - face_id: ID of a planar face\n - plane_id: ID of an existing construction plane\n offset: Offset distance in mm from the base plane.\n Positive = in normal direction, negative = opposite.\n name: Optional name for the new construction plane.\n component_id: Optional component ID to create plane in.\n Defaults to root component.\n\nReturns:\n Dict containing:\n - success: True if plane was created\n - plane: Plane information including id, name, origin, normal\n - feature: Feature information including id and type\n\nExample:\n # Create a plane 50mm above the XY plane\n result = await create_offset_plane(base_plane=\"XY\", offset=50)\n\n # Create a plane 10mm below a face\n result = await create_offset_plane(\n base_plane=\"Body1_face_0\",\n offset=-10,\n name=\"BottomPlane\"\n )", + "coverage": "partial", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: plane_create", + "gapDetail": "Offset and angle planes only; three-point/midplane/tangent forms remain gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_angle_plane", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 3148, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L3148", + "signature": "base_plane: str, edge_id: str, angle: float, name: Optional[str]=None, component_id: Optional[str]=None", + "description": "Create a construction plane at an angle from a plane along an edge.\n\nCreates a new construction plane by rotating a base plane around\na linear edge. The edge must lie on or be parallel to the base plane.\nUseful for angled features, draft faces, and wedge shapes.\n\n**Angle is in degrees, dimensions in millimeters (mm).**\n\nArgs:\n base_plane: Base plane reference. Options:\n - \"XY\", \"YZ\", \"XZ\": Standard construction planes\n - face_id: ID of a planar face\n - plane_id: ID of an existing construction plane\n edge_id: ID of a linear edge to rotate around. Get edge IDs from\n get_body_by_id with include_edges=True.\n angle: Rotation angle in degrees from the base plane.\n Positive = counterclockwise when looking along edge.\n name: Optional name for the new construction plane.\n component_id: Optional component ID to create plane in.\n\nReturns:\n Dict containing:\n - success: True if plane was created\n - plane: Plane information including id, name, origin, normal\n - feature: Feature information including id and type\n\nExample:\n # Create a plane at 45 degrees from XY plane along an edge\n body = await get_body_by_id(body_id=\"Body1\", include_edges=True)\n result = await create_angle_plane(\n base_plane=\"XY\",\n edge_id=body[\"edges\"][0][\"id\"],\n angle=45,\n name=\"AngledPlane\"\n )", + "coverage": "partial", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: plane_create", + "gapDetail": "Offset and angle planes only; three-point/midplane/tangent forms remain gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_three_point_plane", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 3209, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L3209", + "signature": "point1: dict, point2: dict, point3: dict, name: Optional[str]=None, component_id: Optional[str]=None", + "description": "Create a construction plane through three points.\n\nCreates a new construction plane defined by three non-collinear\npoints. The first point becomes the plane origin. Useful for\ncreating planes at arbitrary orientations in 3D space.\n\n**All coordinates are in millimeters (mm).**\n\nArgs:\n point1: First point {x, y, z} in mm. Becomes the plane origin.\n point2: Second point {x, y, z} in mm.\n point3: Third point {x, y, z} in mm.\n The three points must not be collinear (on the same line).\n name: Optional name for the new construction plane.\n component_id: Optional component ID to create plane in.\n\nReturns:\n Dict containing:\n - success: True if plane was created\n - plane: Plane information including id, name, origin, normal\n - feature: Feature information including id and type\n\nExample:\n # Create a tilted plane through three points\n result = await create_three_point_plane(\n point1={\"x\": 0, \"y\": 0, \"z\": 0},\n point2={\"x\": 100, \"y\": 0, \"z\": 0},\n point3={\"x\": 50, \"y\": 50, \"z\": 25},\n name=\"TiltedPlane\"\n )\n\n # Create a plane at body corners\n result = await create_three_point_plane(\n point1={\"x\": 0, \"y\": 0, \"z\": 10},\n point2={\"x\": 100, \"y\": 0, \"z\": 10},\n point3={\"x\": 0, \"y\": 50, \"z\": 10}\n )", + "coverage": "script-only", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_midplane", + "file": "Server/src/fusion360_mcp_server/tools/creation_tools.py", + "line": 3272, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/creation_tools.py#L3272", + "signature": "plane1: str, plane2: str, name: Optional[str]=None, component_id: Optional[str]=None", + "description": "Create a construction plane midway between two parallel planes.\n\nCreates a new construction plane positioned exactly halfway between\ntwo parallel planes or faces. The planes must be parallel to each\nother. Useful for symmetry operations and centering features.\n\nArgs:\n plane1: First plane reference. Options:\n - \"XY\", \"YZ\", \"XZ\": Standard construction planes\n - face_id: ID of a planar face\n - plane_id: ID of an existing construction plane\n plane2: Second plane reference (must be parallel to plane1).\n name: Optional name for the new construction plane.\n component_id: Optional component ID to create plane in.\n\nReturns:\n Dict containing:\n - success: True if plane was created\n - plane: Plane information including id, name, origin, normal\n - feature: Feature information including id and type\n\nExample:\n # Create a midplane between a box's top and bottom faces\n body = await get_body_by_id(body_id=\"Body1\", include_faces=True)\n top_face = body[\"faces\"][0][\"id\"]\n bottom_face = body[\"faces\"][1][\"id\"]\n result = await create_midplane(\n plane1=top_face,\n plane2=bottom_face,\n name=\"CenterPlane\"\n )\n\n # Create a midplane between two construction planes\n result = await create_midplane(\n plane1=\"ConstructionPlane1\",\n plane2=\"ConstructionPlane2\"\n )", + "coverage": "script-only", + "category": "Construction geometry", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 31, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L31", + "signature": "body_id: str, x: float=0.0, y: float=0.0, z: float=0.0", + "description": "Move a body by translation.\n\nTranslates a body by the specified offset in X, Y, Z directions.\nThis creates a Move feature in the timeline and **preserves parametric\nrelationships** using defineAsTranslate internally.\n\n**All dimensions are in millimeters (mm).**\n\nArgs:\n body_id: ID of the body to move. Get this from get_bodies() or\n the body_id returned when creating geometry.\n x: Translation in X direction in mm. Default 0.\n y: Translation in Y direction in mm. Default 0.\n z: Translation in Z direction in mm. Default 0.\n At least one of x, y, z must be non-zero.\n\nReturns:\n Dict containing:\n - success: True if move succeeded\n - feature: Move feature info (id, type, translation vector)\n - new_position: Updated bounding box of the body\n\nExample:\n # Move a body 10mm in X direction\n result = await move_body(body_id=\"base_plate\", x=10)\n\n # Move a body diagonally\n result = await move_body(body_id=\"bracket\", x=50, y=25, z=10)\n\nNote:\n This operation is parametric - changing the source body's\n dimensions will update the moved result automatically.", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rotate_body", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 86, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L86", + "signature": "body_id: str, axis: str, angle: float, origin_x: float=0.0, origin_y: float=0.0, origin_z: float=0.0", + "description": "Rotate a body around an axis.\n\nRotates a body by the specified angle around an axis passing through\nthe origin point. This creates a Move feature in the timeline and\n**preserves parametric relationships** using defineAsRotate internally.\n\n**Angle is in degrees, positions are in millimeters (mm).**\n\nArgs:\n body_id: ID of the body to rotate. Get this from get_bodies() or\n the body_id returned when creating geometry.\n axis: Axis to rotate around. Options: \"X\", \"Y\", \"Z\".\n angle: Rotation angle in degrees. Positive = counter-clockwise\n when looking down the axis toward the origin.\n origin_x: X coordinate of rotation axis origin in mm. Default 0.\n origin_y: Y coordinate of rotation axis origin in mm. Default 0.\n origin_z: Z coordinate of rotation axis origin in mm. Default 0.\n\nReturns:\n Dict containing:\n - success: True if rotation succeeded\n - feature: Move feature info (id, type, rotation details)\n - new_position: Updated bounding box of the body\n\nExample:\n # Rotate a body 45 degrees around Z axis\n result = await rotate_body(body_id=\"bracket\", axis=\"Z\", angle=45)\n\n # Rotate around Z axis at point (50, 50, 0)\n result = await rotate_body(\n body_id=\"handle\",\n axis=\"Z\",\n angle=90,\n origin_x=50,\n origin_y=50\n )\n\nNote:\n This operation is parametric - changing the source body's\n dimensions will update the rotated result automatically.", + "coverage": "dedicated", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "modify_feature", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 157, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L157", + "signature": "feature_id: str, parameters: Dict[str, Any]", + "description": "Modify feature parameters.\n\nChanges the parameters of an existing feature like extrusion distance,\nfillet radius, chamfer distance, or revolve angle. The design updates\nautomatically to reflect the new values.\n\n**Dimension values are in millimeters (mm), angles in degrees.**\n\nArgs:\n feature_id: ID of the feature to modify. Get this from get_timeline()\n or from the feature_id returned when creating features.\n parameters: Dict of parameter names to new values.\n Supported parameters by feature type:\n - ExtrudeFeature: {\"distance\": float} - extrusion distance in mm\n - FilletFeature: {\"radius\": float} - fillet radius in mm\n - ChamferFeature: {\"distance\": float} - chamfer distance in mm\n - RevolveFeature: {\"angle\": float} - revolution angle in degrees\n\nReturns:\n Dict containing:\n - success: True if modification succeeded\n - feature: Feature info (id, type)\n - changes: Dict with old and new values for each modified parameter\n\nExample:\n # Change extrusion distance to 20mm\n result = await modify_feature(\n feature_id=\"Extrude1\",\n parameters={\"distance\": 20}\n )\n\n # Change fillet radius to 5mm\n result = await modify_feature(\n feature_id=\"Fillet1\",\n parameters={\"radius\": 5}\n )\n\nNote:\n This is a powerful way to iterate on designs - change dimensions\n without recreating features. The timeline history is preserved.", + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "update_parameter", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 214, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L214", + "signature": "name: str, expression: str", + "description": "Update a parameter value.\n\nChanges a design parameter to a new value. Parameters can be user-defined\nor Fusion 360 model parameters. Use expressions for dynamic values.\n\n**Supports unit expressions like \"50 mm\" or math like \"d1 * 2\".**\n\nArgs:\n name: Parameter name. Get available names from get_parameters().\n expression: New value as an expression string.\n Examples:\n - \"50 mm\" - explicit value with unit\n - \"25.4 in\" - value in inches\n - \"d1 * 2\" - expression referencing another parameter\n - \"width / 2\" - expression with parameter reference\n\nReturns:\n Dict containing:\n - success: True if update succeeded\n - parameter: Parameter info (name, unit)\n - changes: Dict with old and new expression and value\n\nExample:\n # Set a parameter to 50mm\n result = await update_parameter(name=\"height\", expression=\"50 mm\")\n\n # Set using an expression\n result = await update_parameter(name=\"depth\", expression=\"width / 2\")\n\nNote:\n This is the recommended way to change design dimensions because\n it updates all features that depend on the parameter.", + "coverage": "dedicated", + "category": "Parameters and variants", + "baselineCoverage": "dedicated legacy parameter read/update; health/recovery gap", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 265, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L265", + "signature": "body_id: str", + "description": "Delete a body from the design.\n\nRemoves a body using a Remove feature, which preserves timeline history.\nThe body will no longer appear in the design, but the removal can be\nundone or rolled back in the timeline.\n\nArgs:\n body_id: ID of the body to delete. Get this from get_bodies().\n\nReturns:\n Dict containing:\n - success: True if deletion succeeded\n - deleted: Info about the deleted body (id, name, type)\n - feature: The Remove feature that was created\n\nExample:\n # Delete a body by ID\n result = await delete_body(body_id=\"old_part\")\n\n # Delete a body created earlier\n result = await delete_body(body_id=box_result[\"body\"][\"id\"])\n\nNote:\n This creates a Remove feature in the timeline rather than\n completely erasing the body. Use delete_feature to remove\n features from the timeline entirely.", + "coverage": "partial", + "category": "Body operations", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_feature", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 303, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L303", + "signature": "feature_id: str", + "description": "Delete a feature from the timeline.\n\nRemoves a feature from the design timeline. This is a more permanent\noperation than delete_body - the feature is completely removed.\n\n**Warning:** Dependent features may be affected or deleted as well.\n\nArgs:\n feature_id: ID of the feature to delete. Get this from get_timeline().\n\nReturns:\n Dict containing:\n - success: True if deletion succeeded\n - deleted: Info about the deleted feature (id, name, type)\n - affected_features: List of features that were affected (if any)\n - warning: Message about dependent features (if applicable)\n\nExample:\n # Delete a feature by ID\n result = await delete_feature(feature_id=\"Fillet1\")\n\n # Delete the extrusion that created a body\n result = await delete_feature(feature_id=\"Extrude1\")\n\nNote:\n Features later in the timeline that depend on this feature\n may fail or be deleted. Check affected_features in the response.", + "coverage": "partial", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_sketch", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 344, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L344", + "signature": "sketch_id: str, curve_id: str, properties: Dict[str, Any]", + "description": "Edit a sketch curve.\n\nModifies properties of an existing sketch curve like line endpoints,\ncircle center/radius, or arc parameters. The design updates automatically.\n\n**All positions and dimensions are in millimeters (mm).**\n\nArgs:\n sketch_id: ID of the sketch containing the curve.\n Get this from get_sketches().\n curve_id: ID of the curve to modify. Format is typically\n \"{sketch_id}_{type}_{index}\" like \"Sketch1_line_0\".\n Get available curves from get_sketch_by_id() with\n include_curves=True.\n properties: Dict of properties to modify. Available properties\n depend on curve type:\n - Lines: {\"start_x\", \"start_y\", \"end_x\", \"end_y\"}\n - Circles: {\"center_x\", \"center_y\", \"radius\"}\n - Arcs: {\"center_x\", \"center_y\"}\n\nReturns:\n Dict containing:\n - success: True if edit succeeded\n - sketch_id: ID of the modified sketch\n - curve_id: ID of the modified curve\n - curve_type: Type of the curve (SketchLine, SketchCircle, etc.)\n - changes: Dict with old and new values for each modified property\n\nExample:\n # Move a line endpoint\n result = await edit_sketch(\n sketch_id=\"Sketch1\",\n curve_id=\"Sketch1_line_0\",\n properties={\"end_x\": 100, \"end_y\": 50}\n )\n\n # Change a circle's radius\n result = await edit_sketch(\n sketch_id=\"profile_sketch\",\n curve_id=\"profile_sketch_circle_0\",\n properties={\"radius\": 25}\n )\n\nNote:\n Use get_sketch_by_id(sketch_id, include_curves=True) to see\n all available curves and their current properties before editing.", + "coverage": "partial", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_edit", + "gapDetail": "Point/end/center/radius and fixed/construction flags; offset/trim/extend are separate gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "combine", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 412, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L412", + "signature": "target_body_id: str, tool_body_ids: list[str], operation: str='join', keep_tools: bool=False", + "description": "Combine multiple bodies using boolean operations.\n\nCombines bodies using Join (add material), Cut (subtract material),\nor Intersect (keep only overlapping volume).\n\n**Use this when**: Merging separate bodies, creating cutouts,\nor finding intersections between overlapping geometry.\n\nArgs:\n target_body_id: ID of the body to modify (receives the result).\n Get from get_bodies() or body creation results.\n tool_body_ids: List of body IDs to combine with the target.\n These are the \"tools\" that modify the target.\n operation: Boolean operation type:\n - \"join\": Add tool bodies to target (union)\n - \"cut\": Subtract tool bodies from target (difference)\n - \"intersect\": Keep only overlapping volume\n keep_tools: If True, keep tool bodies after operation.\n Default False (tool bodies are consumed).\n\nReturns:\n Dict containing:\n - success: True if combine succeeded\n - feature: Feature info with id and type\n - combine: Operation details (target, tools, operation, keep_tools)\n - body: Resulting body info\n\nExample:\n # Create two overlapping boxes\n box1 = await create_box(width=50, depth=50, height=50)\n box2 = await create_box(width=30, depth=30, height=80, x=25)\n\n # Join them into one body\n result = await combine(\n target_body_id=box1[\"body\"][\"id\"],\n tool_body_ids=[box2[\"body\"][\"id\"]],\n operation=\"join\"\n )\n\n # Cut a cylinder from a box\n box = await create_box(width=100, depth=100, height=20)\n cyl = await create_cylinder(radius=15, height=30)\n\n result = await combine(\n target_body_id=box[\"body\"][\"id\"],\n tool_body_ids=[cyl[\"body\"][\"id\"]],\n operation=\"cut\"\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "split_body", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 483, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L483", + "signature": "body_id: str, splitting_tool: str, extend_splitting_tool: bool=True", + "description": "Split a body into multiple bodies using a plane or face.\n\nDivides a single body into two or more separate bodies using\na splitting surface. The original body is replaced by the\nresulting body pieces.\n\n**Use this when**: Cutting parts in half, creating sections,\nor dividing geometry for separate manufacturing.\n\nArgs:\n body_id: ID of the body to split. Get from get_bodies().\n splitting_tool: The surface to split with. Options:\n - \"XY\", \"YZ\", \"XZ\": Standard construction planes\n - face_id: A planar face from another body\n - construction plane name or ID\n extend_splitting_tool: If True, extend the splitting surface\n to ensure complete split. Default True.\n\nReturns:\n Dict containing:\n - success: True if split succeeded\n - feature: Feature info with id and type\n - split: Operation details (source body, tool, bodies created)\n - bodies: List of resulting body info\n\nExample:\n # Split a box in half using the XY plane\n box = await create_box(width=100, depth=50, height=40, z=-20)\n\n result = await split_body(\n body_id=box[\"body\"][\"id\"],\n splitting_tool=\"XY\"\n )\n # Creates 2 bodies: one above and one below XY plane\n\n # Split using a custom construction plane\n plane = await create_offset_plane(base_plane=\"XY\", offset=10)\n result = await split_body(\n body_id=\"Body1\",\n splitting_tool=plane[\"plane\"][\"id\"]\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=split", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell", + "file": "Server/src/fusion360_mcp_server/tools/modification_tools.py", + "line": 544, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/modification_tools.py#L544", + "signature": "body_id: str, face_ids: list[str], thickness: float, direction: str='inside'", + "description": "Create a hollow shell from a solid body.\n\nRemoves selected faces from a solid body and adds uniform wall\nthickness to create a hollow part. The removed faces become\nopenings in the shell.\n\n**Use this when**: Creating enclosures, housings, containers,\nor any hollow parts with uniform wall thickness.\n\n**All dimensions in millimeters (mm).**\n\nArgs:\n body_id: ID of the solid body to shell.\n face_ids: List of face IDs to remove (become openings).\n Get face IDs from get_body_by_id with include_faces=True.\n thickness: Wall thickness in mm. Must be positive.\n direction: Direction to add material:\n - \"inside\": Shell inward (default, most common)\n - \"outside\": Shell outward\n\nReturns:\n Dict containing:\n - success: True if shell succeeded\n - feature: Feature info with id and type\n - shell: Operation details (body, removed faces, thickness)\n - body: Resulting body info\n\nExample:\n # Create a hollow box (remove top face)\n box = await create_box(width=100, depth=80, height=50)\n body = await get_body_by_id(\n body_id=box[\"body\"][\"id\"],\n include_faces=True\n )\n # Find the top face (usually the one with max Z)\n top_face_id = body[\"faces\"][0][\"id\"] # Identify correct face\n\n result = await shell(\n body_id=box[\"body\"][\"id\"],\n face_ids=[top_face_id],\n thickness=3 # 3mm walls\n )\n\n # Shell outward for thin-walled containers\n result = await shell(\n body_id=\"Body1\",\n face_ids=[\"Body1_face_0\"],\n thickness=1.5,\n direction=\"outside\"\n )", + "coverage": "partial", + "category": "Solid features", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_distance", + "file": "Server/src/fusion360_mcp_server/tools/validation_tools.py", + "line": 24, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/validation_tools.py#L24", + "signature": "entity1_id: str, entity2_id: str", + "description": "Measure the minimum distance between two entities.\n\nCalculates the shortest distance between any two geometric entities\nin the design. Supports body-to-body, face-to-face, edge-to-edge,\nand other entity combinations.\n\n**Use cases:**\n- Verify spacing between components (e.g., \"Are these holes 70mm apart?\")\n- Check clearances (e.g., \"Is there at least 5mm gap?\")\n- Measure feature positions (e.g., \"How far is the hole from the edge?\")\n\nArgs:\n entity1_id: ID of the first entity (body, face, edge, or vertex).\n Use get_bodies() or get_body_by_id(include_faces=True)\n to find entity IDs.\n entity2_id: ID of the second entity.\n\nReturns:\n Dict containing:\n - distance: Minimum distance in mm (accurate to 0.001mm)\n - point1: Closest point on entity1 {x, y, z} in mm\n - point2: Closest point on entity2 {x, y, z} in mm\n\nExample response:\n {\n \"success\": true,\n \"distance\": 70.0,\n \"point1\": {\"x\": 15.0, \"y\": 15.0, \"z\": 5.0},\n \"point2\": {\"x\": 85.0, \"y\": 15.0, \"z\": 5.0},\n \"entity1_id\": \"hole_1\",\n \"entity2_id\": \"hole_2\"\n }", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_angle", + "file": "Server/src/fusion360_mcp_server/tools/validation_tools.py", + "line": 67, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/validation_tools.py#L67", + "signature": "entity1_id: str, entity2_id: str", + "description": "Measure the angle between two planar faces or linear edges.\n\nCalculates the angle between two geometric entities in degrees.\nWorks with planar faces and linear edges.\n\n**Use cases:**\n- Verify face angles (e.g., \"Are these faces perpendicular?\")\n- Check chamfer angles (e.g., \"Is this a 45-degree chamfer?\")\n- Measure edge angles (e.g., \"What angle do these edges form?\")\n\nArgs:\n entity1_id: ID of the first entity (planar face or linear edge).\n Use get_body_by_id(include_faces=True) to find face IDs.\n entity2_id: ID of the second entity (planar face or linear edge).\n\nReturns:\n Dict containing:\n - angle: Angle between entities in degrees (0-180)\n\nExample response:\n {\n \"success\": true,\n \"angle\": 90.0,\n \"entity1_id\": \"Body1_face_0\",\n \"entity2_id\": \"Body1_face_2\"\n }\n\nNote: Parallel faces return 0 degrees, perpendicular faces return 90 degrees.", + "coverage": "script-only", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_interference", + "file": "Server/src/fusion360_mcp_server/tools/validation_tools.py", + "line": 106, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/validation_tools.py#L106", + "signature": "body_ids: Optional[List[str]]=None", + "description": "Detect collisions and overlapping volumes between bodies.\n\nAnalyzes bodies for interference (overlapping geometry).\nThis is critical for validating assemblies and ensuring\nparts don't collide.\n\n**Use cases:**\n- Validate assembly (e.g., \"Do any parts collide?\")\n- Check fit tolerance (e.g., \"Is there clearance between components?\")\n- Find design errors (e.g., \"Why won't these parts fit together?\")\n\nArgs:\n body_ids: Optional list of body IDs to check.\n If not provided, checks ALL bodies in the design.\n Use get_bodies() to find available body IDs.\n\nReturns:\n Dict containing:\n - has_interference: True if any collisions were detected\n - interferences: List of collision details, each with:\n - body1: ID of first colliding body\n - body2: ID of second colliding body\n - volume: Overlap volume in mm\u00b3\n - bodies_checked: Number of bodies analyzed\n\nExample response (no interference):\n {\n \"success\": true,\n \"has_interference\": false,\n \"interferences\": [],\n \"bodies_checked\": 3\n }\n\nExample response (interference found):\n {\n \"success\": true,\n \"has_interference\": true,\n \"interferences\": [\n {\n \"body1\": \"Body1\",\n \"body2\": \"Body2\",\n \"volume\": 125.5\n }\n ],\n \"bodies_checked\": 2\n }\n\nPerformance note: Checking many bodies can be slow. Filter with\nbody_ids when checking specific pairs.", + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_body_properties", + "file": "Server/src/fusion360_mcp_server/tools/validation_tools.py", + "line": 162, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/validation_tools.py#L162", + "signature": "body_id: str", + "description": "Get detailed physical properties of a body.\n\nReturns comprehensive measurements and physical characteristics\nof a solid body including volume, surface area, mass properties,\nand bounding box dimensions.\n\n**Use cases:**\n- Verify dimensions (e.g., \"Is this box exactly 100x50x10mm?\")\n- Check volume (e.g., \"What's the volume of this part?\")\n- Find center of mass (e.g., \"Where is the balance point?\")\n- Count topology (e.g., \"How many faces does this have?\")\n\nArgs:\n body_id: ID of the body to analyze.\n Use get_bodies() to find available body IDs.\n\nReturns:\n Dict with properties containing:\n - volume: Body volume in mm\u00b3\n - area: Total surface area in mm\u00b2\n - center_of_mass: Center of mass point {x, y, z} in mm\n - bounding_box: {min: [x,y,z], max: [x,y,z]} in mm\n - dimensions: {width, depth, height} in mm\n - faces_count: Number of B-Rep faces\n - edges_count: Number of B-Rep edges\n - vertices_count: Number of B-Rep vertices\n - is_solid: True if solid body (vs surface body)\n\nExample response:\n {\n \"success\": true,\n \"properties\": {\n \"volume\": 50000.0,\n \"area\": 13000.0,\n \"center_of_mass\": {\"x\": 50.0, \"y\": 25.0, \"z\": 5.0},\n \"bounding_box\": {\"min\": [0, 0, 0], \"max\": [100, 50, 10]},\n \"dimensions\": {\"width\": 100.0, \"depth\": 50.0, \"height\": 10.0},\n \"faces_count\": 6,\n \"edges_count\": 12,\n \"vertices_count\": 8\n },\n \"body_id\": \"base_plate\",\n \"is_solid\": true\n }\n\nUnits are always in mm, mm\u00b2, or mm\u00b3. Measurements are accurate\nto 0.001mm (1 micron).", + "coverage": "dedicated", + "category": "Measurement and engineering checks", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: assembly_properties; fusion_physical_properties", + "gapDetail": "High-accuracy aggregate/root/component/occurrence/body mass, volume, area and center of mass with explicit units/scope.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_sketch_status", + "file": "Server/src/fusion360_mcp_server/tools/validation_tools.py", + "line": 216, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/validation_tools.py#L216", + "signature": "sketch_id: str", + "description": "Get the constraint status of a sketch.\n\nReturns information about whether a sketch is fully constrained\n(all geometry locked in position) and profile validity for\nfeature creation.\n\n**Use cases:**\n- Check if sketch is ready for extrusion (e.g., \"Can I extrude this?\")\n- Debug constraint issues (e.g., \"Why is the sketch moving?\")\n- Verify sketch completeness (e.g., \"Are there closed profiles?\")\n\nA fully constrained sketch has all geometry position locked by\ndimensions and geometric constraints. Under-constrained curves\ncan still move, which may cause unexpected results in features.\n\nArgs:\n sketch_id: ID of the sketch to analyze.\n Use get_sketches() to find available sketch IDs.\n\nReturns:\n Dict containing:\n - is_fully_constrained: True if all curves are constrained\n - under_constrained_count: Number of movable curves\n - profiles_count: Number of closed profile regions\n - curves_count: Total number of sketch curves\n - constraints_count: Number of geometric constraints\n - dimensions_count: Number of dimensional constraints\n - has_valid_profiles: True if at least one profile exists\n\nExample response (well-defined sketch):\n {\n \"success\": true,\n \"sketch_id\": \"Sketch1\",\n \"is_fully_constrained\": true,\n \"under_constrained_count\": 0,\n \"profiles_count\": 1,\n \"curves_count\": 4,\n \"constraints_count\": 8,\n \"dimensions_count\": 2,\n \"has_valid_profiles\": true\n }\n\nExample response (under-constrained sketch):\n {\n \"success\": true,\n \"sketch_id\": \"Sketch2\",\n \"is_fully_constrained\": false,\n \"under_constrained_count\": 2,\n \"profiles_count\": 0,\n \"curves_count\": 3,\n \"constraints_count\": 1,\n \"dimensions_count\": 0,\n \"has_valid_profiles\": false\n }\n\nTip: A sketch needs closed profiles (profiles_count > 0) for\nextrude/revolve operations. has_valid_profiles indicates readiness.", + "coverage": "dedicated", + "category": "Sketches", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_health", + "file": "Server/src/fusion360_mcp_server/tools/system_tools.py", + "line": 27, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/system_tools.py#L27", + "signature": "", + "description": "Check the health status of the Fusion 360 connection.\n\nVerifies that:\n- The MCP server is running\n- The Fusion 360 add-in is responsive\n- Communication between server and add-in is working\n\n**Use this** to diagnose connection issues or verify the system\nis ready for design operations.\n\nReturns:\n Dict with health status:\n - healthy: True if all systems operational\n - server_status: \"running\" if MCP server is operational\n - addin_status: \"healthy\", \"unhealthy\", or \"unreachable\"\n - message: Human-readable status message\n\nExample response:\n {\n \"healthy\": true,\n \"server_status\": \"running\",\n \"addin_status\": \"healthy\",\n \"message\": \"All systems operational\"\n }", + "coverage": "dedicated", + "category": "Feature history and health", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_version", + "file": "Server/src/fusion360_mcp_server/tools/system_tools.py", + "line": 73, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/system_tools.py#L73", + "signature": "", + "description": "Get version information for all system components.\n\nReturns version details for:\n- MCP Server\n- Fusion 360 Add-in\n- Fusion 360 application\n- API compatibility version\n\n**Use this** to verify compatibility or for debugging purposes.\n\nReturns:\n Dict with version information:\n - server_version: MCP server version\n - addin_version: Fusion add-in version\n - fusion_version: Fusion 360 application version\n - api_version: API protocol version\n\nExample response:\n {\n \"server_version\": \"0.1.0\",\n \"addin_version\": \"0.1.0\",\n \"fusion_version\": \"2.0.18719\",\n \"api_version\": \"1.0\"\n }", + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "take_screenshot", + "file": "Server/src/fusion360_mcp_server/tools/viewport_tools.py", + "line": 24, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/viewport_tools.py#L24", + "signature": "file_path: str, view: str='current', width: int=1920, height: int=1080", + "description": "Capture the current Fusion 360 viewport as a PNG image.\n\nUse this tool to visualize the current state of the design.\nScreenshots are saved to the specified file path.\n\nArgs:\n file_path: Path to save the image file (required).\n view: View to capture. Options:\n - \"current\" (default): Capture current viewport as-is\n - \"front\", \"back\", \"top\", \"bottom\", \"left\", \"right\": Standard orthographic views\n - \"isometric\": Standard 3D isometric view\n - \"trimetric\": Alternative 3D view\n - \"home\": Default home view\n width: Image width in pixels (default 1920, max 8192)\n height: Image height in pixels (default 1080, max 8192)\n\nReturns:\n Dict containing:\n - format: \"png\"\n - dimensions: {width, height}\n - view: View that was captured\n - file_path: Path where image was saved\n\nExample usage:\n # Save current view to file\n result = take_screenshot(file_path=\"/path/to/design.png\")\n\n # Save isometric view to file with custom resolution\n result = take_screenshot(\n file_path=\"/path/to/design.png\",\n view=\"isometric\",\n width=2560,\n height=1440\n )", + "coverage": "dedicated", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_camera", + "file": "Server/src/fusion360_mcp_server/tools/viewport_tools.py", + "line": 81, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/viewport_tools.py#L81", + "signature": "eye_x: float, eye_y: float, eye_z: float, target_x: float=0.0, target_y: float=0.0, target_z: float=0.0, up_x: float=0.0, up_y: float=0.0, up_z: float=1.0, smooth_transition: bool=True", + "description": "Set the viewport camera position and orientation.\n\nPositions the camera at the specified eye point, looking toward\nthe target point. The up vector defines which direction is \"up\"\nin the view.\n\n**All coordinates are in millimeters (mm).**\n\nArgs:\n eye_x: Camera eye X position in mm\n eye_y: Camera eye Y position in mm\n eye_z: Camera eye Z position in mm\n target_x: Camera target (look-at) X position in mm (default 0)\n target_y: Camera target (look-at) Y position in mm (default 0)\n target_z: Camera target (look-at) Z position in mm (default 0)\n up_x: Camera up vector X component (default 0)\n up_y: Camera up vector Y component (default 0)\n up_z: Camera up vector Z component (default 1, meaning Z is up)\n smooth_transition: Animate the camera movement (default True)\n\nReturns:\n Dict containing:\n - camera: Current camera state after change\n - eye: {x, y, z} in mm\n - target: {x, y, z} in mm\n - up_vector: {x, y, z}\n - view_extents: zoom level\n - is_perspective: True if perspective camera\n\nExample usage:\n # Position camera 500mm away along Y axis, looking at origin\n result = set_camera(\n eye_x=0, eye_y=-500, eye_z=200,\n target_x=0, target_y=0, target_z=0\n )", + "coverage": "partial", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_view; fusion_mcp_call screenshot", + "gapDetail": "Standard views/orbit/zoom and capture; arbitrary camera/render parameters require scripting.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_camera", + "file": "Server/src/fusion360_mcp_server/tools/viewport_tools.py", + "line": 149, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/viewport_tools.py#L149", + "signature": "", + "description": "Get the current viewport camera state.\n\nReturns the current camera position, orientation, and zoom\nsettings for the active viewport.\n\nReturns:\n Dict containing:\n - camera: Camera state\n - eye: Camera position {x, y, z} in mm\n - target: Look-at point {x, y, z} in mm\n - up_vector: Up direction {x, y, z}\n - view_extents: Current zoom level\n - is_perspective: True if perspective, False if orthographic\n\nExample response:\n {\n \"camera\": {\n \"eye\": {\"x\": 0, \"y\": -500, \"z\": 200},\n \"target\": {\"x\": 0, \"y\": 0, \"z\": 0},\n \"up_vector\": {\"x\": 0, \"y\": 0, \"z\": 1},\n \"view_extents\": 50.0,\n \"is_perspective\": true\n }\n }", + "coverage": "partial", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_view; fusion_mcp_call screenshot", + "gapDetail": "Standard views/orbit/zoom and capture; arbitrary camera/render parameters require scripting.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_view", + "file": "Server/src/fusion360_mcp_server/tools/viewport_tools.py", + "line": 180, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/viewport_tools.py#L180", + "signature": "view: str, smooth_transition: bool=True", + "description": "Set the viewport to a standard named view.\n\nQuickly orient the camera to common viewing angles for\ndesign review and documentation. After setting the view,\nthe camera is automatically fitted to show all geometry.\n\nArgs:\n view: Named view to set. Options:\n - \"front\": Front view (+Y axis toward viewer)\n - \"back\": Back view (-Y axis toward viewer)\n - \"top\": Top view (looking down from +Z)\n - \"bottom\": Bottom view (looking up from -Z)\n - \"left\": Left view (looking from -X)\n - \"right\": Right view (looking from +X)\n - \"isometric\": Standard 3D isometric view\n - \"trimetric\": Alternative 3D view\n - \"home\": Reset to default home view\n smooth_transition: Animate the view change (default True)\n\nReturns:\n Dict containing:\n - view: Name of the view that was set\n - camera: Current camera state after change\n\nExample usage:\n # Set to top view\n result = set_view(\"top\")\n\n # Set to isometric without animation\n result = set_view(\"isometric\", smooth_transition=False)", + "coverage": "dedicated", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_view", + "gapDetail": "Named standard views and fit; view action schema governs exact options.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fit_view", + "file": "Server/src/fusion360_mcp_server/tools/viewport_tools.py", + "line": 223, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/viewport_tools.py#L223", + "signature": "entity_ids: Optional[List[str]]=None, smooth_transition: bool=True", + "description": "Fit the viewport to show specific entities or all geometry.\n\nAdjusts the camera zoom to optimally frame the specified\nentities or all visible geometry in the design.\n\nArgs:\n entity_ids: Optional list of body, component, or occurrence IDs\n to fit the view to. If not provided, fits to all\n visible geometry in the design.\n smooth_transition: Animate the zoom change (default True)\n\nReturns:\n Dict containing:\n - fitted_to: \"all\" or list of entity IDs that were fitted to\n - camera: Current camera state after fit\n\nExample usage:\n # Fit to all geometry\n result = fit_view()\n\n # Fit to specific bodies\n result = fit_view(entity_ids=[\"Body1\", \"Body2\"])", + "coverage": "dedicated", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_view", + "gapDetail": "Named standard views and fit; view action schema governs exact options.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 26, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L26", + "signature": "name: str", + "description": "Create a new component in the design.\n\nComponents are containers for bodies, sketches, and features that\ncan be positioned independently as units in an assembly. Creating\na component also creates an occurrence (instance) of it.\n\nUse components to:\n- Organize related geometry together\n- Create reusable parts\n- Build assemblies with multiple parts\n- Apply transforms to groups of geometry\n\nArgs:\n name: Name for the new component. Should be descriptive,\n like \"Bracket\", \"Housing\", or \"Shaft\".\n\nReturns:\n Dict containing:\n - success: True if component was created\n - component: Component info including id, name, is_root\n - occurrence: Occurrence info including id and transform\n - component_id: The new component's ID for future operations\n - occurrence_id: The occurrence ID for positioning\n\nExample:\n # Create a new component for a bracket\n result = await create_component(name=\"Bracket\")\n component_id = result[\"component_id\"]\n\n # Now activate it and add geometry\n await activate_component(component_id=component_id)\n await create_box(width=50, depth=10, height=30)", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_components", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 65, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L65", + "signature": "", + "description": "Get all components in the design.\n\nReturns a list of all components including the root component\nand any user-created components. Use this to understand the\ndesign hierarchy and find component IDs.\n\nReturns:\n Dict containing:\n - success: True if query succeeded\n - components: List of component summaries with:\n - id: Component ID\n - name: Component name\n - is_root: True if this is the root component\n - is_active: True if this is the active component\n - bodies_count: Number of bodies in the component\n - sketches_count: Number of sketches\n - occurrences_count: Number of child occurrences\n - total: Total number of components\n\nExample:\n # List all components to find one to work with\n result = await get_components()\n for comp in result[\"components\"]:\n print(f\"{comp['name']}: {comp['bodies_count']} bodies\")", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_component_by_id", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 96, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L96", + "signature": "component_id: str", + "description": "Get detailed information about a specific component.\n\nReturns full details about a component including its contents,\nbounding box, and occurrence IDs.\n\nArgs:\n component_id: The component ID to retrieve details for.\n Get this from get_components() or create_component().\n\nReturns:\n Dict containing:\n - success: True if found\n - component: Full component info including:\n - id, name, is_root, is_active\n - bodies_count, sketches_count, features_count\n - body_ids: List of body IDs in this component\n - sketch_ids: List of sketch IDs\n - occurrence_ids: List of occurrence IDs\n - bounding_box: Component bounding box\n\nExample:\n result = await get_component_by_id(component_id=\"Bracket\")\n print(f\"Bodies: {result['component']['body_ids']}\")", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "activate_component", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 126, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L126", + "signature": "component_id: str", + "description": "Activate a component for editing.\n\nMakes the specified component the active component. All new\ngeometry (sketches, bodies, features) will be created in\nthe active component.\n\nArgs:\n component_id: The component ID to activate.\n Use \"RootComponent\" or the root's ID to return\n to the top level.\n\nReturns:\n Dict containing:\n - success: True if activation succeeded\n - active_component: The now-active component info\n - component_id: The activated component's ID\n\nExample:\n # Activate a component before adding geometry to it\n await activate_component(component_id=\"Bracket\")\n await create_box(width=50, depth=10, height=30)\n\n # Return to root when done\n await activate_component(component_id=\"RootComponent\")", + "coverage": "script-only", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_component_bodies", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 157, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L157", + "signature": "component_id: str", + "description": "Get all bodies within a specific component.\n\nReturns detailed information about all bodies contained in\nthe specified component. Useful for finding bodies to modify\nor use in joints.\n\nArgs:\n component_id: The component ID to get bodies from.\n\nReturns:\n Dict containing:\n - success: True if query succeeded\n - bodies: List of body summaries\n - total: Number of bodies\n - component_id: The queried component ID\n\nExample:\n result = await get_component_bodies(component_id=\"Bracket\")\n for body in result[\"bodies\"]:\n print(f\"{body['name']}: volume={body['volume']}mm^3\")", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_occurrences", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 186, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L186", + "signature": "component_id: Optional[str]=None", + "description": "Get all occurrences in the design or within a component.\n\nOccurrences are instances of components positioned in space.\nA single component can have multiple occurrences (like bolts\nin an assembly).\n\nArgs:\n component_id: Optional component ID to filter occurrences.\n If not provided, returns all occurrences in the design.\n\nReturns:\n Dict containing:\n - success: True if query succeeded\n - occurrences: List of occurrence info with:\n - id: Occurrence ID\n - name: Occurrence name (like \"Bracket:1\")\n - component_id: The component this occurrence instantiates\n - transform: Position/rotation transform matrix\n - is_visible: Whether occurrence is visible\n - is_grounded: Whether occurrence is fixed in place\n - total: Number of occurrences\n\nExample:\n # Get all occurrences\n result = await get_occurrences()\n\n # Get occurrences only in a specific component\n result = await get_occurrences(component_id=\"Assembly\")", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_occurrence", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 221, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L221", + "signature": "occurrence_id: str, x: float=0.0, y: float=0.0, z: float=0.0", + "description": "Move an occurrence to a new position.\n\nApplies a translation to an occurrence's position. The values\nare added to the current position (relative move, not absolute).\n\n**All values are in millimeters (mm).**\n\nArgs:\n occurrence_id: The occurrence ID to move.\n Get this from get_occurrences() or create_component().\n x: X translation in mm. Positive = right.\n y: Y translation in mm. Positive = forward.\n z: Z translation in mm. Positive = up.\n\nReturns:\n Dict containing:\n - success: True if move succeeded\n - occurrence: Updated occurrence info with new transform\n - occurrence_id: The moved occurrence ID\n - translation: The applied translation\n\nExample:\n # Move a bracket occurrence 100mm to the right\n await move_occurrence(occurrence_id=\"Bracket:1\", x=100)\n\n # Move up and forward\n await move_occurrence(occurrence_id=\"Bracket:1\", y=50, z=25)", + "coverage": "dedicated", + "category": "Assemblies", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: occurrence_update", + "gapDetail": "Absolute instance pose in assembly context, grounding checks and captured position. Relative motion requires composing the requested pose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 273, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L273", + "signature": "geometry1_id: str, geometry2_id: str, joint_type: str='rigid'", + "description": "Create a joint between two geometry entities.\n\nCreates an assembly joint that constrains the motion between\ntwo parts. The geometry entities can be faces, edges, or\nconstruction geometry from different occurrences.\n\n**Joint Types:**\n- rigid: No relative motion (parts fixed together)\n- revolute: Rotation around one axis (like a hinge)\n- slider: Translation along one axis (like a drawer)\n- cylindrical: Rotation + translation along same axis (like a piston)\n- pin_slot: Rotation + perpendicular translation\n- planar: Motion in a plane (2D freedom)\n- ball: Rotation in all directions (like a ball joint)\n\nArgs:\n geometry1_id: First geometry entity ID (face, edge, or vertex).\n Get from get_body_by_id() with include_faces=True.\n geometry2_id: Second geometry entity ID from a different occurrence.\n joint_type: Type of joint. Default \"rigid\".\n\nReturns:\n Dict containing:\n - success: True if joint was created\n - joint: Joint info including id, type, connected occurrences\n - joint_id: The new joint's ID\n\nExample:\n # Create a rigid joint between two faces\n result = await create_joint(\n geometry1_id=\"body1_face_0\",\n geometry2_id=\"body2_face_0\",\n joint_type=\"rigid\"\n )\n\n # Create a revolute (hinge) joint\n result = await create_joint(\n geometry1_id=\"bracket_face_0\",\n geometry2_id=\"door_face_0\",\n joint_type=\"revolute\"\n )", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint_between_occurrences", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 334, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L334", + "signature": "occurrence1_id: str, occurrence2_id: str, joint_type: str='rigid'", + "description": "Create a joint between two occurrences at their origins.\n\nA simpler way to create joints when you want to connect two\noccurrences without specifying exact geometry. Uses the origin\npoints of each occurrence.\n\nArgs:\n occurrence1_id: First occurrence ID.\n occurrence2_id: Second occurrence ID.\n joint_type: Type of joint. Default \"rigid\".\n Options: rigid, revolute, slider, cylindrical,\n pin_slot, planar, ball\n\nReturns:\n Dict containing:\n - success: True if joint was created\n - joint: Joint info including id, type, connected occurrences\n - joint_id: The new joint's ID\n\nExample:\n # Create components and then join them\n comp1 = await create_component(name=\"Part1\")\n comp2 = await create_component(name=\"Part2\")\n\n # Move Part2 to offset position\n await move_occurrence(occurrence_id=comp2[\"occurrence_id\"], x=100)\n\n # Create a rigid joint between them\n await create_joint_between_occurrences(\n occurrence1_id=comp1[\"occurrence_id\"],\n occurrence2_id=comp2[\"occurrence_id\"],\n joint_type=\"rigid\"\n )", + "coverage": "partial", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_joints", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 387, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L387", + "signature": "", + "description": "Get all joints in the design.\n\nReturns a list of all assembly joints, including their types\nand connected occurrences.\n\nReturns:\n Dict containing:\n - success: True if query succeeded\n - joints: List of joint info with:\n - id: Joint ID\n - name: Joint name\n - joint_type: Type (rigid, revolute, slider, etc.)\n - occurrence1_id: First connected occurrence\n - occurrence2_id: Second connected occurrence\n - is_suppressed: Whether joint is disabled\n - total: Number of joints\n\nExample:\n result = await get_joints()\n for joint in result[\"joints\"]:\n print(f\"{joint['name']}: {joint['joint_type']} joint\")", + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Typed motion readback and occurrence identity; exact output shape differs.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_joint_by_id", + "file": "Server/src/fusion360_mcp_server/tools/assembly_tools.py", + "line": 415, + "sourceUrl": "https://github.com/ncmlabs/fusion360_mcp/blob/91bdfae836989a6c86d1cc3af8280e16eaacaa3f/Server/src/fusion360_mcp_server/tools/assembly_tools.py#L415", + "signature": "joint_id: str", + "description": "Get detailed information about a specific joint.\n\nArgs:\n joint_id: The joint ID to retrieve details for.\n\nReturns:\n Dict containing:\n - success: True if found\n - joint: Full joint info\n\nExample:\n result = await get_joint_by_id(joint_id=\"Rigid1\")\n print(f\"Connects: {result['joint']['occurrence1_id']} to {result['joint']['occurrence2_id']}\")", + "coverage": "dedicated", + "category": "Joints and motion", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Typed motion readback and occurrence identity; exact output shape differs.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/ncmlabs/fusion360_mcp.git", + "commitDate": "2026-01-06", + "toolCount": 89, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "MCP tools", + "license": "MIT", + "rowCount": 89 + }, + "FusionMCPSample": { + "commit": "1d49ee8f7744b2e7aaec91f9c660c65963fccd71", + "tools": [ + { + "name": "execute_api_script", + "file": "Fusion MCP Addin/tools/execute_api_script.py", + "line": 1, + "sourceUrl": "https://github.com/AutodeskFusion360/FusionMCPSample/blob/1d49ee8f7744b2e7aaec91f9c660c65963fccd71/Fusion MCP Addin/tools/execute_api_script.py#L1", + "description": "execute api script", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "dedicated script executor", + "baselineGap": false, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_api_documentation", + "file": "Fusion MCP Addin/tools/get_api_documentation.py", + "line": 1, + "sourceUrl": "https://github.com/AutodeskFusion360/FusionMCPSample/blob/1d49ee8f7744b2e7aaec91f9c660c65963fccd71/Fusion MCP Addin/tools/get_api_documentation.py#L1", + "description": "get api documentation", + "coverage": "delegated", + "category": "API documentation", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_read queryType=apiDocumentation", + "gapDetail": "Runtime Autodesk documentation selector; no separate mirrored documentation database.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_screenshot", + "file": "Fusion MCP Addin/tools/get_screenshot.py", + "line": 1, + "sourceUrl": "https://github.com/AutodeskFusion360/FusionMCPSample/blob/1d49ee8f7744b2e7aaec91f9c660c65963fccd71/Fusion MCP Addin/tools/get_screenshot.py#L1", + "description": "get screenshot", + "coverage": "dedicated", + "category": "Viewport", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_best_practices", + "file": "Fusion MCP Addin/tools/get_best_practices.py", + "line": 1, + "sourceUrl": "https://github.com/AutodeskFusion360/FusionMCPSample/blob/1d49ee8f7744b2e7aaec91f9c660c65963fccd71/Fusion MCP Addin/tools/get_best_practices.py#L1", + "description": "get best practices", + "coverage": "partial", + "category": "API documentation", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "source implementation; not live verified here", + "gap": true, + "bridgeRoute": "Fusion bridge skill and typed schema descriptions", + "gapDetail": "Workflow guidance is documented; no dedicated best-practices MCP resource parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/AutodeskFusion360/FusionMCPSample.git", + "commitDate": "2026-01-06", + "toolCount": 4, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "MCP tools", + "license": "MIT", + "rowCount": 4 + }, + "AuraFriday": { + "commit": "515e9010c2c41b2caf6faafd4ec6721270436691", + "tools": [ + { + "name": "execute_python", + "file": "mcp_integration.py", + "line": 403, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L403", + "description": "execute python", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "dedicated script executor", + "baselineGap": false, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "call_tool", + "file": "mcp_integration.py", + "line": 405, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L405", + "description": "call tool", + "coverage": "script-only", + "category": "Script storage and external tools", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "save_script", + "file": "mcp_integration.py", + "line": 419, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L419", + "description": "save script", + "coverage": "script-only", + "category": "Script storage and external tools", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "load_script", + "file": "mcp_integration.py", + "line": 421, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L421", + "description": "load script", + "coverage": "script-only", + "category": "Script storage and external tools", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_scripts", + "file": "mcp_integration.py", + "line": 423, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L423", + "description": "list scripts", + "coverage": "script-only", + "category": "Script storage and external tools", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_script", + "file": "mcp_integration.py", + "line": 425, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L425", + "description": "delete script", + "coverage": "script-only", + "category": "Script storage and external tools", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_api_documentation", + "file": "mcp_integration.py", + "line": 427, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L427", + "description": "get api documentation", + "coverage": "delegated", + "category": "API documentation", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_read queryType=apiDocumentation", + "gapDetail": "Runtime Autodesk documentation selector; no separate mirrored documentation database.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_online_documentation", + "file": "mcp_integration.py", + "line": 429, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L429", + "description": "get online documentation", + "coverage": "delegated", + "category": "API documentation", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_read queryType=apiDocumentation", + "gapDetail": "Runtime Autodesk documentation selector; no separate mirrored documentation database.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_best_practices", + "file": "mcp_integration.py", + "line": 431, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L431", + "description": "get best practices", + "coverage": "partial", + "category": "API documentation", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "Fusion bridge skill and typed schema descriptions", + "gapDetail": "Workflow guidance is documented; no dedicated best-practices MCP resource parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "generic_api_call", + "file": "mcp_integration.py", + "line": 442, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L442", + "description": "generic api call", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_pid", + "file": "mcp_integration.py", + "line": 451, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L451", + "description": "get pid", + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "clear_context", + "file": "mcp_integration.py", + "line": 463, + "entryPoint": "fusion360", + "sourceUrl": "https://github.com/AuraFriday/Fusion-360-MCP-Server/blob/515e9010c2c41b2caf6faafd4ec6721270436691/mcp_integration.py#L463", + "description": "clear context", + "coverage": "script-only", + "category": "Script storage and external tools", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "proprietary public source; generic-tool operation", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/AuraFriday/Fusion-360-MCP-Server.git", + "commitDate": "2026-01-28", + "toolCount": 1, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "one proprietary MCP tool; operation rows", + "license": "proprietary, public source", + "rowCount": 12 + }, + "fusion-cam-mcp": { + "commit": "144233f45cf9f338fcc11a96ee60df02b24ea9c5", + "tools": [ + { + "name": "ping", + "file": "src/fusion_cam/cli.py", + "line": 334, + "description": "Health check: bridge reachable", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L334", + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list-documents", + "file": "src/fusion_cam/cli.py", + "line": 342, + "description": "List open documents and CAM summary", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L342", + "coverage": "dedicated", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_get_app_state", + "gapDetail": "Open document discovery.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-document-info", + "file": "src/fusion_cam/cli.py", + "line": 350, + "description": "Active document name, units, CAM counts", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L350", + "coverage": "dedicated", + "category": "Documents", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_document_info / fusion_mechanical: inspect", + "gapDetail": "Live document identity and save metadata.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-setups", + "file": "src/fusion_cam/cli.py", + "line": 359, + "description": "List CAM setups", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L359", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-operations", + "file": "src/fusion_cam/cli.py", + "line": 368, + "description": "List operations (feeds, tools, \u2026)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L368", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-operation-details", + "file": "src/fusion_cam/cli.py", + "line": 378, + "description": "Full parameter dump for one operation", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L378", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-tools", + "file": "src/fusion_cam/cli.py", + "line": 393, + "description": "Document tool library", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L393", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-library-tools", + "file": "src/fusion_cam/cli.py", + "line": 402, + "description": "Browse external tool libraries", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L402", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-machining-time", + "file": "src/fusion_cam/cli.py", + "line": 424, + "description": "Estimated cycle times", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L424", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-toolpath-status", + "file": "src/fusion_cam/cli.py", + "line": 434, + "description": "Toolpath valid / outdated / suppressed", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L434", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-nc-programs", + "file": "src/fusion_cam/cli.py", + "line": 444, + "description": "NC programs and post settings", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L444", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "generate-toolpaths", + "file": "src/fusion_cam/cli.py", + "line": 453, + "description": "Regenerate toolpaths (long-running; requires --mode full)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L453", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "post-process", + "file": "src/fusion_cam/cli.py", + "line": 473, + "description": "Post-process setup to NC files (requires --mode full)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L473", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "update-operation-parameters", + "file": "src/fusion_cam/cli.py", + "line": 501, + "description": "Update feeds/speeds/engagement (requires --mode full)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L501", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list-material-libraries", + "file": "src/fusion_cam/cli.py", + "line": 523, + "description": "Physical material libraries", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L523", + "coverage": "dedicated", + "category": "Physical materials", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_mechanical: material_list", + "gapDetail": "Loaded library IDs and material search; bounded result sets explicitly report completeness.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get-material-properties", + "file": "src/fusion_cam/cli.py", + "line": 533, + "description": "Read one material's properties", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L533", + "coverage": "partial", + "category": "Physical materials", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_mechanical: material_list / assembly_properties", + "gapDetail": "Material identity and resulting modeled mass/density; no generic material-property catalog or custom-material editor.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create-custom-material", + "file": "src/fusion_cam/cli.py", + "line": 548, + "description": "Copy material + overrides (requires --mode full)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L548", + "coverage": "script-only", + "category": "Physical materials", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "assign-body-material", + "file": "src/fusion_cam/cli.py", + "line": 580, + "description": "Assign physical material to body (requires --mode full)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L580", + "coverage": "dedicated", + "category": "Physical materials", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_mechanical: material_assign", + "gapDetail": "Loaded library/document material IDs; native component/body assignment and measured readback.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "update-setup-machine-params", + "file": "src/fusion_cam/cli.py", + "line": 597, + "description": "Update machine params on setup (requires --mode full)", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L597", + "coverage": "script-only", + "category": "CAM", + "baselineCoverage": "script-only", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "debug", + "file": "src/fusion_cam/cli.py", + "line": 618, + "description": "Run arbitrary Python on Fusion main thread", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L618", + "coverage": "dedicated", + "category": "Execution and recovery", + "baselineCoverage": "dedicated script executor", + "baselineGap": false, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "version", + "file": "src/fusion_cam/cli.py", + "line": 658, + "description": "Print CLI / package version JSON", + "sourceUrl": "https://github.com/BJam/fusion-cam-mcp/blob/144233f45cf9f338fcc11a96ee60df02b24ea9c5/src/fusion_cam/cli.py#L658", + "coverage": "dedicated", + "category": "Connection and version", + "baselineCoverage": "partial dedicated (see per-feature mapping)", + "baselineGap": true, + "externalEvidence": "CLI source; no MCP protocol adapter in current tree", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "url": "https://github.com/BJam/fusion-cam-mcp.git", + "commitDate": "2026-03-29", + "toolCount": 0, + "licenseFiles": [ + "LICENSE" + ], + "inventoryKind": "CLI command rows; no MCP adapter", + "license": "MIT", + "rowCount": 21 + }, + "artapo": { + "commit": "13acbbc7fec9f078753fedb1a68952ab369ca24b", + "url": "https://github.com/artapo/fusion360-mcp.git", + "commitDate": "2026-09-04", + "toolCount": 1, + "rowCount": 5, + "inventoryKind": "MCP tools plus four script helpers", + "license": "Apache-2.0", + "licenseFiles": [ + "LICENSE" + ], + "tools": [ + { + "name": "fusion_eval", + "file": "src/fusion360_mcp/server.py", + "line": 27, + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/server.py#L27", + "description": "Execute Python with CAD globals and four helper functions.", + "inputSchema": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Python source to execute." + } + }, + "required": [ + "code" + ] + }, + "registrationKind": "MCP tool", + "category": "Execution and recovery", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "snapshot()", + "file": "src/fusion360_mcp/addin/Claude MCP.py", + "line": 98, + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/addin/Claude%20MCP.py#L98", + "description": "Compact model metrics and parameter inspection.", + "registrationKind": "helper inside fusion_eval", + "category": "Inspection", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "screenshot()", + "file": "src/fusion360_mcp/addin/Claude MCP.py", + "line": 157, + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/addin/Claude%20MCP.py#L157", + "description": "Inline viewport PNG with view and size selection.", + "registrationKind": "helper inside fusion_eval", + "category": "Viewport", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "api()", + "file": "src/fusion360_mcp/addin/Claude MCP.py", + "line": 188, + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/addin/Claude%20MCP.py#L188", + "description": "Inspect installed API methods, signatures and properties.", + "registrationKind": "helper inside fusion_eval", + "category": "API documentation", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mcp_call API documentation; fusion_run_modeling_script", + "gapDetail": "Documentation lookup exists; no dedicated installed-object signature introspection helper contract.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "undo()", + "file": "src/fusion360_mcp/addin/Claude MCP.py", + "line": 315, + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/addin/Claude%20MCP.py#L315", + "description": "Single-level deletion of newly added timeline entries.", + "registrationKind": "helper inside fusion_eval", + "externalCaveat": "Timeline-entry deletion does not restore edits to existing parameters/features or external files. Checkpoint is a timeline count, not a document-bound transaction; see _run_code and _undo.", + "category": "Execution and recovery", + "coverage": "delegated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "protocolFeatures": [ + { + "kind": "execution", + "feature": "Bearer-token protected local main-thread Python executor; inline image results and API signature suggestions", + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/server.py" + } + ] + }, + "ulfandpete": { + "commit": "390d60d36ecf86dee21ade287ec0ab060de6cd58", + "url": "https://github.com/ulfandpete/fusion360-mcp-server.git", + "commitDate": "2025-08-18", + "toolCount": 29, + "rowCount": 29, + "inventoryKind": "MCP tools", + "license": "AGPL-3.0; separate commercial licence", + "licenseFiles": [ + "LICENSE" + ], + "tools": [ + { + "name": "hello", + "file": "fusion360_mcp_server.py", + "line": 142, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L142", + "signature": "name: Optional[str]=None", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Connection and version", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "debug_test", + "file": "fusion360_mcp_server.py", + "line": 161, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L161", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Connection and version", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_server_info", + "file": "fusion360_mcp_server.py", + "line": 191, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L191", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Connection and version", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_fusion360_connection", + "file": "fusion360_mcp_server.py", + "line": 217, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L217", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Connection and version", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_fusion360_status", + "file": "fusion360_mcp_server.py", + "line": 288, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L288", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Connection and version", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_fusion360_cube", + "file": "fusion360_mcp_server.py", + "line": 371, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L371", + "signature": "size: Optional[float]=5.0, name: Optional[str]='MCP_Cube'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "composable", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_fusion360_sketch", + "file": "fusion360_mcp_server.py", + "line": 490, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L490", + "signature": "name: Optional[str]='MCP_Sketch', plane: Optional[str]='xy'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_fusion360_design_info", + "file": "fusion360_mcp_server.py", + "line": 544, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L544", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Inspection", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_fusion360_sketches", + "file": "fusion360_mcp_server.py", + "line": 590, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L590", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_fusion360_features", + "file": "fusion360_mcp_server.py", + "line": 637, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L637", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Feature history and health", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "fusion360_mcp_server.py", + "line": 684, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L684", + "signature": "plane: Optional[str]='xy', name: Optional[str]='MCP_Sketch'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sketch_rectangle", + "file": "fusion360_mcp_server.py", + "line": 808, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L808", + "signature": "sketch_name: str, corner1: List[float], corner2: List[float]", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sketch_circle", + "file": "fusion360_mcp_server.py", + "line": 969, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L969", + "signature": "sketch_name: str, center: List[float], radius: float", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "finish_sketch", + "file": "fusion360_mcp_server.py", + "line": 1154, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L1154", + "signature": "sketch_name: str", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "composable", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Typed operations solve at completion; an interactive sketch-edit mode need not be entered.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_sketches", + "file": "fusion360_mcp_server.py", + "line": 1292, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L1292", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude_sketch", + "file": "fusion360_mcp_server.py", + "line": 1442, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L1442", + "signature": "sketch_name: str, distance: float, direction: Optional[str]='positive'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve_sketch", + "file": "fusion360_mcp_server.py", + "line": 1642, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L1642", + "signature": "sketch_name: str, axis: str, angle: Optional[float]=360.0", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_extrusion_recommendations", + "file": "fusion360_mcp_server.py", + "line": 1859, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L1859", + "signature": "sketch_type: str, intended_use: str", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Engineering guidance", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md and live operation schemas", + "gapDetail": "Bridge guidance describes supported operations and selection/recovery contracts; no dedicated manufacturing heuristic recommendation service.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "boolean_union", + "file": "fusion360_mcp_server.py", + "line": 2154, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L2154", + "signature": "target_bodies: List[str], tool_bodies: List[str], keep_tools: Optional[bool]=False", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "boolean_subtract", + "file": "fusion360_mcp_server.py", + "line": 2413, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L2413", + "signature": "target_bodies: List[str], tool_bodies: List[str], keep_tools: Optional[bool]=False", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "boolean_intersect", + "file": "fusion360_mcp_server.py", + "line": 2673, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L2673", + "signature": "target_bodies: List[str], tool_bodies: List[str], keep_tools: Optional[bool]=False", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_boolean_recommendations", + "file": "fusion360_mcp_server.py", + "line": 2920, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L2920", + "signature": "operation_type: str, geometry_context: str", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Engineering guidance", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md and live operation schemas", + "gapDetail": "Bridge guidance describes supported operations and selection/recovery contracts; no dedicated manufacturing heuristic recommendation service.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_bodies", + "file": "fusion360_mcp_server.py", + "line": 3286, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L3286", + "signature": "", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Inspection", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_body_info", + "file": "fusion360_mcp_server.py", + "line": 3500, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L3500", + "signature": "body_name: str", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Inspection", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "combine_bodies", + "file": "fusion360_mcp_server.py", + "line": 3762, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L3762", + "signature": "bodies: List[str], operation: Optional[str]='auto'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_fillet", + "file": "fusion360_mcp_server.py", + "line": 4122, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L4122", + "signature": "edges: List[str], radius: float, fillet_type: Optional[str]='constant'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_chamfer", + "file": "fusion360_mcp_server.py", + "line": 4421, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L4421", + "signature": "edges: List[str], distance: float, angle: Optional[float]=45.0, chamfer_type: Optional[str]='distance'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_edge_recommendations", + "file": "fusion360_mcp_server.py", + "line": 4748, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L4748", + "signature": "body_name: str, manufacturing_process: str", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Engineering guidance", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md and live operation schemas", + "gapDetail": "Bridge guidance describes supported operations and selection/recovery contracts; no dedicated manufacturing heuristic recommendation service.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_edges", + "file": "fusion360_mcp_server.py", + "line": 5098, + "sourceUrl": "https://github.com/ulfandpete/fusion360-mcp-server/blob/390d60d36ecf86dee21ade287ec0ab060de6cd58/fusion360_mcp_server.py#L5098", + "signature": "body_name: str, edge_type: Optional[str]='all'", + "registrationKind": "MCP tool", + "externalCaveat": "Repository README describes the project as not working yet; no live behavior verified in this audit.", + "category": "Inspection", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "protocolFeatures": [] + }, + "zkbkb": { + "commit": "ea90968b3592a1a2b1d1091e50720373eacd435d", + "url": "https://github.com/zkbkb/fusion-mcp.git", + "commitDate": "2025-10-22", + "toolCount": 45, + "rowCount": 45, + "inventoryKind": "MCP tools", + "license": "CC-BY-NC-4.0; public source, not open source", + "licenseFiles": [ + "LICENSE" + ], + "tools": [ + { + "name": "connect_fusion360", + "file": "src/mcp_server.py", + "line": 124, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L124", + "signature": "", + "registrationKind": "MCP tool", + "backendCommands": [], + "category": "Connection and version", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "src/mcp_server.py", + "line": 155, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L155", + "signature": "plane: str='XY', name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_sketch" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_line", + "file": "src/mcp_server.py", + "line": 179, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L179", + "signature": "start_x: float, start_y: float, end_x: float, end_y: float, sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "draw_line" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "file": "src/mcp_server.py", + "line": 213, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L213", + "signature": "width: float, height: float, center_x: float=0.0, center_y: float=0.0, sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_rectangle" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "file": "src/mcp_server.py", + "line": 247, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L247", + "signature": "radius: float, center_x: float=0.0, center_y: float=0.0, sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_circle" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "src/mcp_server.py", + "line": 278, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L278", + "signature": "center_x: float, center_y: float, radius: float, start_angle: float, end_angle: float, sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "draw_arc" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_polygon", + "file": "src/mcp_server.py", + "line": 314, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L314", + "signature": "center_x: float, center_y: float, radius: float, sides: int, sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "draw_polygon" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_sketch_info", + "file": "src/mcp_server.py", + "line": 348, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L348", + "signature": "sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "get_sketches" + ], + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_geometric_constraint", + "file": "src/mcp_server.py", + "line": 368, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L368", + "signature": "constraint_type: str, entities: List[str], sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "add_geometric_constraint" + ], + "externalCaveat": "Registered tool sends add_geometric_constraint but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_dimensional_constraint", + "file": "src/mcp_server.py", + "line": 398, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L398", + "signature": "dimension_type: str, entities: List[str], value: float, sketch_name: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "add_dimensional_constraint" + ], + "externalCaveat": "Registered tool sends add_dimensional_constraint but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Sketches", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_dimension", + "gapDetail": "Distance/horizontal/vertical/radius/diameter/angle; expressions and named model parameters.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_extrude", + "file": "src/mcp_server.py", + "line": 435, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L435", + "signature": "sketch_name: str, distance: float, operation: str='new_body'", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_extrude" + ], + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude_feature", + "file": "src/mcp_server.py", + "line": 484, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L484", + "signature": "sketch_name: str, distance: float, operation: str='new_body'", + "registrationKind": "MCP tool", + "backendCommands": [], + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_revolve", + "file": "src/mcp_server.py", + "line": 501, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L501", + "signature": "sketch_name: str, axis_point: List[float], axis_direction: List[float], angle: float, operation: str='new_body'", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_revolve" + ], + "externalCaveat": "Registered tool sends create_revolve but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sweep", + "file": "src/mcp_server.py", + "line": 537, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L537", + "signature": "profile_sketch_name: str, path_sketch_name: str, operation: str='new_body', twist_angle: float=0.0", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_sweep" + ], + "externalCaveat": "Registered tool sends create_sweep but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_loft", + "file": "src/mcp_server.py", + "line": 570, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L570", + "signature": "profile_sketch_names: List[str], operation: str='new_body', guide_rails: Optional[List[str]]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_loft" + ], + "externalCaveat": "Registered tool sends create_loft but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_fillet", + "file": "src/mcp_server.py", + "line": 600, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L600", + "signature": "edge_ids: List[str], radius: float, fillet_type: str='constant'", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_fillet" + ], + "externalCaveat": "Registered tool sends create_fillet but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_chamfer", + "file": "src/mcp_server.py", + "line": 630, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L630", + "signature": "edge_ids: List[str], distance: float, chamfer_type: str='equal_distance'", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_chamfer" + ], + "externalCaveat": "Registered tool sends create_chamfer but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_shell", + "file": "src/mcp_server.py", + "line": 660, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L660", + "signature": "faces_to_remove: List[str], thickness: float, shell_direction: str='inside'", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_shell" + ], + "externalCaveat": "Registered tool sends create_shell but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "boolean_operation", + "file": "src/mcp_server.py", + "line": 690, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L690", + "signature": "target_body_id: str, tool_body_ids: List[str], operation: str", + "registrationKind": "MCP tool", + "backendCommands": [ + "boolean_operation" + ], + "externalCaveat": "Registered tool sends boolean_operation but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "split_body", + "file": "src/mcp_server.py", + "line": 720, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L720", + "signature": "body_id: str, splitting_tool_id: str, keep_both_sides: bool=True", + "registrationKind": "MCP tool", + "backendCommands": [ + "split_body" + ], + "externalCaveat": "Registered tool sends split_body but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=split", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_pattern_rectangular", + "file": "src/mcp_server.py", + "line": 750, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L750", + "signature": "features_to_pattern: List[str], direction1: List[float], direction2: List[float], quantity1: int, quantity2: int, distance1: float, distance2: float", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_pattern_rectangular" + ], + "externalCaveat": "Registered tool sends create_pattern_rectangular but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_pattern_circular", + "file": "src/mcp_server.py", + "line": 792, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L792", + "signature": "features_to_pattern: List[str], axis_point: List[float], axis_direction: List[float], quantity: int, angle: float", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_pattern_circular" + ], + "externalCaveat": "Registered tool sends create_pattern_circular but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_mirror", + "file": "src/mcp_server.py", + "line": 828, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L828", + "signature": "features_to_mirror: List[str], mirror_plane_point: List[float], mirror_plane_normal: List[float]", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_mirror" + ], + "externalCaveat": "Registered tool sends create_mirror but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Solid features", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "src/mcp_server.py", + "line": 862, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L862", + "signature": "name: str, description: str='', activate: bool=True", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_component" + ], + "externalCaveat": "Registered tool sends create_component but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Assemblies", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "insert_component_from_file", + "file": "src/mcp_server.py", + "line": 892, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L892", + "signature": "file_path: str, name: Optional[str]=None, transform_matrix: Optional[List[float]]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "insert_component_from_file" + ], + "externalCaveat": "Registered tool sends insert_component_from_file but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Assemblies", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: cad_import / occurrence_insert", + "gapDetail": "Local STEP/SAT wrapper import with provenance; existing definition re-instancing or independent copy. Arbitrary external linked/native document insertion is not included.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_assembly_info", + "file": "src/mcp_server.py", + "line": 922, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L922", + "signature": "", + "registrationKind": "MCP tool", + "backendCommands": [ + "get_assembly_info" + ], + "externalCaveat": "Registered tool sends get_assembly_info but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Assemblies", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_mate_constraint", + "file": "src/mcp_server.py", + "line": 939, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L939", + "signature": "constraint_type: str, entity1_id: str, entity2_id: str, offset: float=0.0, angle: float=0.0", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_mate_constraint" + ], + "externalCaveat": "Registered tool sends create_mate_constraint but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Joints and motion", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint", + "file": "src/mcp_server.py", + "line": 975, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L975", + "signature": "joint_type: str, origin_entity_id: str, origin_point: List[float], origin_axis: List[float], target_entity_id: str, target_point: List[float], target_axis: List[float], limits: Optional[Dict[str, Any]]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_joint" + ], + "externalCaveat": "Registered tool sends create_joint but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Joints and motion", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_motion_study", + "file": "src/mcp_server.py", + "line": 1020, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1020", + "signature": "name: str, joint_ids: List[str], duration: float=10.0, steps: int=100", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_motion_study" + ], + "externalCaveat": "Registered tool sends create_motion_study but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Joints and motion", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_interference", + "file": "src/mcp_server.py", + "line": 1053, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1053", + "signature": "component_ids: Optional[List[str]]=None, tolerance: float=0.001", + "registrationKind": "MCP tool", + "backendCommands": [ + "check_interference" + ], + "externalCaveat": "Registered tool sends check_interference but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Measurement and engineering checks", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_exploded_view", + "file": "src/mcp_server.py", + "line": 1080, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1080", + "signature": "name: str, explosion_direction: List[float]=[0, 0, 1], explosion_distance: float=100.0, component_ids: Optional[List[str]]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_exploded_view" + ], + "externalCaveat": "Registered tool sends create_exploded_view but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Joints and motion", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "animate_assembly", + "file": "src/mcp_server.py", + "line": 1113, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1113", + "signature": "name: str, keyframes: List[Dict[str, Any]], duration: float=5.0, loop: bool=False", + "registrationKind": "MCP tool", + "backendCommands": [ + "animate_assembly" + ], + "externalCaveat": "Registered tool sends animate_assembly but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Joints and motion", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_distance", + "file": "src/mcp_server.py", + "line": 1150, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1150", + "signature": "point1: List[float], point2: List[float], measurement_type: str='linear'", + "registrationKind": "MCP tool", + "backendCommands": [], + "category": "Measurement and engineering checks", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_angle", + "file": "src/mcp_server.py", + "line": 1207, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1207", + "signature": "point1: List[float], vertex: List[float], point2: List[float]", + "registrationKind": "MCP tool", + "backendCommands": [], + "category": "Measurement and engineering checks", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_area", + "file": "src/mcp_server.py", + "line": 1269, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1269", + "signature": "entity_id: str, entity_type: str='face'", + "registrationKind": "MCP tool", + "backendCommands": [ + "measure_area" + ], + "externalCaveat": "Registered tool sends measure_area but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Measurement and engineering checks", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity; fusion_physical_properties", + "gapDetail": "Explicit units; component-definition and occurrence scopes are separate.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_volume", + "file": "src/mcp_server.py", + "line": 1296, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1296", + "signature": "body_id: str", + "registrationKind": "MCP tool", + "backendCommands": [ + "measure_volume" + ], + "externalCaveat": "Registered tool sends measure_volume but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Measurement and engineering checks", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity; fusion_physical_properties", + "gapDetail": "Explicit units; component-definition and occurrence scopes are separate.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "calculate_mass_properties", + "file": "src/mcp_server.py", + "line": 1320, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1320", + "signature": "body_ids: List[str], material_density: float=7.85, units: str='metric'", + "registrationKind": "MCP tool", + "backendCommands": [ + "calculate_mass_properties" + ], + "externalCaveat": "Registered tool sends calculate_mass_properties but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Measurement and engineering checks", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: assembly_properties; fusion_physical_properties", + "gapDetail": "High-accuracy aggregate/root/component/occurrence/body mass, volume, area and center of mass with explicit units/scope.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_section_analysis", + "file": "src/mcp_server.py", + "line": 1350, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1350", + "signature": "cutting_plane_point: List[float], cutting_plane_normal: List[float], body_ids: List[str]", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_section_analysis" + ], + "externalCaveat": "Registered tool sends create_section_analysis but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191). Unreachable helper creates only a construction plane, not a section-analysis result.", + "category": "Measurement and engineering checks", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "perform_stress_analysis", + "file": "src/mcp_server.py", + "line": 1380, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1380", + "signature": "body_ids: List[str], material_properties: Dict[str, Any], loads: List[Dict[str, Any]], constraints: List[Dict[str, Any]], mesh_settings: Optional[Dict[str, Any]]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "perform_stress_analysis" + ], + "externalCaveat": "Registered tool sends perform_stress_analysis but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191). Unreachable helper only returns a configuration summary, not solved analysis results (lines1899-1990).", + "category": "Simulation", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "perform_modal_analysis", + "file": "src/mcp_server.py", + "line": 1416, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1416", + "signature": "body_ids: List[str], material_properties: Dict[str, Any], constraints: List[Dict[str, Any]], number_of_modes: int=10", + "registrationKind": "MCP tool", + "backendCommands": [ + "perform_modal_analysis" + ], + "externalCaveat": "Registered tool sends perform_modal_analysis but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191). Unreachable helper only returns a configuration summary, not solved analysis results (lines1899-1990).", + "category": "Simulation", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "perform_thermal_analysis", + "file": "src/mcp_server.py", + "line": 1449, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1449", + "signature": "body_ids: List[str], material_properties: Dict[str, Any], thermal_loads: List[Dict[str, Any]], thermal_constraints: List[Dict[str, Any]]", + "registrationKind": "MCP tool", + "backendCommands": [ + "perform_thermal_analysis" + ], + "externalCaveat": "Registered tool sends perform_thermal_analysis but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191). Unreachable helper only returns a configuration summary, not solved analysis results (lines1899-1990).", + "category": "Simulation", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "generate_analysis_report", + "file": "src/mcp_server.py", + "line": 1482, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1482", + "signature": "analysis_results: List[Dict[str, Any]], report_format: str='detailed', include_images: bool=True", + "registrationKind": "MCP tool", + "backendCommands": [], + "externalCaveat": "MCP handler simulates report generation: returns filenames, hard-coded elapsed time/size/page estimates without writing those files; conclusions may state all analyses succeeded based only on nonempty findings (mcp_server.py:1557-1586).", + "category": "Simulation", + "coverage": "script-only", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_parameter", + "file": "src/mcp_server.py", + "line": 1602, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1602", + "signature": "name: str, value: float, units: str='mm', comment: Optional[str]=None", + "registrationKind": "MCP tool", + "backendCommands": [ + "create_parameter" + ], + "externalCaveat": "Registered tool sends create_parameter but shipped add-in dispatcher returns Unknown command for it (src/fusion360/addin.py:168-191).", + "category": "Parameters and variants", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_create / parameter_batch", + "gapDetail": "Typed length/angle/mass/unitless user parameters; other unit kinds remain outside this schema.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_design_info", + "file": "src/mcp_server.py", + "line": 1634, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1634", + "signature": "", + "registrationKind": "MCP tool", + "backendCommands": [ + "get_design_info" + ], + "category": "Inspection", + "coverage": "partial", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_features_info", + "file": "src/mcp_server.py", + "line": 1643, + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1643", + "signature": "", + "registrationKind": "MCP tool", + "backendCommands": [ + "get_features" + ], + "category": "Feature history and health", + "coverage": "dedicated", + "externalEvidence": "Static source registration, not live verified; no downloaded code executed.", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "protocolFeatures": [ + { + "kind": "resource", + "uri": "fusion360://design/info", + "handler": "get_design_info_resource", + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1656" + }, + { + "kind": "resource", + "uri": "fusion360://context/summary", + "handler": "get_context_summary", + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1662" + } + ], + "sourceCaveats": [ + "Shipped add-in executes handlers directly from socket client threads (addin.py:89-116), without CustomEvent main-thread dispatch in this path.", + "Client/server both use one recv(4096) without message framing; large or segmented responses are not safely assembled." + ] + }, + "frankhommers": { + "commit": "cbd01e540af425a81913d4e6c0d49e09e723aeb6", + "url": "https://github.com/frankhommers/autodesk-fusion-mcp", + "date": "2026-09-26T20:02:15+02:00", + "license": "MIT", + "licenseFiles": [ + "licenses/frankhommers--autodesk-fusion-mcp/LICENSE" + ], + "inventoryKind": "registered MCP tools (static source)", + "tools": [ + { + "name": "call_autodesk_api", + "file": "fusion_bridge/tool_surface.py", + "line": 50, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L50", + "description": "Execute a generic Autodesk Fusion API call. Resolve a dotted API path, invoke it with args/kwargs, and optionally store the result.\n\nPath shortcuts: app, ui, design, rootComponent, $stored_name\n\nConstructors accepted in args/kwargs: Point3D, Vector3D, Point2D, ValueInput, ObjectCollection, Matrix3D\n\nExample: {\"api_path\": \"rootComponent.sketches.add\", \"args\": [\"rootComponent.xYConstructionPlane\"], \"remember_as\": \"my_sketch\"}", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Full Fusion API/script reachability is intentionally generic, not a dedicated sketch/feature/assembly/CAM authoring catalog.", + "inputSchema": { + "type": "object", + "properties": { + "api_path": { + "type": "string", + "description": "Dotted path to Fusion API method/property (e.g. 'rootComponent.sketches.add'). Shortcuts: app, ui, design, rootComponent, $stored_var" + }, + "args": { + "type": "array", + "items": {}, + "description": "Positional arguments. Can be literals, API paths, $references, or constructors like {\"type\": \"Point3D\", \"x\": 0, \"y\": 0, \"z\": 0}" + }, + "kwargs": { + "type": "object", + "description": "Keyword arguments for the API call" + }, + "remember_as": { + "type": "string", + "description": "Store the result with this name for later use via $name" + }, + "return_properties": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Which properties to return from the result object" + }, + "description": { + "type": "string", + "description": "Short description of what this API call does" + } + } + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "General Python/API execution exists; no matching persistent-session/object-store contract.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "capture_viewport", + "file": "fusion_bridge/tool_surface.py", + "line": 137, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L137", + "description": "Capture the active Fusion viewport as a PNG. Optional view and fit are temporary: the original camera is restored even on failure. Background can be viewport, transparent, or #RRGGBB. Crop uses pixels in the rendered image, origin top-left. Returns only the cropped region when crop is provided; limit 16 megapixels.", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "minimum": 0, + "maximum": 8192, + "description": "Rendered image width in pixels (default: 800; 0 uses viewport width)" + }, + "height": { + "type": "integer", + "minimum": 0, + "maximum": 8192, + "description": "Rendered image height in pixels (default: 600; 0 uses viewport height)" + }, + "view": { + "type": "string", + "enum": [ + "front", + "back", + "left", + "right", + "top", + "bottom", + "isometric", + "iso_top_left", + "iso_top_right", + "iso_bottom_left", + "iso_bottom_right" + ], + "description": "Temporary ViewCube-relative standard view; omit to keep current view." + }, + "fit": { + "type": "boolean", + "description": "Temporarily fit all graphics before capture (default: false)." + }, + "background": { + "type": "string", + "description": "viewport (default), transparent, or a solid #RRGGBB color." + }, + "anti_aliasing": { + "type": "boolean", + "description": "Smooth rendered edges (default: true)." + }, + "crop": { + "type": "object", + "description": "Rectangle inside the rendered image; output dimensions equal crop width/height.", + "properties": { + "x": { + "type": "integer", + "minimum": 0, + "maximum": 8192 + }, + "y": { + "type": "integer", + "minimum": 0, + "maximum": 8192 + }, + "width": { + "type": "integer", + "minimum": 1, + "maximum": 8192 + }, + "height": { + "type": "integer", + "minimum": 1, + "maximum": 8192 + } + }, + "required": [ + "x", + "y", + "width", + "height" + ], + "additionalProperties": false + } + } + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_script", + "file": "fusion_bridge/tool_surface.py", + "line": 316, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L316", + "description": "Delete a saved Python script by filename.", + "category": "Script storage and external tools", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Script filename to delete" + } + }, + "required": [ + "filename" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_python", + "file": "fusion_bridge/tool_surface.py", + "line": 101, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L101", + "description": "Run Python code inside the active Fusion 360 session with access to the full SDK. Variables persist across calls within the same session_id.", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Full Fusion API/script reachability is intentionally generic, not a dedicated sketch/feature/assembly/CAM authoring catalog.", + "inputSchema": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Python code to execute" + }, + "session_id": { + "type": "string", + "description": "Explicit identifier for related persistent Python calls. Required with persistent=true on MCP 2026-07-28; choose a unique value. Legacy clients may omit it (default: 'default')." + }, + "persistent": { + "type": "boolean", + "description": "Whether to persist session variables (default: true)" + }, + "description": { + "type": "string", + "description": "Short description of what the code does, shown in Fusion console" + } + }, + "required": [ + "code" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "General Python/API execution exists; no matching persistent-session/object-store contract.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fetch_api_documentation", + "file": "fusion_bridge/tool_surface.py", + "line": 206, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L206", + "description": "Search live Fusion API metadata through runtime introspection. Returns scored results with class overviews, properties, and function signatures.", + "category": "Developer and automation", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "search_term": { + "type": "string", + "description": "Search term (e.g. 'BRepBody', 'sketches', 'adsk.fusion.Sketch.add')" + }, + "category": { + "type": "string", + "description": "Search category: class_name, member_name, description, or all" + }, + "max_results": { + "type": "integer", + "description": "Maximum number of results (default: 3)" + } + }, + "required": [ + "search_term" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "delegated", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_read queryType=apiDocumentation", + "gapDetail": "Runtime Autodesk documentation selector; no separate mirrored documentation database.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fetch_design_guide", + "file": "fusion_bridge/tool_surface.py", + "line": 258, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L258", + "description": "Read the bundled Fusion design guide with workflow guidance, API patterns, naming rules, and modeling habits.", + "category": "Developer and automation", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "partial", + "gap": true, + "bridgeRoute": "Fusion bridge skill and typed schema descriptions", + "gapDetail": "Workflow guidance is documented; no dedicated best-practices MCP resource parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fetch_online_documentation", + "file": "fusion_bridge/tool_surface.py", + "line": 237, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L237", + "description": "Fetch Autodesk cloudhelp documentation for a specific Fusion API class or member.", + "category": "Developer and automation", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "class_name": { + "type": "string", + "description": "API class name (e.g. 'BRepBody', 'Sketch')" + }, + "member_name": { + "type": "string", + "description": "Optional member name (e.g. 'add', 'name')" + } + }, + "required": [ + "class_name" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "delegated", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_read queryType=apiDocumentation", + "gapDetail": "Runtime Autodesk documentation selector; no separate mirrored documentation database.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_active_selection", + "file": "fusion_bridge/tool_surface.py", + "line": 330, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L330", + "description": "Get the objects currently selected by the user in the Fusion 360 viewport. Returns detailed info per item (type, name, entityToken, parent component, and type-specific properties like area, volume, material). Each selected object is stored as $selection_0, $selection_1, etc. for use in follow-up API calls.", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical inspect / inspect_entity", + "gapDetail": "Typed explicit references exist; no dedicated current user-selection enumeration contract.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_viewport", + "file": "fusion_bridge/tool_surface.py", + "line": 171, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L171", + "description": "Read active viewport pixel dimensions and camera eye, target, up_vector, projection, and extents or perspective_angle. Lengths are cm and angles degrees. Pass the returned camera object to set_viewport to restore it. All clients share this viewport.", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_view; fusion_mcp_call screenshot", + "gapDetail": "Standard views/orbit/zoom and capture; arbitrary camera/render parameters require scripting.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_scripts", + "file": "fusion_bridge/tool_surface.py", + "line": 305, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L305", + "description": "List all saved Python scripts with metadata (filename, size, modified date).", + "category": "Script storage and external tools", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "load_script", + "file": "fusion_bridge/tool_surface.py", + "line": 291, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L291", + "description": "Load a previously saved Python script by filename.", + "category": "Script storage and external tools", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Script filename to load" + } + }, + "required": [ + "filename" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "manage_annotations", + "file": "fusion_bridge/tool_surface.py", + "line": 344, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L344", + "description": "Read and process the user's session-only selection annotations in the active document. list is read-only; claim requires id and current revision, locks editing, and returns a private claim_token and $references to the captured objects. Claim before working. complete requires id, claim_token and result; marks done and unlocks. On failure, cancellation or abandonment, release with id, claim_token and result explaining what happened; this unlocks and marks failed for user review. Never leave a claim unfinished. Do not act on annotations claimed by another agent. No automatic agent execution or timeout. Keep the same active document while working. References expire on completion/release. Each selection has a status: ok, changed (geometry differs from capture), split (references cover every piece), unverified (timeline rolled back) or missing (claim refused; ask the user to recapture). claim returns warnings for changed/split/unverified selections: check them before modifying anything.", + "category": "Geometry annotations and collaboration", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "action": { + "type": "string", + "enum": [ + "list", + "claim", + "complete", + "release" + ] + }, + "id": { + "type": "string", + "description": "Annotation ID from list." + }, + "revision": { + "type": "integer", + "minimum": 1, + "description": "Required for claim; use revision from list." + }, + "claim_token": { + "type": "string", + "description": "Token returned by your claim; required to complete/release." + }, + "result": { + "type": "string", + "description": "Required to complete/release. User-visible summary or failure reason." + } + }, + "required": [ + "action" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "operationVariants": [ + { + "name": "list", + "selector": "action", + "file": "fusion_bridge/tool_surface.py", + "line": 344, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L344", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "claim", + "selector": "action", + "file": "fusion_bridge/tool_surface.py", + "line": 344, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L344", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "complete", + "selector": "action", + "file": "fusion_bridge/tool_surface.py", + "line": 344, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L344", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "release", + "selector": "action", + "file": "fusion_bridge/tool_surface.py", + "line": 344, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L344", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "save_script", + "file": "fusion_bridge/tool_surface.py", + "line": 269, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L269", + "description": "Save a reusable Python script to the user scripts directory.", + "category": "Script storage and external tools", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Script filename (e.g. 'my_script.py')" + }, + "code": { + "type": "string", + "description": "Python code to save" + }, + "description": { + "type": "string", + "description": "Optional description of the script" + } + }, + "required": [ + "filename", + "code" + ] + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_viewport", + "file": "fusion_bridge/tool_surface.py", + "line": 180, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L180", + "description": "Control the active Fusion camera. Changes apply in order: projection/view, fit, orbit, pan, zoom. Standard views follow the user's ViewCube orientation. Orbit angles use right-hand rotation: yaw about camera up, pitch about camera right, roll about the viewing direction. Pan translates the camera along screen right/up in cm. Zoom >1 zooms in; <1 zooms out. Alternatively pass a complete camera snapshot alone. Returns actual camera state. This changes the shared viewport for all clients, without modifying model geometry.", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "camera": { + "type": "object", + "description": "Camera snapshot from get_viewport. Coordinates/extents in cm; perspective_angle in degrees. Use alone to restore a camera.", + "properties": { + "eye": { + "type": "object", + "properties": { + "x": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "y": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "z": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + } + }, + "required": [ + "x", + "y", + "z" + ], + "additionalProperties": false + }, + "target": { + "type": "object", + "properties": { + "x": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "y": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "z": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + } + }, + "required": [ + "x", + "y", + "z" + ], + "additionalProperties": false + }, + "up_vector": { + "type": "object", + "properties": { + "x": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "y": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + }, + "z": { + "type": "number", + "minimum": -1000000000000.0, + "maximum": 1000000000000.0 + } + }, + "required": [ + "x", + "y", + "z" + ], + "additionalProperties": false + }, + "projection": { + "type": "string", + "enum": [ + "orthographic", + "perspective", + "perspective_with_ortho_faces" + ] + }, + "extents": { + "type": "object", + "description": "Required for orthographic cameras only, in cm.", + "properties": { + "width": { + "type": "number", + "minimum": 1e-09, + "maximum": 1000000000000.0 + }, + "height": { + "type": "number", + "minimum": 1e-09, + "maximum": 1000000000000.0 + } + }, + "required": [ + "width", + "height" + ], + "additionalProperties": false + }, + "perspective_angle": { + "type": "number", + "minimum": 0.01, + "maximum": 179, + "description": "Required for perspective cameras only; angle in degrees." + } + }, + "required": [ + "eye", + "target", + "up_vector", + "projection" + ], + "additionalProperties": false + }, + "view": { + "type": "string", + "enum": [ + "front", + "back", + "left", + "right", + "top", + "bottom", + "isometric", + "iso_top_left", + "iso_top_right", + "iso_bottom_left", + "iso_bottom_right" + ] + }, + "projection": { + "type": "string", + "enum": [ + "orthographic", + "perspective", + "perspective_with_ortho_faces" + ] + }, + "fit": { + "type": "boolean", + "description": "Fit all graphics (default: false)." + }, + "orbit": { + "type": "object", + "additionalProperties": false, + "properties": { + "yaw": { + "type": "number", + "minimum": -360, + "maximum": 360 + }, + "pitch": { + "type": "number", + "minimum": -360, + "maximum": 360 + }, + "roll": { + "type": "number", + "minimum": -360, + "maximum": 360 + } + } + }, + "pan": { + "type": "object", + "additionalProperties": false, + "properties": { + "x": { + "type": "number", + "minimum": -1000000000.0, + "maximum": 1000000000.0 + }, + "y": { + "type": "number", + "minimum": -1000000000.0, + "maximum": 1000000000.0 + } + } + }, + "zoom": { + "type": "number", + "minimum": 0.01, + "maximum": 100 + }, + "description": { + "type": "string" + } + } + }, + "schemaSource": "literal static TOOL_DEFINITIONS with constants/comprehensions resolved by restricted AST interpreter", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_view; fusion_mcp_call screenshot", + "gapDetail": "Standard views/orbit/zoom and capture; arbitrary camera/render parameters require scripting.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "resources": [ + { + "uri": "fusion://design-guide", + "name": "Autodesk Fusion Design Guide", + "description": "Workflow guidance, API patterns, naming rules, and modeling habits for Autodesk Fusion.", + "file": "fusion_bridge/tool_surface.py", + "line": 20 + } + ], + "prompts": [], + "protocolFeatures": [ + "Generic API path calls and constructor/reference store", + "Python session_id persistent variables", + "Session-only selection annotation claim/release/complete workflow with document/revision guards", + "Viewport camera snapshot/restore, temporary camera capture, crop/background/anti-alias controls", + "MCP protocol negotiation, cancellation distinguishes queued vs already-running work", + "Subscriptions endpoint acknowledges empty notification filters; static tools/resources do not emit change events", + "Saved Python script CRUD", + "Runtime API introspection and online documentation lookup" + ], + "toolCount": 14, + "resourceCount": 1, + "promptCount": 0, + "operationVariantCount": 4, + "licenseClassification": "open-source license text present", + "mockMode": { + "observed": false, + "scope": "No mock-mode implementation found by bounded source search; runtime was not executed." + }, + "sourceFindings": [ + { + "severity": "informational", + "affectedTools": [ + "call_autodesk_api", + "execute_python" + ], + "file": "fusion_bridge/tool_surface.py", + "line": 47, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L47", + "message": "Full Fusion API/script reachability is intentionally generic, not a dedicated sketch/feature/assembly/CAM authoring catalog.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "informational", + "affectedTools": [], + "file": "lib/mcp_http_2026.py", + "line": 219, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/lib/mcp_http_2026.py#L219", + "message": "Subscriptions endpoint acknowledges an empty notifications filter because tool/resource lists are static; do not describe this as emitting model-change subscriptions.", + "confidence": "high confidence source path", + "officialApiSources": [] + } + ], + "commitDate": "2026-09-26", + "rowCount": 14 + }, + "joxoo": { + "commit": "06cc8fc0417f740122c5103ec17a69623c227d92", + "url": "https://github.com/joxoo/Fusion360MCP", + "date": "2026-05-02T11:13:09+02:00", + "license": "UNSPECIFIED (no license file at pinned HEAD)", + "licenseFiles": [], + "inventoryKind": "registered MCP tools (static source)", + "tools": [ + { + "name": "analyze_design", + "file": "modules/analysis.py", + "line": 64, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis.py#L64", + "category": "Measurement and engineering checks", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "action": { + "type": "string", + "default": "validate" + }, + "body": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/analysis.py", + "implementationLine": 30, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "get_assembly_tree", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 526, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "get_assembly_tree" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L526", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_feature_history", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 532, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "get_feature_history" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L532", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "capture_view", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 552, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "capture_view", + "width": 1920, + "height": 1080 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L552", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "capture_side", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 560, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "notes": [ + "Captures a right-side orthographic view" + ], + "example": { + "action": "capture_side" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L560", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "interference_check", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 572, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "notes": [ + "Detects collisions between all components" + ], + "example": { + "action": "interference_check" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L572", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "validate", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 590, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "validate" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L590", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "BRep solid status and feature/recompute health are covered; comparator mesh-body inventory/validation is not included.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "scene_map", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 596, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "scene_map" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L596", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "physical_data", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 600, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "physical_data" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L600", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: assembly_properties; fusion_physical_properties", + "gapDetail": "Mass, volume, area, density and center of mass are covered; the comparator also returns XYZ moments/products of inertia, which our typed contract does not expose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "bounding_box", + "selector": "action", + "file": "modules/analysis_scripts.py", + "line": 607, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "bounding_box", + "body": "Body1" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis_scripts.py#L607", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity; fusion_physical_properties", + "gapDetail": "Explicit units; component-definition and occurrence scopes are separate.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_3d_features", + "file": "modules/geometry.py", + "line": 177, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry.py#L177", + "category": "Solid features", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "operations": { + "type": "array" + } + }, + "required": [ + "operations" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/geometry.py", + "implementationLine": 123, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "extrude", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1137, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "sketch", + "dist" + ], + "example": { + "action": "extrude", + "sketch": "BaseSketch", + "dist": 2.0, + "op": "NewBody", + "component_path": "Root/Bracket" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1137", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_loft", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1158, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "sketch_names" + ], + "notes": [ + "Advanced: centerline_sketch uses a single connected curve/path" + ], + "example": { + "action": "create_loft", + "sketch_names": [ + "S1", + "S2" + ], + "centerline_sketch": "Path" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1158", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sweep", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1177, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "profile_sketch", + "path_sketch" + ], + "notes": [ + "Advanced: taper, twist", + "Angle values are radians when sent as plain numbers" + ], + "example": { + "action": "create_sweep", + "profile_sketch": "Circle", + "path_sketch": "Path", + "taper": 0.0436 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1177", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_revolve", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1193, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "profile_sketch" + ], + "notes": [ + "Advanced: axis, axis_sketch, angle", + "Angle values are radians when sent as plain numbers" + ], + "example": { + "action": "create_revolve", + "profile_sketch": "HalfCircle", + "axis": "y", + "angle": 3.1415 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1193", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_hole", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1213, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "dia" + ], + "notes": [ + "Provide depth unless through_all is true", + "Counterbore uses cb_dia and cb_depth", + "Countersink uses cs_dia and cs_angle in radians when sent as a plain number" + ], + "example": { + "action": "create_hole", + "body": "BracketBody", + "face_index": 0, + "x": 1.5, + "y": 1.5, + "dia": 0.5, + "depth": 1.2 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1213", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=hole", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draft", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1257, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "face_index", + "angle" + ], + "notes": [ + "angle is in radians when sent as a plain number", + "pull_plane defaults to XY" + ], + "example": { + "action": "draft", + "body": "Housing", + "face_index": 2, + "angle": 0.0349, + "pull_plane": "XY" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1257", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=draft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "circular_pattern", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1287, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "count" + ], + "notes": [ + "axis defaults to Z", + "total_angle is in radians when sent as a plain number" + ], + "example": { + "action": "circular_pattern", + "body": "Boss1", + "count": 6, + "axis": "Z", + "total_angle": 6.283185 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1287", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1303, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "count_x", + "dist_x" + ], + "notes": [ + "Optional second direction via count_y and dist_y", + "axis_one defaults to X and axis_two defaults to Y" + ], + "example": { + "action": "rectangular_pattern", + "body": "Rib1", + "count_x": 4, + "dist_x": 2.5, + "count_y": 2, + "dist_y": 8.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1303", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "path_pattern", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1331, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "path_sketch", + "count", + "dist" + ], + "notes": [ + "The path sketch should contain a single connected curve/path" + ], + "example": { + "action": "path_pattern", + "body": "HoleBoss", + "path_sketch": "PatternPath", + "count": 5, + "dist": 18.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1331", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1360, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "radius" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1360", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "chamfer", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1371, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "dist" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1371", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "combine", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1382, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "target", + "tools", + "op" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1382", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_box", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1395, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "l", + "w", + "h", + "name" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1395", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "Box", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1395, + "externalEvidence": "explicit dispatch comparison in generated script source", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1395", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry rectangle + sketch_dimension + feature_create extrude", + "gapDetail": "Parametric box workflow; new_design also has a simple driving-parameter box fixture.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_cylinder", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1413, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "r", + "h", + "name" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1413", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry circle + feature_create extrude", + "gapDetail": "Dimension the circle and extrusion for parameter-driven geometry.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "Cylinder", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1413, + "externalEvidence": "explicit dispatch comparison in generated script source", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1413", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry circle + feature_create extrude", + "gapDetail": "Dimension the circle and extrusion for parameter-driven geometry.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sphere", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1429, + "externalEvidence": "explicit dispatch comparison in generated script source", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1429", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "Sphere", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1429, + "externalEvidence": "explicit dispatch comparison in generated script source", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1429", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry arc/circle + feature_create revolve", + "gapDetail": "Build a valid half-disc or offset circular profile and revolve; no one-call primitive wrapper.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1454, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1454", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rename_body", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1470, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "new_name" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1470", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1482, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "notes": [ + "Supports translation (x, y, z) and rotation (rx, ry, rz in radians) around center of mass" + ], + "example": { + "action": "move_body", + "body": "Body1", + "x": 5, + "rz": 0.785 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1482", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: feature_create type=move", + "gapDetail": "Explicit guarded bodies with rotation axis/origin and mm translation; avoids latest/index ambiguity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_body_absolute", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1513, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "x", + "y", + "z" + ], + "notes": [ + "Supports optional rotation (rx, ry, rz in radians) after translation" + ], + "example": { + "action": "move_body_absolute", + "body": "Body1", + "x": 10, + "y": 0, + "z": 5, + "ry": 1.57 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1513", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_python", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1548, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "script" + ], + "notes": [ + "Expert: Executes arbitrary Python code within a batch operation. Provides access to adsk, app, design, root, active_comp, params, and returnValue list." + ], + "example": { + "action": "execute_python", + "script": "returnValue.append(active_comp.name)" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1548", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "pattern_feature", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1567, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "feature_name", + "count" + ], + "notes": [ + "Patterns a feature (e.g. Extrude, Hole) instead of a body. axis defaults to Z." + ], + "example": { + "action": "pattern_feature", + "feature_name": "Hole1", + "count": 12, + "axis": "Z" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1567", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern_feature", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1583, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "feature_name", + "count_x", + "dist_x" + ], + "notes": [ + "Rectangular pattern for a feature." + ], + "example": { + "action": "rectangular_pattern_feature", + "feature_name": "Hole1", + "count_x": 5, + "dist_x": 2.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1583", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror_feature", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1611, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "feature_name" + ], + "notes": [ + "Mirrors a feature across a plane (XY, XZ, YZ). plane defaults to XY." + ], + "example": { + "action": "mirror_feature", + "feature_name": "Hole1", + "plane": "XZ" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1611", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_construction_plane", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1632, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "notes": [ + "plane_type can be 'offset' (needs base_plane and offset) or 'angle' (needs axis and angle in radians)." + ], + "example": { + "action": "create_construction_plane", + "plane_type": "offset", + "base_plane": "XY", + "offset": 5.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1632", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: plane_create", + "gapDetail": "Offset and angle planes only; three-point/midplane/tangent forms remain gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_construction_axis", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1649, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "notes": [ + "axis_type can be 'two_point' (needs x1,y1,z1 and x2,y2,z2) or 'cylinder' (needs body and face_index)." + ], + "example": { + "action": "create_construction_axis", + "axis_type": "cylinder", + "body": "Cylinder1", + "face_index": 0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1649", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_thread", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1672, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "notes": [ + "Creates a thread on a cylindrical face. Optional: face_index (default 0), thread_type, size, designation, thread_class, is_modeled." + ], + "example": { + "action": "create_thread", + "body": "Stem", + "is_modeled": true + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1672", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=thread", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_coil", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1696, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "dia", + "height", + "pitch" + ], + "notes": [ + "Creates a coil/helix. Optional: x, y, z (center), op (NewBody/Join/Cut)." + ], + "example": { + "action": "create_coil", + "dia": 2.0, + "height": 10.0, + "pitch": 2.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1696", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "select_by_property", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1711, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "property" + ], + "notes": [ + "property can be 'area' or 'length'. Returns matching indices. Use min_val and max_val to filter." + ], + "example": { + "action": "select_by_property", + "body": "Body1", + "property": "area", + "min_val": 0, + "max_val": 5.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1711", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "align_to_normal", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1728, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "target_body" + ], + "notes": [ + "Aligns 'body' to the normal of 'target_body' at 'face_index'. align_axis specifies which axis of 'body' points along the normal (X, Y, or Z)." + ], + "example": { + "action": "align_to_normal", + "body": "Seed", + "target_body": "Head", + "face_index": 42, + "align_axis": "Z" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1728", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_taper_to_extrude", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1758, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "feature_name", + "taper" + ], + "notes": [ + "Applies a taper angle (in radians) to an existing Extrude feature." + ], + "example": { + "action": "apply_taper_to_extrude", + "feature_name": "StemExtrude", + "taper": 0.05 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1758", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "scale_body", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1769, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "factor" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1769", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1782, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "thick" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1782", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "split_body", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1799, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "tool" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1799", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=split", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_face", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1822, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "face_index" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1822", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "offset_face", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1834, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "face_index", + "dist" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1834", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_face", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1854, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "face_index" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1854", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_feature", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1871, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "feature_name" + ], + "example": { + "action": "edit_feature", + "feature_name": "BaseExtrude", + "suppress": true + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1871", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_feature", + "selector": "action", + "file": "modules/geometry_scripts.py", + "line": 1900, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "feature_name" + ], + "example": { + "action": "delete_feature", + "feature_name": "BadFillet" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1900", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_appearance", + "file": "modules/advanced_geometry.py", + "line": 130, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/advanced_geometry.py#L130", + "category": "Appearance and rendering", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body": { + "type": "string" + }, + "appearance": { + "type": "string" + } + }, + "required": [ + "body", + "appearance" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/advanced_geometry.py", + "implementationLine": 113, + "profiles": [ + "full" + ], + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "apply_custom_thread", + "file": "modules/threads.py", + "line": 34, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/threads.py#L34", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body_name": { + "type": "string" + }, + "thread_type": { + "type": "string" + }, + "size": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "thread_class": { + "type": "string", + "default": "" + }, + "is_modeled": { + "type": "boolean", + "default": true + } + }, + "required": [ + "body_name", + "thread_type", + "size", + "designation" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/threads.py", + "implementationLine": 20, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry + feature_create thread", + "gapDetail": "Native standards-based threads and typed part construction; custom thread-profile/bolt convenience generators are absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "capture_side", + "file": "modules/analysis.py", + "line": 66, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis.py#L66", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/analysis.py", + "implementationLine": 59, + "profiles": [ + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "capture_view", + "file": "modules/analysis.py", + "line": 65, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis.py#L65", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "default": 1280 + }, + "height": { + "type": "integer", + "default": 720 + } + } + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/analysis.py", + "implementationLine": 48, + "profiles": [ + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_bolt", + "file": "modules/mechanical.py", + "line": 58, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mechanical.py#L58", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "diameter_mm": { + "type": "number" + }, + "length_cm": { + "type": "number" + }, + "modeled": { + "type": "boolean", + "default": true + }, + "component_name": { + "type": "string", + "default": null + }, + "component_path": { + "type": "string", + "default": null + } + }, + "required": [ + "diameter_mm", + "length_cm" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/mechanical.py", + "implementationLine": 9, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_geometry + feature_create thread", + "gapDetail": "Native standards-based threads and typed part construction; custom thread-profile/bolt convenience generators are absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_gear", + "file": "modules/mechanical.py", + "line": 59, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mechanical.py#L59", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "num_teeth": { + "type": "integer" + }, + "module": { + "type": "number" + }, + "thickness": { + "type": "number", + "default": 1.0 + }, + "x": { + "type": "number", + "default": 0 + }, + "y": { + "type": "number", + "default": 0 + }, + "z": { + "type": "number", + "default": 0 + }, + "hole_diameter": { + "type": "number", + "default": 0 + }, + "pressure_angle": { + "type": "number", + "default": 20 + }, + "component_name": { + "type": "string", + "default": null + }, + "component_path": { + "type": "string", + "default": null + } + }, + "required": [ + "num_teeth", + "module" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/mechanical.py", + "implementationLine": 30, + "profiles": [ + "full" + ], + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_loft", + "file": "modules/advanced_geometry.py", + "line": 125, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/advanced_geometry.py#L125", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_names": { + "type": "array" + }, + "centerline_sketch": { + "type": "string", + "default": null + }, + "component_name": { + "type": "string", + "default": null + }, + "component_path": { + "type": "string", + "default": null + } + }, + "required": [ + "sketch_names" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/advanced_geometry.py", + "implementationLine": 13, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_revolve", + "file": "modules/advanced_geometry.py", + "line": 127, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/advanced_geometry.py#L127", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "profile_sketch": { + "type": "string" + }, + "axis": { + "type": "string", + "default": "z" + }, + "axis_sketch": { + "type": "string", + "default": null + }, + "angle": { + "type": "number", + "default": 6.283185 + }, + "component_name": { + "type": "string", + "default": null + }, + "component_path": { + "type": "string", + "default": null + } + }, + "required": [ + "profile_sketch" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/advanced_geometry.py", + "implementationLine": 63, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "modules/sketch.py", + "line": 300, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch.py#L300", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "plane_name": { + "type": "string", + "default": "XY" + }, + "name": { + "type": "string", + "default": "Sketch1" + }, + "body_name": { + "type": "string", + "default": null + }, + "face_index": { + "type": "integer", + "default": 0 + }, + "component_name": { + "type": "string", + "default": null + }, + "component_path": { + "type": "string", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/sketch.py", + "implementationLine": 100, + "profiles": [ + "compact", + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sweep", + "file": "modules/advanced_geometry.py", + "line": 126, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/advanced_geometry.py#L126", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "profile_sketch": { + "type": "string" + }, + "path_sketch": { + "type": "string" + }, + "taper": { + "type": "number", + "default": 0 + }, + "twist": { + "type": "number", + "default": 0 + }, + "component_name": { + "type": "string", + "default": null + }, + "component_path": { + "type": "string", + "default": null + } + }, + "required": [ + "profile_sketch", + "path_sketch" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/advanced_geometry.py", + "implementationLine": 33, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_feature", + "file": "modules/geometry.py", + "line": 179, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry.py#L179", + "category": "Feature history and health", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "feature_name": { + "type": "string" + } + }, + "required": [ + "feature_name" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/geometry.py", + "implementationLine": 203, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "describe_tool_actions", + "file": "modules/design.py", + "line": 108, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design.py#L108", + "category": "Developer and automation", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "tool_name": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/design.py", + "implementationLine": 88, + "profiles": [ + "compact", + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "direct_api_access", + "file": "modules/design.py", + "line": 106, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design.py#L106", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "script": { + "type": "string" + } + }, + "required": [ + "script" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/design.py", + "implementationLine": 60, + "profiles": [ + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_assembly", + "file": "modules/assembly.py", + "line": 57, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly.py#L57", + "category": "Assemblies", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "operations": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "required": [ + "operations" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/assembly.py", + "implementationLine": 39, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "create_component", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 127, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action", + "name" + ], + "example": { + "action": "create_component", + "name": "Arm", + "component_path": "Root/Frame" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L127", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 141, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action", + "type" + ], + "example": { + "action": "create_joint", + "component1_path": "Root/Frame/Base", + "component2_path": "Root/Frame/Arm", + "type": "Rigid" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L141", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rename_component", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 157, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action", + "new_name" + ], + "example": { + "action": "rename_component", + "target_component_path": "Root/Frame/Arm", + "new_name": "Arm_Main" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L157", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_metadata", + "gapDetail": "Definition rename affects all its occurrences.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_component", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 168, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "delete_component", + "target_component_path": "Root/Frame/Arm" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L168", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: occurrence_delete", + "gapDetail": "Deletes exact selected instance; bulk deletion of every instance of a definition is not a one-call operation.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_component", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 175, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action" + ], + "example": { + "action": "move_component", + "target_component_path": "Root/Frame/Arm", + "x": 10, + "y": 0, + "z": 5 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L175", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: occurrence_update", + "gapDetail": "Absolute instance pose in assembly context, grounding checks and captured position. Relative motion requires composing the requested pose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_as_built_joint", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 195, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action", + "type" + ], + "notes": [ + "Creates a joint between parts already in position" + ], + "example": { + "action": "create_as_built_joint", + "component1_path": "Root/Fuselage", + "component2_path": "Root/Cockpit", + "type": "Rigid" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L195", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "As-built rigid/revolute/slider/cylindrical/pin-slot/planar/ball motion with explicit geometry and joint-coordinate axes.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_contact_sets", + "selector": "action", + "file": "modules/assembly_scripts.py", + "line": 209, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "action", + "enable" + ], + "notes": [ + "Enables/disables physical collision simulation" + ], + "example": { + "action": "set_contact_sets", + "enable": true + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/assembly_scripts.py#L209", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_feature", + "file": "modules/geometry.py", + "line": 178, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry.py#L178", + "category": "Feature history and health", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "feature_name": { + "type": "string" + }, + "new_name": { + "type": "string", + "default": null + }, + "suppress": { + "type": "boolean", + "default": null + }, + "value": { + "type": "string", + "default": null + } + }, + "required": [ + "feature_name" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/geometry.py", + "implementationLine": 182, + "profiles": [ + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_edit", + "gapDetail": "Rename, suppression and expressions owned by that feature; arbitrary feature-definition replacement/reordering absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_forms", + "file": "modules/forms.py", + "line": 23, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms.py#L23", + "category": "Surface and mesh", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. The dispatch accepts revolve/sweep/loft but only extrude has a body; the other three append no result and finish as OK (line391). These accepted actions are placeholders/no-ops, despite existing unregistered helper builders elsewhere. Form extrusion calls formFeatures.addExtrude, which is absent from the documented FormFeatures API; its exception becomes action:ERR:..., while modules/forms.py:17 only tests ERR_, allowing false success. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "operations": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "required": [ + "operations" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/forms.py", + "implementationLine": 8, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "extrude", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 358, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "sketch", + "dist" + ], + "example": { + "action": "extrude", + "sketch": "FormSketch", + "dist": 1.5, + "component_path": "Root/Concept" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L358", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 358, + "externalEvidence": "concrete no-op branch", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L358", + "externalCaveat": "Accepted by outer branch but no implementation; result defaults to OK.", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 358, + "externalEvidence": "concrete no-op branch", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L358", + "externalCaveat": "Accepted by outer branch but no implementation; result defaults to OK.", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 358, + "externalEvidence": "concrete no-op branch", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L358", + "externalCaveat": "Accepted by outer branch but no implementation; result defaults to OK.", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_display_mode", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 371, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "set_display_mode", + "body": "TSplineBody1", + "mode": "Smooth" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L371", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "clear_symmetry", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 377, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "clear_symmetry", + "body": "TSplineBody1" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L377", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "convert", + "selector": "action", + "file": "modules/forms_scripts.py", + "line": 382, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "convert", + "body": "TSplineBody1" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L382", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_mesh", + "file": "modules/mesh.py", + "line": 44, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh.py#L44", + "category": "Surface and mesh", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Batch entries such as remesh:ERR_NOT_A_MESH and action:ERR:... do not match core/error_handler.py:map_result_error exact-key or startswith ERR_ checks; edit_mesh can report success for rejected/failed entries. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "operations": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "required": [ + "operations" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/mesh.py", + "implementationLine": 28, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "remesh", + "selector": "action", + "file": "modules/mesh_scripts.py", + "line": 153, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "remesh", + "body": "MeshBody1", + "density": 0.5 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh_scripts.py#L153", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "smooth", + "selector": "action", + "file": "modules/mesh_scripts.py", + "line": 158, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "smooth", + "body": "MeshBody1", + "smoothing": 0.5 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh_scripts.py#L158", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "repair", + "selector": "action", + "file": "modules/mesh_scripts.py", + "line": 163, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "repair", + "body": "MeshBody1", + "repair_type": "infoTypeDefault" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh_scripts.py#L163", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "convert", + "selector": "action", + "file": "modules/mesh_scripts.py", + "line": 168, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "example": { + "action": "convert", + "body": "MeshBody1", + "conv_type": "infoPrismatic" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh_scripts.py#L168", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_parameters", + "file": "modules/parameters.py", + "line": 37, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/parameters.py#L37", + "category": "Parameters", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "operations": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "required": [ + "operations" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/parameters.py", + "implementationLine": 21, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "set", + "selector": "action", + "file": "modules/parameters_scripts.py", + "line": 59, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "name", + "expr" + ], + "example": { + "action": "set", + "name": "wall_thickness", + "expr": "2 mm", + "unit": "mm", + "comment": "default wall" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/parameters_scripts.py#L59", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete", + "selector": "action", + "file": "modules/parameters_scripts.py", + "line": 73, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "name" + ], + "example": { + "action": "delete", + "name": "legacy_parameter" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/parameters_scripts.py#L73", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_batch action=delete", + "gapDetail": "Deletes user parameters only; failed downstream recompute aborts the batch.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": false, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_sketch", + "file": "modules/sketch.py", + "line": 301, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch.py#L301", + "category": "Sketches", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string", + "default": "" + }, + "operations": { + "type": "array", + "default": null + }, + "sketch_ref": { + "type": "object", + "default": null + }, + "component_name": { + "type": "string", + "default": "" + }, + "component_path": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/sketch.py", + "implementationLine": 236, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "draw_line", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 829, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x1", + "y1", + "x2", + "y2" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L829", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 834, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x", + "y", + "r" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L834", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 839, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x1", + "y1", + "x2", + "y2" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L839", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_center_rectangle", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 844, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "x", + "y" + ], + "notes": [ + "cx and cy define the rectangle center; x and y define a corner" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L844", + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Convert center/width/height into two opposite corners.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_three_point_rectangle", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 849, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x1", + "y1", + "x2", + "y2", + "x3", + "y3" + ], + "notes": [ + "x1,y1 and x2,y2 define the base edge; x3,y3 defines the third corner side" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L849", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_polygon", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 855, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "r", + "sides" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L855", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_inscribed_polygon", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 861, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "r", + "sides" + ], + "notes": [ + "r is the radius from center to polygon vertices" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L861", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circumscribed_polygon", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 867, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "r", + "sides" + ], + "notes": [ + "r is the apothem radius from center to polygon sides" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L867", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_edge_polygon", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 874, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x1", + "y1", + "x2", + "y2", + "sides" + ], + "notes": [ + "x1,y1 and x2,y2 define one polygon edge", + "Optional flip switches the polygon to the opposite side of the input edge" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L874", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 880, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "sx", + "sy", + "angle" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L880", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_spline", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 886, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "pts" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L886", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_slot", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 892, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x1", + "y1", + "x2", + "y2", + "width" + ], + "notes": [ + "Creates a center-to-center slot", + "x1,y1 and x2,y2 define the centers of the slot end arcs", + "width uses Fusion Design length units, typically cm" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L892", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=slot", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_overall_slot", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 898, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "x1", + "y1", + "x2", + "y2", + "width" + ], + "notes": [ + "Creates an overall slot", + "x1,y1 and x2,y2 define the outer slot endpoints", + "width uses Fusion Design length units, typically cm" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L898", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_center_point_slot", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 904, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "x", + "y", + "width" + ], + "notes": [ + "Creates a center-point slot", + "cx,cy is the slot center; x,y defines direction and center-to-end distance", + "width uses Fusion Design length units, typically cm" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L904", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_ellipse", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 910, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "mx", + "my", + "ox", + "oy" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L910", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_text", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 916, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "text", + "x", + "y" + ], + "notes": [ + "Optional height defaults to 1.0 in Fusion length units", + "Optional font sets the sketch text font name" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L916", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "import_svg", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 925, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "path" + ], + "notes": [ + "x and y are sketch offsets in cm", + "scale defaults to 1.0" + ], + "example": { + "action": "import_svg", + "path": "/absolute/path/logo.svg", + "x": 0, + "y": 0, + "scale": 1.0 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L925", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_spun_profile", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 937, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "notes": [ + "Creates a spun profile in the active sketch using Fusion Sketch.createSpunProfileInput", + "Supports body or selected body face input; face_index or face_indices can target specific faces", + "Optional bodies can provide multiple source bodies in one call", + "axis defaults to Z but can also be set with axis_curve_index/axis_curve_ref or axis_body plus axis_edge_index", + "Optional flags: flip_result, is_axis_projected, is_centerline_added, tolerance", + "Available in newer Fusion API versions" + ], + "example": { + "action": "create_spun_profile", + "body": "TurningBlank", + "axis": "z", + "is_centerline_added": true + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L937", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "project_geometry", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 965, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "notes": [ + "Uses Fusion Sketch.project2 when available and falls back to the retired project API on older Fusion versions", + "Supported selectors: current sketch curves via curve_index/curve_indices/curve_ref/curve_refs, or model entities via body plus optional face_index/face_indices, edge_index/edge_indices, vertex_index/vertex_indices", + "Optional is_linked controls whether projected geometry remains associatively linked to the source" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L965", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_project", + "gapDetail": "Associative projection of supported native entities; projection-to-surface/wrap modes are not included.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "project_cut_edges", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 972, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body" + ], + "notes": [ + "Intersects the specified body with the sketch plane and creates section curves" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L972", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "include_geometry", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 979, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "notes": [ + "Includes geometry into the sketch without planar projection", + "Supported selectors match project_geometry" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L979", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "project_to_surface", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 987, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "face_index", + "curve_index" + ], + "notes": [ + "Projects selected sketch curves onto one or more target faces", + "Use curve_index/curve_indices/curve_ref/curve_refs to select source sketch curves", + "Use face_index or face_indices to select target faces on body", + "projection_type accepts closest_point or along_vector", + "For along_vector, supply direction_axis, direction_curve_index, or direction_curve_ref" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L987", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "redefine", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1009, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "notes": [ + "Changes which plane or planar face the sketch is based on", + "Use plane_name with XY, XZ, or YZ, or use body plus face_index to redefine onto a planar face" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1009", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "find_connected_curves", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1032, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_index" + ], + "notes": [ + "Finds end-connected sketch curves starting from the specified seed curve", + "Useful before offset and chain-based operations", + "curve_ref.curve_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1032", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "offset", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1039, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "dist" + ], + "notes": [ + "Use curve_indices/curve_refs to offset an explicit selection, or seed_curve_index/seed_curve_ref to auto-expand a connected chain using findConnectedCurves" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1039", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "circular_pattern", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1073, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "cx", + "cy", + "count" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1073", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rectangular_pattern", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1084, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "count_x", + "dist_x" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1084", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_curve", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1116, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_index" + ], + "notes": [ + "curve_ref.curve_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1116", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_entities", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1123, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_indices", + "dx", + "dy" + ], + "notes": [ + "curve_refs with curve_index are also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1123", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "copy_entities", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1139, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_indices", + "dx", + "dy" + ], + "notes": [ + "curve_refs with window selection are also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1139", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror_entities", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1155, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_indices", + "mirror_curve_index" + ], + "notes": [ + "curve_refs and mirror_curve_ref are also accepted; the mirror axis must be a sketch line" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1155", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_construction", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1194, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_index" + ], + "notes": [ + "curve_ref.curve_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1194", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: sketch_edit", + "gapDetail": "Point/end/center/radius and fixed/construction flags; offset/trim/extend are separate gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "trim", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1201, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "curve_index", + "x", + "y" + ], + "notes": [ + "curve_ref.curve_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1201", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "clear_sketch", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1209, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1209", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_constraint", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1253, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "type" + ], + "notes": [ + "Use curve_index or curve_ref for single-curve constraints; use curve_indices or curve_refs for pair constraints", + "Accepted type aliases: HorizontalConstraint, VerticalConstraint, ParallelConstraint, PerpendicularConstraint, CollinearConstraint, TangentConstraint, ConcentricConstraint" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1253", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "remove_constraint", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1298, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "constraint_index" + ], + "notes": [ + "constraint_ref.constraint_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1298", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_dimension", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1308, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "dimension_index", + "value" + ], + "notes": [ + "dimension_ref.dimension_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1308", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_set / parameter_batch", + "gapDetail": "Target/revision guards and recompute health; expressions preserve parameter dependencies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_dimension", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1315, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "dimension_index" + ], + "notes": [ + "dimension_ref.dimension_index is also accepted" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1315", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_dimension", + "selector": "action", + "file": "modules/sketch_scripts.py", + "line": 1325, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "type" + ], + "notes": [ + "Use curve_index or curve_ref for single-curve dimensions; use curve_indices or curve_refs for pair dimensions", + "Accepted type aliases: Distance, DistanceDimension, RadialDimension, DiameterDimension, AngularDimension" + ] + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/sketch_scripts.py#L1325", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_dimension", + "gapDetail": "Distance/horizontal/vertical/radius/diameter/angle; expressions and named model parameters.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "edit_surfaces", + "file": "modules/surfaces.py", + "line": 23, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/surfaces.py#L23", + "category": "Surface and mesh", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Per-operation exceptions are action:ERR:..., but modules/surfaces.py:17 only checks ERR_; a failed surface operation can return the localized success message. Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "inputSchema": { + "type": "object", + "properties": { + "operations": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "required": [ + "operations" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/surfaces.py", + "implementationLine": 8, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "patch", + "selector": "action", + "file": "modules/surfaces_scripts.py", + "line": 249, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "sketch" + ], + "example": { + "action": "patch", + "sketch": "SurfaceProfile", + "component_path": "Root/Fairing" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/surfaces_scripts.py#L249", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "offset", + "selector": "action", + "file": "modules/surfaces_scripts.py", + "line": 259, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "dist" + ], + "example": { + "action": "offset", + "body": "SurfaceBody1", + "dist": 0.2 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/surfaces_scripts.py#L259", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "stitch", + "selector": "action", + "file": "modules/surfaces_scripts.py", + "line": 271, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body_names" + ], + "example": { + "action": "stitch", + "body_names": [ + "SurfA", + "SurfB" + ], + "tol": 0.1 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/surfaces_scripts.py#L271", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "thicken", + "selector": "action", + "file": "modules/surfaces_scripts.py", + "line": 285, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [ + "body", + "thick" + ], + "example": { + "action": "thicken", + "body": "SurfaceBody1", + "thick": 0.15 + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/surfaces_scripts.py#L285", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated operation for this action in this geometry/workflow context; general scripting is not implemented parity.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_python_script", + "file": "modules/geometry.py", + "line": 180, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry.py#L180", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "script": { + "type": "string" + }, + "params": { + "type": "object", + "default": null + } + }, + "required": [ + "script" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/geometry.py", + "implementationLine": 168, + "profiles": [ + "compact", + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_model", + "file": "modules/export.py", + "line": 27, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/export.py#L27", + "category": "Import and export", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Exporter scripts ignore exportManager.execute boolean, write directly to final paths, and can report Exported after Fusion returns false. manage_design export_step/export_stl branches share this pattern (design_scripts.py:75-89).", + "inputSchema": { + "type": "object", + "properties": { + "format": { + "type": "string" + }, + "filename": { + "type": "string", + "default": "model" + } + }, + "required": [ + "format" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/export.py", + "implementationLine": 8, + "profiles": [ + "compact", + "full" + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "STEP/STL/3MF/F3D/IGES/SAT/SMT/USDZ/FBX/SKP with runtime preflight; no generic OBJ or sketch DXF export.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_center_of_mass", + "file": "modules/advanced_geometry.py", + "line": 129, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/advanced_geometry.py#L129", + "category": "Measurement and engineering checks", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body": { + "type": "string" + } + }, + "required": [ + "body" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/advanced_geometry.py", + "implementationLine": 102, + "profiles": [ + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: assembly_properties; fusion_physical_properties", + "gapDetail": "High-accuracy aggregate/root/component/occurrence/body mass, volume, area and center of mass with explicit units/scope.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_feature_history", + "file": "modules/analysis.py", + "line": 67, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/analysis.py#L67", + "category": "Inspection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/analysis.py", + "implementationLine": 23, + "profiles": [ + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / health", + "gapDetail": "Timeline entities, suppression, warnings/errors and optional recompute.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "import_mesh", + "file": "modules/mesh.py", + "line": 43, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh.py#L43", + "category": "Mesh", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Calls ImportManager.createMeshImportOptions and MeshImportUnits; createMeshImportOptions is absent from the current documented ImportManager API. Documented mesh import uses MeshBodies.add.", + "inputSchema": { + "type": "object", + "properties": { + "path": { + "type": "string" + } + }, + "required": [ + "path" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/mesh.py", + "implementationLine": 19, + "profiles": [ + "compact", + "full" + ], + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_mcp_tools", + "file": "modules/design.py", + "line": 107, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design.py#L107", + "category": "Developer and automation", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/design.py", + "implementationLine": 76, + "profiles": [ + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_readiness / fusion_get_app_state", + "gapDetail": "Application identity and bridge/add-in version discovery; output schemas differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_parameters", + "file": "modules/parameters.py", + "line": 36, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/parameters.py#L36", + "category": "Parameters and variants", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/parameters.py", + "implementationLine": 14, + "profiles": [ + "compact", + "full" + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect; fusion_get_parameters", + "gapDetail": "User and model parameters with expressions and units.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "manage_design", + "file": "modules/design.py", + "line": 105, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design.py#L105", + "category": "Document and execution", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Exporter scripts ignore exportManager.execute boolean, write directly to final paths, and can report Exported after Fusion returns false. manage_design export_step/export_stl branches share this pattern (design_scripts.py:75-89). Cleanup catches deletion failures individually and still returns OK at line68; a partially cleaned design is reported as success.", + "inputSchema": { + "type": "object", + "properties": { + "action": { + "type": "string", + "default": "cleanup" + }, + "filename": { + "type": "string", + "default": "model" + } + } + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/design.py", + "implementationLine": 43, + "profiles": [ + "compact", + "full" + ], + "operationVariants": [ + { + "name": "cleanup", + "selector": "action", + "file": "modules/design_scripts.py", + "line": 25, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "example": { + "action": "cleanup" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design_scripts.py#L25", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "restart_mcp", + "selector": "action", + "file": "modules/design_scripts.py", + "line": 69, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "example": { + "action": "restart_mcp" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design_scripts.py#L69", + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_new", + "selector": "action", + "file": "modules/design_scripts.py", + "line": 72, + "externalEvidence": "explicit dispatch comparison in generated script source", + "documentedContract": { + "required": [], + "example": { + "action": "create_new" + } + }, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design_scripts.py#L72", + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: new_design", + "gapDetail": "Creates an unnamed unsaved parametric hybrid design to avoid save prompts.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_step", + "selector": "action", + "file": "modules/design_scripts.py", + "line": 75, + "externalEvidence": "explicit dispatch comparison in generated script source", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design_scripts.py#L75", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_stl", + "selector": "action", + "file": "modules/design_scripts.py", + "line": 81, + "externalEvidence": "explicit dispatch comparison in generated script source", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design_scripts.py#L81", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "See individual action rows in ACTION-MATRIX.md", + "gapDetail": "Grouped operation; coverage differs per selector. Every enumerated action has its own gap flag.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure_distance", + "file": "modules/advanced_geometry.py", + "line": 128, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/advanced_geometry.py#L128", + "category": "Measurement and engineering checks", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body1": { + "type": "string" + }, + "body2": { + "type": "string" + } + }, + "required": [ + "body1", + "body2" + ] + }, + "schemaSource": "statically inferred Python signature; lang hidden by register_tool; runtime FastMCP not imported", + "implementationFile": "modules/advanced_geometry.py", + "implementationLine": 91, + "profiles": [ + "full" + ], + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "resources": [], + "prompts": [], + "protocolFeatures": [ + "Compact15/full31 API registration profiles; full is opt-in", + "stdio/SSE/streamable-http transport choices", + "English schema descriptions and hidden lang runtime parameter; argument aliases", + "File/script execution bridge with structured bridge error mapping", + "Operation batches execute sequentially; no proven atomic rollback", + "Action discovery through describe_tool_actions and JSON guide" + ], + "apiProfiles": { + "default": "compact", + "compact": [ + "analyze_design", + "apply_3d_features", + "create_sketch", + "describe_tool_actions", + "edit_assembly", + "edit_forms", + "edit_mesh", + "edit_parameters", + "edit_sketch", + "edit_surfaces", + "execute_python_script", + "export_model", + "import_mesh", + "list_parameters", + "manage_design" + ], + "full": [ + "analyze_design", + "apply_3d_features", + "apply_appearance", + "apply_custom_thread", + "capture_side", + "capture_view", + "create_bolt", + "create_gear", + "create_loft", + "create_revolve", + "create_sketch", + "create_sweep", + "delete_feature", + "describe_tool_actions", + "direct_api_access", + "edit_assembly", + "edit_feature", + "edit_forms", + "edit_mesh", + "edit_parameters", + "edit_sketch", + "edit_surfaces", + "execute_python_script", + "export_model", + "get_center_of_mass", + "get_feature_history", + "import_mesh", + "list_mcp_tools", + "list_parameters", + "manage_design", + "measure_distance" + ] + }, + "toolCount": 31, + "resourceCount": 0, + "promptCount": 0, + "operationVariantCount": 118, + "licenseClassification": "public source, no reuse grant found", + "mockMode": { + "observed": false, + "scope": "No mock-mode implementation found by bounded source search; runtime was not executed." + }, + "sourceFindings": [ + { + "severity": "medium", + "affectedTools": [ + "edit_forms" + ], + "file": "modules/forms_scripts.py", + "line": 358, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L358", + "message": "The dispatch accepts revolve/sweep/loft but only extrude has a body; the other three append no result and finish as OK (line391). These accepted actions are placeholders/no-ops, despite existing unregistered helper builders elsewhere.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [ + "edit_forms" + ], + "file": "modules/forms_scripts.py", + "line": 362, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/forms_scripts.py#L362", + "message": "Form extrusion calls formFeatures.addExtrude, which is absent from the documented FormFeatures API; its exception becomes action:ERR:..., while modules/forms.py:17 only tests ERR_, allowing false success.", + "confidence": "high confidence source path", + "officialApiSources": [ + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/fusion_FormFeatures.htm" + ] + }, + { + "severity": "medium", + "affectedTools": [ + "edit_surfaces" + ], + "file": "modules/surfaces_scripts.py", + "line": 299, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/surfaces_scripts.py#L299", + "message": "Per-operation exceptions are action:ERR:..., but modules/surfaces.py:17 only checks ERR_; a failed surface operation can return the localized success message.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [ + "edit_mesh" + ], + "file": "modules/mesh_scripts.py", + "line": 148, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh_scripts.py#L148", + "message": "Batch entries such as remesh:ERR_NOT_A_MESH and action:ERR:... do not match core/error_handler.py:map_result_error exact-key or startswith ERR_ checks; edit_mesh can report success for rejected/failed entries.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [ + "import_mesh" + ], + "file": "modules/mesh_scripts.py", + "line": 104, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/mesh_scripts.py#L104", + "message": "Calls ImportManager.createMeshImportOptions and MeshImportUnits; createMeshImportOptions is absent from the current documented ImportManager API. Documented mesh import uses MeshBodies.add.", + "confidence": "high confidence source path", + "officialApiSources": [ + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/core_ImportManager.htm", + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/fusion_MeshBodies_add.htm" + ] + }, + { + "severity": "medium", + "affectedTools": [ + "export_model", + "manage_design" + ], + "file": "modules/export_scripts.py", + "line": 12, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/export_scripts.py#L12", + "message": "Exporter scripts ignore exportManager.execute boolean, write directly to final paths, and can report Exported after Fusion returns false. manage_design export_step/export_stl branches share this pattern (design_scripts.py:75-89).", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [ + "manage_design" + ], + "file": "modules/design_scripts.py", + "line": 25, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/design_scripts.py#L25", + "message": "Cleanup catches deletion failures individually and still returns OK at line68; a partially cleaned design is reported as success.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "informational", + "affectedTools": [ + "apply_3d_features", + "edit_assembly", + "edit_sketch", + "edit_forms", + "edit_surfaces", + "edit_mesh", + "edit_parameters" + ], + "file": "modules/geometry_scripts.py", + "line": 1137, + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/modules/geometry_scripts.py#L1137", + "message": "Grouped actions are sequential script batches, not evidenced atomic transactions. Successful earlier actions can remain when a later action errors.", + "confidence": "high confidence source path", + "officialApiSources": [] + } + ], + "commitDate": "2026-05-02", + "rowCount": 31 + }, + "prim": { + "commit": "13fd2ef6290ade0f076ff3227ddb64d58322f349", + "url": "https://github.com/prim-design/fusion-mcp", + "date": "2026-03-23T12:13:51-05:00", + "license": "MIT", + "licenseFiles": [ + "licenses/prim-design--fusion-mcp/LICENSE" + ], + "inventoryKind": "registered MCP tools (static source)", + "tools": [ + { + "name": "batch", + "file": "server/fusion360_mcp_server.py", + "line": 763, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L763", + "description": "Execute multiple commands in one round-trip for speed.\n\nArgs:\n commands: List of {\"method\": \"tool_name\", \"params\": {...}} dicts.\n\nExample:\n batch([\n {\"method\": \"create_sketch\", \"params\": {\"plane\": \"XY\"}},\n {\"method\": \"draw_rectangle\", \"params\": {\"x1\": -5, \"y1\": -5, \"x2\": 5, \"y2\": 5}},\n {\"method\": \"finish_sketch\", \"params\": {}},\n {\"method\": \"extrude\", \"params\": {\"distance\": 3}}\n ])", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Batch executes sequentially and returns on first exception without undoing earlier commands. Successful partial work remains after failure; not atomic.", + "inputSchema": { + "type": "object", + "properties": { + "commands": { + "type": "array" + } + }, + "required": [ + "commands" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: parameter_batch / transaction_probe", + "gapDetail": "Atomic parameter batch exists; arbitrary mixed-operation pipeline with file/cloud rollback is absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "chamfer", + "file": "server/fusion360_mcp_server.py", + "line": 272, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L272", + "description": "Bevel edges of a body.\n\nArgs:\n distance: Chamfer distance in cm.\n edges: List of edge indices. None = all edges.\n body_index: Which body (-1 = most recent).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "distance": { + "type": "number" + }, + "edges": { + "type": "array", + "default": null + }, + "body_index": { + "type": "integer", + "default": -1 + } + }, + "required": [ + "distance" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 595, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=chamfer", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "check_interference", + "file": "server/fusion360_mcp_server.py", + "line": 666, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L666", + "description": "Check for overlapping components (bounding box collision detection).", + "category": "Measurement and engineering checks", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1344, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: interference", + "gapDetail": "Explicit root-context occurrences/body proxies; overlap volume and touching classification, no new interference bodies.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "combine", + "file": "server/fusion360_mcp_server.py", + "line": 384, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L384", + "description": "Boolean operation between bodies.\n\nArgs:\n target_body: Index of body to modify.\n tool_bodies: List of body indices to use as tools.\n operation: \"cut\" (subtract), \"join\" (add), or \"intersect\".\n keep_tools: Keep tool bodies after operation.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "target_body": { + "type": "integer" + }, + "tool_bodies": { + "type": "array" + }, + "operation": { + "type": "string", + "default": "cut" + }, + "keep_tools": { + "type": "boolean", + "default": false + } + }, + "required": [ + "target_body", + "tool_bodies" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 738, + "sourceSelectors": [ + { + "selectorExpression": "op_map", + "values": [ + "cut", + "join", + "intersect" + ], + "file": "addin/FusionMCP.py", + "line": 750, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L750" + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=combine", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "server/fusion360_mcp_server.py", + "line": 421, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L421", + "description": "Create a new component from a body.\n\nArgs:\n name: Component name.\n from_body: Body index to convert (-1 = most recent body).", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": null + }, + "from_body": { + "type": "integer", + "default": -1 + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 787, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_joint", + "file": "server/fusion360_mcp_server.py", + "line": 512, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L512", + "description": "Create an as-built joint between two components (components stay in place).\n\nArgs:\n occurrence1: Name or index of first component.\n occurrence2: Name or index of second component.\n joint_type: One of: rigid, revolute, slider, cylindrical, pin_slot, planar, ball.\n axis: Primary joint axis \u2014 \"X\", \"Y\", or \"Z\".\n name: Optional name for the joint.\n angle: Initial rotation value in degrees (for revolute/cylindrical).\n offset: Initial slide value in cm (for slider/cylindrical).\n flip: Flip the joint direction.\n min_angle: Min rotation limit in degrees.\n max_angle: Max rotation limit in degrees.\n min_distance: Min slide limit in cm.\n max_distance: Max slide limit in cm.", + "category": "Joints and motion", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "occurrence1": { + "type": "string" + }, + "occurrence2": { + "type": "string" + }, + "joint_type": { + "type": "string", + "default": "rigid" + }, + "axis": { + "type": "string", + "default": "Z" + }, + "name": { + "type": "string", + "default": null + }, + "angle": { + "type": "number", + "default": 0 + }, + "offset": { + "type": "number", + "default": 0 + }, + "flip": { + "type": "boolean", + "default": false + }, + "min_angle": { + "type": "number", + "default": null + }, + "max_angle": { + "type": "number", + "default": null + }, + "min_distance": { + "type": "number", + "default": null + }, + "max_distance": { + "type": "number", + "default": null + } + }, + "required": [ + "occurrence1", + "occurrence2" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 969, + "sourceSelectors": [ + { + "selectorExpression": "axis_map", + "values": [ + "X", + "Y", + "Z" + ], + "file": "addin/FusionMCP.py", + "line": 1005, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1005" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "rigid" + ], + "file": "addin/FusionMCP.py", + "line": 980, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L980" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "rigid" + ], + "file": "addin/FusionMCP.py", + "line": 1012, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1012" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "revolute" + ], + "file": "addin/FusionMCP.py", + "line": 1014, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1014" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "slider" + ], + "file": "addin/FusionMCP.py", + "line": 1016, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1016" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "cylindrical" + ], + "file": "addin/FusionMCP.py", + "line": 1018, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1018" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "pin_slot" + ], + "file": "addin/FusionMCP.py", + "line": 1020, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1020" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "planar" + ], + "file": "addin/FusionMCP.py", + "line": 1025, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1025" + }, + { + "selectorExpression": "joint_type_str", + "values": [ + "ball" + ], + "file": "addin/FusionMCP.py", + "line": 1027, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1027" + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_create", + "gapDetail": "Seven as-built motion types. Geometry-moving regular joints, automatic mating/alignment and mate-type conversion are not implemented.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_rigid_group", + "file": "server/fusion360_mcp_server.py", + "line": 601, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L601", + "description": "Lock multiple components together so they move as one.\n\nArgs:\n occurrences: List of component names or indices.\n name: Optional name for the rigid group.", + "category": "Joints and motion", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "occurrences": { + "type": "array" + }, + "name": { + "type": "string", + "default": null + } + }, + "required": [ + "occurrences" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1217, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: rigid_group_create", + "gapDetail": "Exact occurrences and includeChildren policy.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch", + "file": "server/fusion360_mcp_server.py", + "line": 87, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L87", + "description": "Create a new sketch on a construction plane and enter edit mode.\n\nArgs:\n plane: \"XY\" (horizontal), \"XZ\" (vertical front), or \"YZ\" (side)\n offset: Distance to offset the sketch plane from origin (cm). Default 0.\n component: Component name to create sketch in (default: root component)\n\nWARNING - Z-negation: On XZ plane, sketch +Y = world -Z. On YZ plane, sketch +X = world -Z.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "plane": { + "type": "string", + "default": "XY" + }, + "offset": { + "type": "number", + "default": 0 + }, + "component": { + "type": "string", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 322, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body", + "file": "server/fusion360_mcp_server.py", + "line": 751, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L751", + "description": "Delete a body by index (-1 = most recent).", + "category": "Body operations", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body_index": { + "type": "integer", + "default": -1 + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1497, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_component", + "file": "server/fusion360_mcp_server.py", + "line": 439, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L439", + "description": "Delete a component by name or index.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": null + }, + "index": { + "type": "integer", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 824, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: occurrence_delete", + "gapDetail": "Deletes exact selected instance; bulk deletion of every instance of a definition is not a one-call operation.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_rigid_group", + "file": "server/fusion360_mcp_server.py", + "line": 619, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L619", + "description": "Delete a rigid group by name or index.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": null + }, + "index": { + "type": "integer", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1245, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: rigid_group_delete", + "gapDetail": "Exact guarded group with transaction recovery.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_sketch", + "file": "server/fusion360_mcp_server.py", + "line": 757, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L757", + "description": "Delete a sketch by index (-1 = most recent).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_index": { + "type": "integer", + "default": -1 + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1504, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draft", + "file": "server/fusion360_mcp_server.py", + "line": 301, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L301", + "description": "Apply draft angles to faces (for molding).\n\nArgs:\n angle: Draft angle in degrees.\n faces: List of face indices. None = all vertical faces.\n body_index: Which body (-1 = most recent).\n pull_direction: [x, y, z] pull direction vector. Default [0, 0, 1].", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "angle": { + "type": "number" + }, + "faces": { + "type": "array", + "default": null + }, + "body_index": { + "type": "integer", + "default": -1 + }, + "pull_direction": { + "type": "array", + "default": null + } + }, + "required": [ + "angle" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 642, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=draft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_arc", + "file": "server/fusion360_mcp_server.py", + "line": 131, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L131", + "description": "Draw an arc by center + start + end points in the active sketch (cm).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "center_x": { + "type": "number" + }, + "center_y": { + "type": "number" + }, + "start_x": { + "type": "number" + }, + "start_y": { + "type": "number" + }, + "end_x": { + "type": "number" + }, + "end_y": { + "type": "number" + } + }, + "required": [ + "center_x", + "center_y", + "start_x", + "start_y", + "end_x", + "end_y" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 383, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_circle", + "file": "server/fusion360_mcp_server.py", + "line": 125, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L125", + "description": "Draw a circle in the active sketch (cm).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "center_x": { + "type": "number" + }, + "center_y": { + "type": "number" + }, + "radius": { + "type": "number" + } + }, + "required": [ + "center_x", + "center_y", + "radius" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 374, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_line", + "file": "server/fusion360_mcp_server.py", + "line": 113, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L113", + "description": "Draw a straight line in the active sketch (cm).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "x1": { + "type": "number" + }, + "y1": { + "type": "number" + }, + "x2": { + "type": "number" + }, + "y2": { + "type": "number" + } + }, + "required": [ + "x1", + "y1", + "x2", + "y2" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 354, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_polygon", + "file": "server/fusion360_mcp_server.py", + "line": 145, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L145", + "description": "Draw a regular polygon (default hexagon) in the active sketch (cm).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "center_x": { + "type": "number" + }, + "center_y": { + "type": "number" + }, + "radius": { + "type": "number" + }, + "sides": { + "type": "integer", + "default": 6 + } + }, + "required": [ + "center_x", + "center_y", + "radius" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 395, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=polygon", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_rectangle", + "file": "server/fusion360_mcp_server.py", + "line": 119, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L119", + "description": "Draw a rectangle from corner (x1,y1) to corner (x2,y2) in the active sketch (cm).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "x1": { + "type": "number" + }, + "y1": { + "type": "number" + }, + "x2": { + "type": "number" + }, + "y2": { + "type": "number" + } + }, + "required": [ + "x1", + "y1", + "x2", + "y2" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 364, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_slot", + "file": "server/fusion360_mcp_server.py", + "line": 165, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L165", + "description": "Draw a slot (stadium shape) between two center points with given width (cm).", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "center1_x": { + "type": "number" + }, + "center1_y": { + "type": "number" + }, + "center2_x": { + "type": "number" + }, + "center2_y": { + "type": "number" + }, + "width": { + "type": "number" + } + }, + "required": [ + "center1_x", + "center1_y", + "center2_x", + "center2_y", + "width" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 426, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=slot", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "draw_spline", + "file": "server/fusion360_mcp_server.py", + "line": 154, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L154", + "description": "Draw a spline through a list of points in the active sketch.\n\nArgs:\n points: List of [x, y] coordinate pairs in cm. E.g. [[0,0], [1,2], [3,1]]", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "points": { + "type": "array" + } + }, + "required": [ + "points" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 414, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "drive_joint", + "file": "server/fusion360_mcp_server.py", + "line": 577, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L577", + "description": "Drive a joint to a specific position.\n\nArgs:\n joint: Joint name or index.\n angle: Target angle in degrees (revolute/cylindrical).\n distance: Target distance in cm (slider/cylindrical).", + "category": "Joints and motion", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "joint": { + "type": "string" + }, + "angle": { + "type": "number", + "default": null + }, + "distance": { + "type": "number", + "default": null + } + }, + "required": [ + "joint" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1139, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_python", + "file": "server/fusion360_mcp_server.py", + "line": 787, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L787", + "description": "Execute arbitrary Python code inside Fusion 360. Use this for operations\nnot covered by the curated tools.\n\nThe code runs with full access to:\n- adsk.core, adsk.fusion, adsk.cam\n- app (Application), ui (UserInterface), design (activeProduct), rootComp (rootComponent)\n- All Fusion 360 API classes and methods\n\nSet __return__ to pass a value back. Use print() for debug output.\n\nArgs:\n code: Python code to execute.\n session_id: Session ID for persisting variables across calls.\n\nExample:\n execute_python('''\n # Create a construction axis\n axes = rootComp.constructionAxes\n axisInput = axes.createInput()\n axisInput.setByTwoPoints(\n rootComp.originConstructionPoint,\n adsk.core.Point3D.create(10, 10, 0)\n )\n axis = axes.add(axisInput)\n __return__ = axis.name\n ''')", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Python exception is returned as a normal result dictionary with error/traceback; outer dispatch wraps it in success:true and the MCP send_command helper does not raise for this nested error.", + "inputSchema": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "session_id": { + "type": "string", + "default": "default" + } + }, + "required": [ + "code" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1516, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_3mf", + "file": "server/fusion360_mcp_server.py", + "line": 728, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L728", + "description": "Export design as 3MF (modern 3D printing format).", + "category": "Export", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Ignores ExportManager.execute boolean and returns exported filepath unconditionally; no staging/nonempty validation/destination preservation.", + "inputSchema": { + "type": "object", + "properties": { + "filepath": { + "type": "string" + } + }, + "required": [ + "filepath" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1461, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_step", + "file": "server/fusion360_mcp_server.py", + "line": 722, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L722", + "description": "Export design as STEP (CAD interchange).", + "category": "Export", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Ignores ExportManager.execute boolean and returns exported filepath unconditionally; no staging/nonempty validation/destination preservation.", + "inputSchema": { + "type": "object", + "properties": { + "filepath": { + "type": "string" + } + }, + "required": [ + "filepath" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1452, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_stl", + "file": "server/fusion360_mcp_server.py", + "line": 716, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L716", + "description": "Export design as STL (3D printing).", + "category": "Export", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Ignores ExportManager.execute boolean and returns exported filepath unconditionally; no staging/nonempty validation/destination preservation.", + "inputSchema": { + "type": "object", + "properties": { + "filepath": { + "type": "string" + } + }, + "required": [ + "filepath" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1443, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "Verified staged whole-design export with explicit overwrite. Comparator body-selection options are not all exposed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "extrude", + "file": "server/fusion360_mcp_server.py", + "line": 184, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L184", + "description": "Extrude a sketch profile into a 3D body.\n\nArgs:\n distance: Extrusion distance in cm. Negative = opposite direction.\n profile_index: Which profile to extrude (-1 = last, 0 = first).\n operation: \"new\" (new body), \"join\", \"cut\", or \"intersect\".\n taper_angle: Draft angle during extrusion in degrees (0 = straight).\n component: Component name (default: root).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "distance": { + "type": "number" + }, + "profile_index": { + "type": "integer", + "default": -1 + }, + "operation": { + "type": "string", + "default": "new" + }, + "taper_angle": { + "type": "number", + "default": 0 + }, + "component": { + "type": "string", + "default": null + } + }, + "required": [ + "distance" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 459, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fillet", + "file": "server/fusion360_mcp_server.py", + "line": 259, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L259", + "description": "Round edges of a body.\n\nArgs:\n radius: Fillet radius in cm.\n edges: List of edge indices (use get_body_info to find them). None = all edges.\n body_index: Which body (-1 = most recent).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "radius": { + "type": "number" + }, + "edges": { + "type": "array", + "default": null + }, + "body_index": { + "type": "integer", + "default": -1 + } + }, + "required": [ + "radius" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 573, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=fillet", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "finish_sketch", + "file": "server/fusion360_mcp_server.py", + "line": 102, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L102", + "description": "Exit sketch editing mode. MUST be called after drawing operations before 3D features.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 341, + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry", + "gapDetail": "Typed operations solve at completion; an interactive sketch-edit mode need not be entered.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "fit_view", + "file": "server/fusion360_mcp_server.py", + "line": 705, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L705", + "description": "Zoom to fit all geometry in the viewport.", + "category": "Viewport", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1360, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_view", + "gapDetail": "Named standard views and fit; view action schema governs exact options.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_body_info", + "file": "server/fusion360_mcp_server.py", + "line": 636, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L636", + "description": "Get detailed body info including edges and faces with indices.\nUse this before fillet, chamfer, shell, or draft to find the right indices.\n\nArgs:\n body_index: Which body (-1 = most recent).\n component: Component name (default: root).", + "category": "Inspection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body_index": { + "type": "integer", + "default": -1 + }, + "component": { + "type": "string", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1286, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "get_design_info", + "file": "server/fusion360_mcp_server.py", + "line": 630, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L630", + "description": "Get current design state: name, body count, sketch count, component count, active sketch, joints.", + "category": "Inspection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1270, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "import_mesh", + "file": "server/fusion360_mcp_server.py", + "line": 734, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L734", + "description": "Import STL/OBJ/3MF mesh file. Unit: mm, cm, or in.", + "category": "Mesh", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Uses ImportManager.createMeshImportOptions, absent from the current documented ImportManager API; this is not established working mesh import.", + "inputSchema": { + "type": "object", + "properties": { + "filepath": { + "type": "string" + }, + "unit": { + "type": "string", + "default": "mm" + } + }, + "required": [ + "filepath" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1470, + "sourceSelectors": [ + { + "selectorExpression": "unit_map", + "values": [ + "mm", + "cm", + "in" + ], + "file": "addin/FusionMCP.py", + "line": 1475, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1475" + } + ], + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_components", + "file": "server/fusion360_mcp_server.py", + "line": 433, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L433", + "description": "List all components with names, positions, and body counts.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 807, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Definition and occurrence identity, nested paths, metadata and transforms.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_joints", + "file": "server/fusion360_mcp_server.py", + "line": 590, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L590", + "description": "List all joints with their types, components, and current values.", + "category": "Joints and motion", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1175, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Typed motion readback and occurrence identity; exact output shape differs.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_rigid_groups", + "file": "server/fusion360_mcp_server.py", + "line": 613, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L613", + "description": "List all rigid groups and their member components.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1233, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect", + "gapDetail": "Rigid-group readback included in assembly state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "loft", + "file": "server/fusion360_mcp_server.py", + "line": 242, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L242", + "description": "Create a loft between two or more sketch profiles.\n\nArgs:\n profile_sketches: List of sketch names containing profiles to loft between.\n component: Component name (default: root).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "profile_sketches": { + "type": "array" + }, + "component": { + "type": "string", + "default": null + } + }, + "required": [ + "profile_sketches" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 543, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=loft", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "measure", + "file": "server/fusion360_mcp_server.py", + "line": 649, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L649", + "description": "Measure dimensions.\n\nArgs:\n target: \"body\" (volume, area, bbox), \"edge\" (length), or \"face\" (area).\n body_index: Which body (-1 = most recent).\n edge_index: Edge index (for target=\"edge\").\n face_index: Face index (for target=\"face\").", + "category": "Measurement and engineering checks", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "target": { + "type": "string", + "default": "body" + }, + "body_index": { + "type": "integer", + "default": -1 + }, + "edge_index": { + "type": "integer", + "default": null + }, + "face_index": { + "type": "integer", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1313, + "sourceSelectors": [ + { + "selectorExpression": "target", + "values": [ + "body" + ], + "file": "addin/FusionMCP.py", + "line": 1317, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1317" + }, + { + "selectorExpression": "target", + "values": [ + "edge" + ], + "file": "addin/FusionMCP.py", + "line": 1332, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1332" + }, + { + "selectorExpression": "target", + "values": [ + "face" + ], + "file": "addin/FusionMCP.py", + "line": 1336, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1336" + } + ], + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "mirror", + "file": "server/fusion360_mcp_server.py", + "line": 367, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L367", + "description": "Mirror a body across a plane.\n\nArgs:\n plane: \"XY\", \"XZ\", or \"YZ\" (default \"YZ\" for left-right symmetry).\n body_index: Which body (-1 = most recent).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "plane": { + "type": "string", + "default": "YZ" + }, + "body_index": { + "type": "integer", + "default": -1 + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 717, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=mirror", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "move_component", + "file": "server/fusion360_mcp_server.py", + "line": 462, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L462", + "description": "Move a component.\n\nArgs:\n x, y, z: Position (absolute) or offset (relative) in cm.\n name: Component name.\n index: Component index (alternative to name).\n absolute: True = set position, False = move by offset.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "x": { + "type": "number", + "default": 0 + }, + "y": { + "type": "number", + "default": 0 + }, + "z": { + "type": "number", + "default": 0 + }, + "name": { + "type": "string", + "default": null + }, + "index": { + "type": "integer", + "default": null + }, + "absolute": { + "type": "boolean", + "default": true + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 908, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: occurrence_update", + "gapDetail": "Absolute instance pose in assembly context, grounding checks and captured position. Relative motion requires composing the requested pose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "pattern_circular", + "file": "server/fusion360_mcp_server.py", + "line": 351, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L351", + "description": "Create a circular pattern of a body.\n\nArgs:\n count: Number of instances.\n angle: Total angle in degrees (360 = full circle).\n axis: \"X\", \"Y\", or \"Z\".\n body_index: Which body (-1 = most recent).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "angle": { + "type": "number", + "default": 360 + }, + "axis": { + "type": "string", + "default": "Z" + }, + "body_index": { + "type": "integer", + "default": -1 + } + }, + "required": [ + "count" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 699, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=circular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "pattern_rectangular", + "file": "server/fusion360_mcp_server.py", + "line": 328, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L328", + "description": "Create a rectangular pattern of a body.\n\nArgs:\n x_count: Instances in X direction.\n x_spacing: Spacing in X (cm).\n y_count: Instances in Y direction (default 1 = linear).\n y_spacing: Spacing in Y (cm).\n body_index: Which body (-1 = most recent).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "x_count": { + "type": "integer" + }, + "x_spacing": { + "type": "number" + }, + "y_count": { + "type": "integer", + "default": 1 + }, + "y_spacing": { + "type": "number", + "default": 0 + }, + "body_index": { + "type": "integer", + "default": -1 + } + }, + "required": [ + "x_count", + "x_spacing" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 677, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=rectangular_pattern", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rename", + "file": "server/fusion360_mcp_server.py", + "line": 445, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L445", + "description": "Rename a component, body, sketch, or joint.\n\nArgs:\n target: Current name or index of the item to rename.\n new_name: The new name.\n target_type: What to rename \u2014 \"component\", \"body\", \"sketch\", or \"joint\".\n index: Use index instead of name to identify the target.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "target": { + "type": "string" + }, + "new_name": { + "type": "string" + }, + "target_type": { + "type": "string", + "default": "component" + }, + "index": { + "type": "integer", + "default": null + } + }, + "required": [ + "target", + "new_name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 838, + "sourceSelectors": [ + { + "selectorExpression": "target_type", + "values": [ + "component" + ], + "file": "addin/FusionMCP.py", + "line": 845, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L845" + }, + { + "selectorExpression": "target_type", + "values": [ + "body" + ], + "file": "addin/FusionMCP.py", + "line": 854, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L854" + }, + { + "selectorExpression": "target_type", + "values": [ + "sketch" + ], + "file": "addin/FusionMCP.py", + "line": 869, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L869" + }, + { + "selectorExpression": "target_type", + "values": [ + "joint" + ], + "file": "addin/FusionMCP.py", + "line": 883, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L883" + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: component_metadata / feature_edit", + "gapDetail": "Component and feature names covered; arbitrary body/mesh/sketch rename parity is not claimed.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "revolve", + "file": "server/fusion360_mcp_server.py", + "line": 209, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L209", + "description": "Revolve a sketch profile around an axis.\n\nArgs:\n angle: Rotation angle in degrees (default 360 for full revolution).\n axis: Axis to revolve around \u2014 \"X\", \"Y\", or \"Z\" (default \"Y\").\n profile_index: Which profile (-1 = last).\n component: Component name (default: root).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "angle": { + "type": "number", + "default": 360 + }, + "axis": { + "type": "string", + "default": "Y" + }, + "profile_index": { + "type": "integer", + "default": -1 + }, + "component": { + "type": "string", + "default": null + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 491, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "rotate_component", + "file": "server/fusion360_mcp_server.py", + "line": 483, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L483", + "description": "Rotate a component.\n\nArgs:\n angle: Rotation in degrees.\n axis: \"X\", \"Y\", or \"Z\".\n name: Component name.\n index: Component index.\n origin_x/y/z: Center of rotation (cm).", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "angle": { + "type": "number" + }, + "axis": { + "type": "string", + "default": "Z" + }, + "name": { + "type": "string", + "default": null + }, + "index": { + "type": "integer", + "default": null + }, + "origin_x": { + "type": "number", + "default": 0 + }, + "origin_y": { + "type": "number", + "default": 0 + }, + "origin_z": { + "type": "number", + "default": 0 + } + }, + "required": [ + "angle" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 934, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: occurrence_update", + "gapDetail": "Absolute instance pose in assembly context, grounding checks and captured position. Relative motion requires composing the requested pose.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "screenshot", + "file": "server/fusion360_mcp_server.py", + "line": 672, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L672", + "description": "Capture a screenshot of the current Fusion 360 viewport from any angle.\nReturns the image directly so you can see the current state of the design.\n\nArgs:\n width: Image width in pixels (default 1920).\n height: Image height in pixels (default 1080).\n view: Preset view \u2014 \"front\", \"back\", \"top\", \"bottom\", \"left\", \"right\", \"iso\", \"iso_back\".\n If None, uses the current camera angle.\n eye_x/y/z: Custom camera eye position (cm). Overrides view preset.\n target_x/y/z: Custom camera target/look-at position (cm). Default (0,0,0).\n fit: Fit all geometry in view after setting angle (default True).", + "category": "View and selection", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "default": 1920 + }, + "height": { + "type": "integer", + "default": 1080 + }, + "view": { + "type": "string", + "default": null + }, + "eye_x": { + "type": "number", + "default": null + }, + "eye_y": { + "type": "number", + "default": null + }, + "eye_z": { + "type": "number", + "default": null + }, + "target_x": { + "type": "number", + "default": null + }, + "target_y": { + "type": "number", + "default": null + }, + "target_z": { + "type": "number", + "default": null + }, + "fit": { + "type": "boolean", + "default": true + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1365, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_take_screenshot / fusion_screenshot_fusion", + "gapDetail": "Background window capture; official viewport screenshot also available through MCP.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "set_joint_limits", + "file": "server/fusion360_mcp_server.py", + "line": 553, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L553", + "description": "Set limits on a joint.\n\nArgs:\n joint: Joint name or index.\n min_angle/max_angle: Rotation limits in degrees (revolute, cylindrical, pin_slot, planar, ball).\n min_distance/max_distance: Slide limits in cm (slider, cylindrical, pin_slot).\n rest_angle/rest_distance: Rest/home values.", + "category": "Joints and motion", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "joint": { + "type": "string" + }, + "min_angle": { + "type": "number", + "default": null + }, + "max_angle": { + "type": "number", + "default": null + }, + "min_distance": { + "type": "number", + "default": null + }, + "max_distance": { + "type": "number", + "default": null + }, + "rest_angle": { + "type": "number", + "default": null + }, + "rest_distance": { + "type": "number", + "default": null + } + }, + "required": [ + "joint" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1079, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: joint_edit", + "gapDetail": "Joint limits/rest/suppression and supported motion values with bounds checks; no animation or motion-study sequence authoring.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "shell", + "file": "server/fusion360_mcp_server.py", + "line": 285, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L285", + "description": "Hollow out a solid body.\n\nArgs:\n thickness: Wall thickness in cm.\n faces_to_remove: Face indices to remove (creates openings). None = closed shell.\n body_index: Which body (-1 = most recent).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "thickness": { + "type": "number" + }, + "faces_to_remove": { + "type": "array", + "default": null + }, + "body_index": { + "type": "integer", + "default": -1 + } + }, + "required": [ + "thickness" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 619, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=shell", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "split_body", + "file": "server/fusion360_mcp_server.py", + "line": 401, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L401", + "description": "Split a body using a plane or face.\n\nArgs:\n body_index: Body to split.\n split_tool: \"XY\", \"XZ\", \"YZ\", or a face reference.\n component: Component name (default: root).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body_index": { + "type": "integer" + }, + "split_tool": { + "type": "string" + }, + "component": { + "type": "string", + "default": null + } + }, + "required": [ + "body_index", + "split_tool" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 767, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=split", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "sweep", + "file": "server/fusion360_mcp_server.py", + "line": 226, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L226", + "description": "Sweep a profile along a path.\n\nArgs:\n profile_sketch: Name of sketch containing the profile.\n path_sketch: Name of sketch containing the sweep path.\n component: Component name (default: root).", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "profile_sketch": { + "type": "string" + }, + "path_sketch": { + "type": "string" + }, + "component": { + "type": "string", + "default": null + } + }, + "required": [ + "profile_sketch", + "path_sketch" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 514, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=sweep", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "undo", + "file": "server/fusion360_mcp_server.py", + "line": 745, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/server/fusion360_mcp_server.py#L745", + "description": "Undo recent operations.", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "default": 1 + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "addin/FusionMCP.py", + "implementationLine": 1490, + "coverage": "delegated", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_update", + "gapDetail": "Existing official desktop MCP proxy; requires that local MCP server enabled.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "resources": [], + "prompts": [], + "protocolFeatures": [ + "FastMCP stdio server over local newline-delimited TCP JSON bridge", + "Fusion CustomEvent marshals queued commands to main thread", + "execute_python persists non-callable variables by session_id", + "batch stops at first exception; previous commands remain applied", + "Root/component body and sketch ordinal selection defaults to latest item" + ], + "toolCount": 50, + "resourceCount": 0, + "promptCount": 0, + "operationVariantCount": 0, + "licenseClassification": "open-source license text present", + "mockMode": { + "observed": false, + "scope": "No mock-mode implementation found by bounded source search; runtime was not executed." + }, + "sourceFindings": [ + { + "severity": "medium", + "affectedTools": [ + "import_mesh" + ], + "file": "addin/FusionMCP.py", + "line": 1474, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1474", + "message": "Uses ImportManager.createMeshImportOptions, absent from the current documented ImportManager API; this is not established working mesh import.", + "confidence": "high confidence source path", + "officialApiSources": [ + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/core_ImportManager.htm", + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/fusion_MeshBodies_add.htm" + ] + }, + { + "severity": "medium", + "affectedTools": [ + "export_stl", + "export_step", + "export_3mf" + ], + "file": "addin/FusionMCP.py", + "line": 1443, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1443", + "message": "Ignores ExportManager.execute boolean and returns exported filepath unconditionally; no staging/nonempty validation/destination preservation.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [ + "batch" + ], + "file": "addin/FusionMCP.py", + "line": 208, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L208", + "message": "Batch executes sequentially and returns on first exception without undoing earlier commands. Successful partial work remains after failure; not atomic.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [ + "execute_python" + ], + "file": "addin/FusionMCP.py", + "line": 1561, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L1561", + "message": "Python exception is returned as a normal result dictionary with error/traceback; outer dispatch wraps it in success:true and the MCP send_command helper does not raise for this nested error.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "medium", + "affectedTools": [], + "file": "addin/FusionMCP.py", + "line": 138, + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/addin/FusionMCP.py#L138", + "message": "Queued main-thread work remains in the queue after the55-second transport waiter times out; no cancellation/idempotency ledger. Retrying can duplicate a delayed mutation.", + "confidence": "high confidence source path", + "officialApiSources": [] + } + ], + "commitDate": "2026-03-23", + "rowCount": 50 + }, + "Poyraxx": { + "commit": "2dfb68993caad514a1346a9641ca9f9d149c88c7", + "url": "https://github.com/Poyraxx/fusion-advanced-mcp-server", + "date": "2026-06-02T19:12:34+03:00", + "license": "GPL-3.0", + "licenseFiles": [ + "licenses/Poyraxx--fusion-advanced-mcp-server/LICENSE" + ], + "inventoryKind": "registered MCP tools (static source)", + "tools": [ + { + "name": "activate_electronics_document", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4336, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4336", + "description": "Activate an already open electronics schematic, board, project, or library by name.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "target": { + "type": "string", + "default": "schematic" + } + }, + "required": [ + "name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3499, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_activate_document", + "gapDetail": "Existing explicit document activation.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_sketch_constraint", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4261, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4261", + "description": "Apply a geometric constraint using sketch entity tokens.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "constraint_type": { + "type": "string" + }, + "entity_one_token": { + "type": "string", + "default": "" + }, + "entity_two_token": { + "type": "string", + "default": "" + }, + "entity_three_token": { + "type": "string", + "default": "" + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "constraint_type" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2987, + "sourceSelectors": [ + { + "selectorExpression": "key", + "values": [ + "coincident" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 2998, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L2998" + }, + { + "selectorExpression": "key", + "values": [ + "concentric" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3003, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3003" + }, + { + "selectorExpression": "key", + "values": [ + "midpoint", + "mid_point" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3008, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3008" + }, + { + "selectorExpression": "key", + "values": [ + "parallel" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3013, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3013" + }, + { + "selectorExpression": "key", + "values": [ + "perpendicular" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3018, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3018" + }, + { + "selectorExpression": "key", + "values": [ + "horizontal" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3023, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3023" + }, + { + "selectorExpression": "key", + "values": [ + "vertical" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3025, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3025" + }, + { + "selectorExpression": "key", + "values": [ + "equal" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3027, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3027" + }, + { + "selectorExpression": "key", + "values": [ + "symmetry" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3032, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3032" + }, + { + "selectorExpression": "key", + "values": [ + "tangent" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3038, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3038" + }, + { + "selectorExpression": "key", + "values": [ + "collinear" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3043, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3043" + }, + { + "selectorExpression": "key", + "values": [ + "smooth" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3048, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3048" + } + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_constraint", + "gapDetail": "Twelve constraint kinds, including fix; explicit selection from current sketch references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "add_sketch_dimension", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4266, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4266", + "description": "Add a driving sketch dimension using sketch entity tokens.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "dimension_type": { + "type": "string" + }, + "entity_one_token": { + "type": "string" + }, + "entity_two_token": { + "type": "string", + "default": "" + }, + "text_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "text_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "text_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "orientation": { + "type": "string", + "default": "aligned" + }, + "expression": { + "type": "string", + "default": "" + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "dimension_type", + "entity_one_token" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3066, + "sourceSelectors": [ + { + "selectorExpression": "dimension_key", + "values": [ + "distance", + "linear", + "length" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3076, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3076" + }, + { + "selectorExpression": "dimension_key", + "values": [ + "diameter", + "diametric" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3085, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3085" + }, + { + "selectorExpression": "dimension_key", + "values": [ + "radial", + "radius" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3092, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3092" + } + ], + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_dimension", + "gapDetail": "Distance/horizontal/vertical/radius/diameter/angle; expressions and named model parameters.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "begin_electronics_change", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4306, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4306", + "description": "Begin an electronics design-change transaction.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "change_id": { + "type": "string", + "default": "" + }, + "target": { + "type": "string", + "default": "active" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3374, + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "cancel_electronics_change", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4316, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4316", + "description": "Cancel the current electronics design-change transaction.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "target": { + "type": "string", + "default": "active" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3400, + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_component", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4201, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4201", + "description": "Create a new component in the active design.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "reuse_existing": { + "type": "boolean", + "default": true + } + }, + "required": [ + "name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2759, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: component_create", + "gapDetail": "Native Hybrid internal definition plus first occurrence; native Part/Assembly intents are not silently converted.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_electronics_sheet", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4301, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4301", + "description": "Create a new sheet in the active electronics schematic.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3351, + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_extrude", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4271, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4271", + "description": "Extrude a sketch profile into a 3D feature.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string", + "default": "" + }, + "distance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": "10 mm" + }, + "profile_index": { + "type": "integer", + "default": 0 + }, + "operation": { + "type": "string", + "default": "new_body" + }, + "component_name": { + "type": "string", + "default": "" + }, + "feature_name": { + "type": "string", + "default": "" + }, + "body_name": { + "type": "string", + "default": "" + }, + "direction": { + "type": "string", + "default": "positive" + }, + "profile_token": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3114, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=extrude", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_new_sketch", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4191, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4191", + "description": "Create a new sketch on the specified plane.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "plane_name": { + "type": "string" + }, + "component_name": { + "type": "string", + "default": "" + }, + "sketch_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "plane_name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2720, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_create", + "gapDetail": "Origin/construction planes and planar faces; native component-definition references.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_offset_plane", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4206, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4206", + "description": "Create a construction plane offset from an existing plane.", + "category": "Construction geometry", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "base_plane_name": { + "type": "string" + }, + "offset": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "component_name": { + "type": "string", + "default": "" + }, + "plane_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "base_plane_name", + "offset" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2792, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: plane_create", + "gapDetail": "Offset and angle planes only; three-point/midplane/tangent forms remain gaps.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_parameter", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4196, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4196", + "description": "Create or update a parameter in the active design.", + "category": "Parameters and variants", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "expression": { + "type": "string" + }, + "unit": { + "type": "string" + }, + "comment": { + "type": "string", + "default": "" + } + }, + "required": [ + "name", + "expression", + "unit" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2732, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: parameter_create / parameter_batch", + "gapDetail": "Typed length/angle/mass/unitless user parameters; other unit kinds remain outside this schema.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_revolve", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4276, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4276", + "description": "Revolve a sketch profile around an axis entity token.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string", + "default": "" + }, + "axis_token": { + "type": "string", + "default": "" + }, + "angle": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": "360 deg" + }, + "profile_index": { + "type": "integer", + "default": 0 + }, + "operation": { + "type": "string", + "default": "new_body" + }, + "component_name": { + "type": "string", + "default": "" + }, + "feature_name": { + "type": "string", + "default": "" + }, + "body_name": { + "type": "string", + "default": "" + }, + "profile_token": { + "type": "string", + "default": "" + }, + "axis_name": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3148, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: feature_create type=revolve", + "gapDetail": "Common solid operation is implemented; the full comparator option set is not promised. See native input schema for exact selections/extents.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_arc", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4251, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4251", + "description": "Create a sketch arc from center, start point, and sweep angle.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "center_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "center_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "start_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "start_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "sweep_angle": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "center_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "start_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "center_x", + "center_y", + "start_x", + "start_y", + "sweep_angle" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2948, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=arc", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_center_rectangle", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4246, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4246", + "description": "Create a center-point sketch rectangle.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "center_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "center_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "corner_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "corner_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "center_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "corner_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "center_x", + "center_y", + "corner_x", + "corner_y" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2931, + "coverage": "composable", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Convert center/width/height into two opposite corners.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_circle", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4236, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4236", + "description": "Create a sketch circle from a center point and radius.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "center_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "center_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "radius": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "center_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "center_x", + "center_y", + "radius" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2897, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=circle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_line", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4226, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4226", + "description": "Create a sketch line between two sketch-space points.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "start_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "start_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "end_x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "end_y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "start_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "end_z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "start_x", + "start_y", + "end_x", + "end_y" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2856, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_lines", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4231, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4231", + "description": "Create a polyline from multiple sketch-space points.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "points": { + "type": "array", + "items": { + "type": "object" + } + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "points" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2873, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=line", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_point", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4221, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4221", + "description": "Create a sketch point using sketch-space coordinates.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "x": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "y": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "z": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "x", + "y" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2842, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=point", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_rectangle", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4241, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4241", + "description": "Create a two-point sketch rectangle.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "x1": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "y1": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "x2": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "y2": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "z1": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "z2": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "default": 0.0 + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "x1", + "y1", + "x2", + "y2" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2914, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=rectangle", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "create_sketch_spline", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4256, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4256", + "description": "Create a fitted spline through multiple sketch-space points.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "points": { + "type": "array", + "items": { + "type": "object" + } + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name", + "points" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2966, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: sketch_geometry type=spline", + "gapDetail": "Native sketch-space mm; numeric angles deg. Exact comparator convenience arguments may require conversion.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "delete_body", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4281, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4281", + "description": "Delete one or more bodies from the active design.", + "category": "Body operations", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "body_name": { + "type": "string" + }, + "component_name": { + "type": "string", + "default": "" + }, + "allow_partial_match": { + "type": "boolean", + "default": false + }, + "delete_all_matches": { + "type": "boolean", + "default": false + } + }, + "required": [ + "body_name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3182, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: entity_delete", + "gapDetail": "Guarded native entities with supported deletion APIs; destructive bulk/latest-by-index selection is intentionally absent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "end_electronics_change", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4311, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4311", + "description": "Commit the current electronics design-change transaction.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "target": { + "type": "string", + "default": "active" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3387, + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_electronics_api", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4361, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4361", + "description": "Execute arbitrary Python against the live Fusion Electronics API with schematic, board, library, and design context.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "script": { + "type": "string", + "default": "" + }, + "expression": { + "type": "string", + "default": "" + }, + "input_data": { + "type": "object", + "default": null + }, + "result_variable": { + "type": "string", + "default": "result" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3690, + "coverage": "delegated", + "gap": false, + "bridgeRoute": "fusion_mcp_call: fusion_mcp_execute featureType=script", + "gapDetail": "Official local MCP script execution; electronics product context and permissions still apply.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_fusion_api", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4356, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4356", + "description": "Execute arbitrary Python against the live Fusion API with design, drawing, and CAM context.", + "category": "Execution and recovery", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "script": { + "type": "string", + "default": "" + }, + "expression": { + "type": "string", + "default": "" + }, + "input_data": { + "type": "object", + "default": null + }, + "result_variable": { + "type": "string", + "default": "result" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2391, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_run_modeling_script; fusion_mcp_call", + "gapDetail": "Python API escape hatch; arbitrary scripts do not inherit typed-operation safety guarantees.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "execute_text_command", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4346, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4346", + "description": "Run a Fusion text command directly through the active application.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "command": { + "type": "string" + } + }, + "required": [ + "command" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3676, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_execute_text_command", + "gapDetail": "Existing raw text-command entry point.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_active_drawing_pdf", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4296, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4296", + "description": "Export the active drawing document to PDF.", + "category": "Import and export", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. This is an actual dedicated PDF-export API path, not a screenshot placeholder. DrawingDocument.drawing and DrawingExportManager.createPDFExportOptions are documented; this source audit does not prove live export.", + "inputSchema": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "default": "" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3328, + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_design_file", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4291, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4291", + "description": "Export the active design to STEP, IGES, SAT, STL, 3MF, or OBJ.", + "category": "Import and export", + "externalEvidence": "registered source implementation with concrete source caveat; not live verified", + "externalCaveat": "Runtime/API success not established by this inventory. Export checks execute boolean, but writes directly to destination; preservation/atomic publication is not established. No sheet-metal/CAM authoring tools are registered; generic execution reachability is separate.", + "inputSchema": { + "type": "object", + "properties": { + "format": { + "type": "string" + }, + "filename": { + "type": "string", + "default": "" + }, + "component_name": { + "type": "string", + "default": "" + }, + "body_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "format" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3261, + "sourceSelectors": [ + { + "selectorExpression": "extension_map", + "values": [ + "step", + "stp", + "iges", + "igs", + "sat", + "stl", + "3mf", + "c3mf", + "obj" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3265, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3265" + }, + { + "selectorExpression": "format_key", + "values": [ + "step", + "stp", + "iges", + "igs", + "sat" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3284, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3284" + }, + { + "selectorExpression": "format_key", + "values": [ + "step", + "stp" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3294, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3294" + }, + { + "selectorExpression": "format_key", + "values": [ + "stl" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3310, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3310" + }, + { + "selectorExpression": "format_key", + "values": [ + "iges", + "igs" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3296, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3296" + }, + { + "selectorExpression": "format_key", + "values": [ + "3mf", + "c3mf" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3312, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3312" + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: export", + "gapDetail": "STEP/STL/3MF/F3D/IGES/SAT/SMT/USDZ/FBX/SKP with runtime preflight; no generic OBJ or sketch DXF export.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_electronics_file", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4341, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4341", + "description": "Export the active electronics design as EAGLE SCH, BRD, or LBR.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "format": { + "type": "string" + }, + "filename": { + "type": "string", + "default": "" + }, + "target": { + "type": "string", + "default": "active" + } + }, + "required": [ + "format" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3647, + "sourceSelectors": [ + { + "selectorExpression": "format_key", + "values": [ + "sch", + "eagle_sch", + "schematic" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3650, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3650" + }, + { + "selectorExpression": "format_key", + "values": [ + "brd", + "eagle_brd", + "board", + "pcb" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3657, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3657" + }, + { + "selectorExpression": "format_key", + "values": [ + "lbr", + "eagle_lbr", + "library" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3664, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3664" + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "export_sketch_dxf", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4286, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4286", + "description": "Export a sketch to a DXF file.", + "category": "Import and export", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "filename": { + "type": "string", + "default": "" + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3245, + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "inspect_fusion_object", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4351, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4351", + "description": "Inspect any live Fusion API object by Python path and list its members.", + "category": "Developer and automation", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "path": { + "type": "string", + "default": "root_component" + }, + "include_private": { + "type": "boolean", + "default": false + }, + "max_members": { + "type": "integer", + "default": 200 + }, + "include_values": { + "type": "boolean", + "default": true + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2351, + "coverage": "partial", + "gap": true, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Bodies, components, topology and guarded references are covered; comparator-specific aggregate fields and camera/appearance details differ.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_electronics_documents", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4321, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4321", + "description": "List open and available electronics schematic, board, project, and library documents.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3437, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_get_app_state", + "gapDetail": "Existing document listing.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_sketch_entities", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4211, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4211", + "description": "List sketch points and curves, including entity tokens.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2814, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "list_sketch_profiles", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4216, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4216", + "description": "List sketch profiles for a sketch.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "sketch_name": { + "type": "string" + }, + "component_name": { + "type": "string", + "default": "" + } + }, + "required": [ + "sketch_name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2827, + "coverage": "dedicated", + "gap": false, + "bridgeRoute": "fusion_mechanical: inspect / inspect_entity", + "gapDetail": "Curves, points, dimensions, constraint types, profiles and fully-constrained state.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "message_box", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4186, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4186", + "description": "Display a message box in Fusion 360.", + "category": "Document and execution", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": [ + "message" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 2709, + "coverage": "script-only", + "gap": true, + "bridgeRoute": "fusion_run_modeling_script", + "gapDetail": "No dedicated bridge operation. General API execution exists; this feature is not thereby implemented or verified.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "open_electronics_document", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4331, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4331", + "description": "Open an uploaded electronics schematic, board, project, or library by name.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "target": { + "type": "string", + "default": "schematic" + }, + "activate": { + "type": "boolean", + "default": true + }, + "open_related": { + "type": "boolean", + "default": false + } + }, + "required": [ + "name" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3444, + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + }, + { + "name": "upload_electronics_project", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4326, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4326", + "description": "Upload schematic, board, and library files into Fusion and optionally open them.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "schematic_path": { + "type": "string", + "default": "" + }, + "board_path": { + "type": "string", + "default": "" + }, + "library_paths": { + "type": "array", + "items": { + "type": "string" + }, + "default": null + }, + "open_documents": { + "type": "boolean", + "default": true + }, + "activate_target": { + "type": "string", + "default": "schematic" + } + } + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "implementationFile": "MCPserve/commands/MCPServerCommand.py", + "implementationLine": 3522, + "sourceSelectors": [ + { + "selectorExpression": "extension", + "values": [ + "fsch", + "fbrd", + "fprj", + "flbr", + "sch", + "brd", + "lbr", + "prj" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3626, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3626" + } + ], + "coverage": "partial", + "gap": true, + "bridgeRoute": "Existing electronics verbs and fusion_mcp_call", + "gapDetail": "Electronics workflows exist, but this server-specific transaction/document/file schema is not claimed as equivalent.", + "bridgeEvidence": "Source/schema mapping; see checkpoint verification report for the independently exercised subset." + } + ], + "resources": [ + { + "name": "get_active_document_info", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4114, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4114", + "description": "Get information about the active document in Fusion 360.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://active-document-info" + }, + { + "name": "get_design_structure", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4119, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4119", + "description": "Get the structure of the active design in Fusion 360.", + "category": "Document and execution", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://design-structure" + }, + { + "name": "get_parameters", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4124, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4124", + "description": "Get the parameters of the active design in Fusion 360.", + "category": "Parameters", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://parameters" + }, + { + "name": "get_components", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4129, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4129", + "description": "Get the components in the active design.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://components" + }, + { + "name": "get_sketches", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4134, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4134", + "description": "Get the sketches in the active design.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://sketches" + }, + { + "name": "get_bodies", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4139, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4139", + "description": "Get the bodies in the active design.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://bodies" + }, + { + "name": "get_electronics_context", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4144, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4144", + "description": "Get the active Fusion Electronics context, including schematic, board, and library state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-context" + }, + { + "name": "get_electronics_schematic", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4149, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4149", + "description": "Get the active Fusion Electronics schematic state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-schematic" + }, + { + "name": "get_electronics_board", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4154, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4154", + "description": "Get the active Fusion Electronics board state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-board" + }, + { + "name": "get_electronics_library", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4159, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4159", + "description": "Get the active Fusion Electronics library state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-library" + }, + { + "name": "get_electronics_libraries", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4164, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4164", + "description": "List the libraries referenced by the active electronics document.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-libraries" + }, + { + "name": "get_electronics_documents", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4169, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4169", + "description": "List open and available electronics documents and data files.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-documents" + }, + { + "name": "get_electronics_errors", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4174, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4174", + "description": "Get ERC and DRC errors from the active electronics schematic and board.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-errors" + }, + { + "name": "get_mcp_capabilities", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4179, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4179", + "description": "Describe the fixed MCP surface and the generic Fusion API bridge.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://mcp-capabilities" + } + ], + "prompts": [ + { + "name": "create_sketch_prompt", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4368, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4368", + "description": "Create a prompt for creating a sketch based on a description.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "required": [ + "description" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported" + }, + { + "name": "parameter_setup_prompt", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4373, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4373", + "description": "Create a prompt for setting up parameters based on a description.", + "category": "Parameters", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "required": [ + "description" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported" + }, + { + "name": "feature_strategy_prompt", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4378, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4378", + "description": "Create a prompt for planning sketches and features for a Fusion model.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "required": [ + "description" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported" + } + ], + "protocolFeatures": [ + "FastMCP HTTP SSE and file-based fallback", + "Fusion CustomEvent main-thread marshaling", + "Explicit electronics begin/end/cancel design-change transactions", + "Generic live API inspection/execution for design, drawing, CAM and electronics", + "Structured error payload includes traceback; not necessarily MCP isError", + "Runtime package auto-install path exists; source was not run in this audit" + ], + "toolCount": 36, + "resourceCount": 14, + "promptCount": 3, + "operationVariantCount": 0, + "licenseClassification": "open-source license text present", + "mockMode": { + "observed": false, + "scope": "No mock-mode implementation found by bounded source search; runtime was not executed." + }, + "sourceFindings": [ + { + "severity": "informational", + "affectedTools": [ + "export_active_drawing_pdf" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3328, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3328", + "message": "This is an actual dedicated PDF-export API path, not a screenshot placeholder. DrawingDocument.drawing and DrawingExportManager.createPDFExportOptions are documented; this source audit does not prove live export.", + "confidence": "high confidence source path", + "officialApiSources": [ + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/drawing_DrawingDocument.htm", + "https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/drawing_DrawingExportManager_createPDFExportOptions.htm" + ] + }, + { + "severity": "medium", + "affectedTools": [], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 1183, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L1183", + "message": "Component/body lookup returns the first exact or normalized matching name. Same-name definitions can be ambiguous without detection; token selectors are supported but no document/revision capability guard is present.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "informational", + "affectedTools": [ + "export_design_file" + ], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 3316, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L3316", + "message": "Export checks execute boolean, but writes directly to destination; preservation/atomic publication is not established. No sheet-metal/CAM authoring tools are registered; generic execution reachability is separate.", + "confidence": "high confidence source path", + "officialApiSources": [] + }, + { + "severity": "informational", + "affectedTools": [], + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 790, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L790", + "message": "error_payload returns error/traceback as ordinary tool data rather than raising; clients must inspect returned payloads. Electronics begin/end/cancel change tools are dedicated and separate from mechanical model transactions.", + "confidence": "high confidence source path", + "officialApiSources": [] + } + ], + "commitDate": "2026-06-02", + "rowCount": 36 + } + }, + "remoteHeadCheck": { + "faust": { + "snapshot": "ba8560f321656aa493cdc775bc2fa7b2e7d8f005", + "currentHead": "ba8560f321656aa493cdc775bc2fa7b2e7d8f005", + "unchanged": true, + "error": null + }, + "f360mcp": { + "snapshot": "3ad4bf2027878da652c93b959dc238fd578174b9", + "currentHead": "3ad4bf2027878da652c93b959dc238fd578174b9", + "unchanged": true, + "error": null + }, + "FusionMCP": { + "snapshot": "12bb2bce20a416c8167dd879c87b4e4c833ab152", + "currentHead": "12bb2bce20a416c8167dd879c87b4e4c833ab152", + "unchanged": true, + "error": null + }, + "mcp-fusion360": { + "snapshot": "3419de8ae314f9a2c4a85770cf4b6c02163e0d7a", + "currentHead": "3419de8ae314f9a2c4a85770cf4b6c02163e0d7a", + "unchanged": true, + "error": null + }, + "Justus": { + "snapshot": "dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a", + "currentHead": "dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a", + "unchanged": true, + "error": null + }, + "ncmlabs": { + "snapshot": "91bdfae836989a6c86d1cc3af8280e16eaacaa3f", + "currentHead": "91bdfae836989a6c86d1cc3af8280e16eaacaa3f", + "unchanged": true, + "error": null + }, + "FusionMCPSample": { + "snapshot": "1d49ee8f7744b2e7aaec91f9c660c65963fccd71", + "currentHead": "1d49ee8f7744b2e7aaec91f9c660c65963fccd71", + "unchanged": true, + "error": null + }, + "AuraFriday": { + "snapshot": "515e9010c2c41b2caf6faafd4ec6721270436691", + "currentHead": "515e9010c2c41b2caf6faafd4ec6721270436691", + "unchanged": true, + "error": null + }, + "fusion-cam-mcp": { + "snapshot": "144233f45cf9f338fcc11a96ee60df02b24ea9c5", + "currentHead": "144233f45cf9f338fcc11a96ee60df02b24ea9c5", + "unchanged": true, + "error": null + } + }, + "coverageScope": "Source/schema comparison through checkpoint 3; consult build handoff for final live acceptance. Generic script access is counted as a dedicated-feature gap. Parent tools with multiple actions retain per-action flags.", + "repositoryCount": 16, + "featureRowCount": 695, + "registeredToolCountsAreNotRowCounts": true +} diff --git a/docs/mechanical-comparison/external-source-caveats.md b/docs/mechanical-comparison/external-source-caveats.md new file mode 100644 index 0000000..a7376bc --- /dev/null +++ b/docs/mechanical-comparison/external-source-caveats.md @@ -0,0 +1,73 @@ +# External inventory source audit — 2026-10-02 + +Read-only, bounded source audit; no external code executed in Fusion. Paths below are relative to `the pinned source snapshots listed in external-features.json`. Confidence high unless marked medium. These flags qualify external advertised capability; they are not defects in our new bridge. + +## Inventory completeness + +Independently re-extracted tool/decorator/dispatch names and compared sets: faust 93, f360mcp 45, FusionMCP 170, mcp-fusion360 11, Justus 40, ncmlabs 89, FusionMCPSample 4, AuraFriday 12, fusion-cam-mcp 21 = 485 rows. **Zero missing names, zero extra names, zero duplicate names** at the inventory's stated granularity. AuraFriday consists of nine operation branches, two special api_path commands (`get_pid`, `clear_context`) and one generic API execution branch; these are NOT 12 separately registered MCP tools. The inventory already uses `entryPoint: fusion360`, so preserve that qualification. FusionMCP's 170 rows are dispatch entries, not independently schema-validated MCP tools. fusion-cam-mcp's 21 rows are CLI subcommands. + +Checker: `/tmp/fusion-mech-adversary/check-inventory.py`; its raw AuraFriday difference of three is explained by alternate api_path/general branches at `mcp_integration.py:435-475`, not a real omission. Sample names were additionally verified at the actual Tool registrations. + +## Certain no-op / placeholder flags (FusionMCP) + +| Tools | Location | Flag and evidence | +|---|---|---| +| create_sheet_metal_rule | `FusionMCP/FusionMCP.py:2636` | Placeholder. Reads desired thickness/gap and checks an attribute, then returns `created` without any creation call. Both branches make no model change. | +| create_drawing_document | `FusionMCP/FusionMCP.py:3541` | Placeholder. Imports adsk.drawing, then returns a note; never creates a drawing. | +| add_base_view | `FusionMCP/FusionMCP.py:3558` | Placeholder. Returns input values and a note only. | +| add_projected_view | `FusionMCP/FusionMCP.py:3567` | Placeholder. Constant note return. | +| add_section_view | `FusionMCP/FusionMCP.py:3570` | Placeholder. Constant note return. | +| add_drawing_dimension | `FusionMCP/FusionMCP.py:3573` | Placeholder. Constant note return. | +| add_annotation | `FusionMCP/FusionMCP.py:3576` | Placeholder. Truncates and echoes text; creates no annotation. | +| generate_drawing | `FusionMCP/FusionMCP.py:2490` | Viewport screenshot plus bounding-box dimensions; no drawing or standard-view generation. | +| export_obj | `FusionMCP/FusionMCP.py:3929` | Always rejects in dispatcher. Do not count as an implemented OBJ exporter. | + +## Definite / strongly supported API mismatches + +| Repo / tool | Location | Concrete reason | +|---|---|---| +| faust / cam_generate_toolpath | `faust/addon/server/command_handler.py:3353` | `_wait_future` checks `isCompleted`, then calls `future.wait()` if absent. Actual GenerateToolpathFuture exposes `isGenerationCompleted`; its documented methods have no wait(). Generation starts, then handler raises instead of reporting completion. | +| faust / unfold | `faust/addon/server/command_handler.py:3074` | Calls `unfolds.createInput(bends, stationary)`. September 2026 preview API accepts only `stationaryFace`; two arguments are wrong. This also remains a preview API. | +| FusionMCP / sheet_metal_unfold | `FusionMCP/FusionMCP.py:2705` | Calls `unfolds.createInput(stationary_face, bends_coll)`, also two arguments vs the one-argument preview signature. | +| faust / flat_pattern | `faust/addon/server/command_handler.py:3043` | Accesses `root.features.flatPatternFeatures`, absent from current Features contract. Supported creation is `Component.createFlatPattern(stationaryFace)`. | +| faust / create_bend | `faust/addon/server/command_handler.py:3028` | Uses `Features.bendFeatures`, absent from current Features contract. Current preview has `foldFeatures` / `joinByBendFeatures`, not this guessed collection. | +| FusionMCP / sheet_metal_bend | `FusionMCP/FusionMCP.py:2678` | Same undocumented `Features.bendFeatures`; absent collection explicitly returns error. | +| faust / create_flange | `faust/addon/server/command_handler.py:3005` | Calls `flangeFeatures.createInput`; current Features docs describe this collection as existing-feature access, unlike creation-capable collections. Mark unsupported/unverified creation, medium confidence because the FlangeFeatures detail page failed fetch. | +| FusionMCP / sheet_metal_flange | `FusionMCP/FusionMCP.py:2664` | Same unsupported/unverified flange creation assumption (medium confidence). | +| FusionMCP / cam_create_setup | `FusionMCP/FusionMCP.py:1961` | Uses `adsk.cam.SetupTypes.MillingSetupType` etc. Current `Setups.createInput` takes `OperationTypes`, e.g. MillingOperation. | +| FusionMCP / cam_list_tools | `FusionMCP/FusionMCP.py:2053` | Reads `cam.toolLibraries`; current CAM contract has `documentToolLibrary`, while shared libraries belong to CAMManager.libraryManager.toolLibraries. | +| FusionMCP / cam_simulate | `FusionMCP/FusionMCP.py:2122` | Calls undocumented `CAM.simulate`, absent from current CAM methods. Returns error on absent API. | +| FusionMCP / cam_post_process | `FusionMCP/FusionMCP.py:2109` | Uses nonexistent singular `MillimeterOutput`; official enum value is `MillimetersOutput`. It also ignores postProcess's result. | +| FusionMCP / convert_mesh_to_brep | `FusionMCP/FusionMCP.py:2789` | Looks for `Features.meshToBrep`; current API instead exposes preview `meshConvertFeatures`. It explicitly errors when assumed member is absent. | +| FusionMCP / repair_mesh | `FusionMCP/FusionMCP.py:2770` | Checks for MeshBody.repair and otherwise returns a UI note. Current supported direction is preview `meshRepairFeatures`; capability is not established by this handler. Medium confidence unless MeshBody docs are separately checked. | + +## Behavior qualification flags beyond placeholders + +| Tools | Location | Concrete failure / scope | +|---|---|---| +| FusionMCP / export_drawing | `FusionMCP/FusionMCP.py:3598` | Only executes an exporter for format `pdf`; every other format falls through to `exported` with no output. `createPDFExportOptions()` call also needs separate API verification. Dispatcher at 3835 requires active Design before reaching drawing tools, obstructing drawing-product context. | +| FusionMCP / pipeline_execute | `FusionMCP/FusionMCP.py:3785` | Advertises atomic rollback but only deletes timeline entries beyond starting count. Reproducer: update existing parameter then unknown command; reports rolled_back, parameter stays changed. File exports, save, document changes also survive; deletion exceptions are swallowed. | +| FusionMCP / generate_variant_batch | `FusionMCP/FusionMCP.py:3706` | Swallows parameter-set errors, exports stale/mixed variants, ignores execute boolean, and counts failures in variants_generated. Unknown format writes STEP bytes under requested extension. Leaves last applied state in model. | +| FusionMCP / create_design_table | `FusionMCP/FusionMCP.py:3640` | Stores JSON rows in a design attribute; this is custom parameter-preset storage, not native Fusion configurations/design-table authoring. | +| faust / cam_create_operation | `faust/addon/server/command_handler.py:3312` | Explicitly refuses tool_diameter. Tool-number handling merely edits operation parameter `tool_number`; does not select/assign a tool-library Tool object. Do not describe as selecting a library tool. | +| faust / export_view_sheet | `faust/addon/server/command_handler.py:1667` | View-image sheet; no native dimensioned engineering drawing. | + +## Primary API sources checked today + +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/cam_GenerateToolpathFuture.htm +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/fusion_UnfoldFeatures_createInput.htm (introduced September 2026; preview; one argument) +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/fusion_Features.htm +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/fusion_Component_createFlatPattern.htm +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/cam_Setups_createInput.htm +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/cam_PostOutputUnitOptions.htm +- https://help.autodesk.com/cloudhelp/ENU/Fusion-360-API/files/cam_CAM.htm + +Do not mark all external CAM code as placeholder: faust has substantial setup/operation/post-process code; the concrete generation-future mismatch and partial tool-assignment semantics are narrower facts. Likewise, sheet metal now has selected preview creation APIs; qualify the exact call rather than claiming the domain impossible. + +## Additional repositories discovered October 2 + +- `artapo/fusion360-mcp` (Apache-2.0) registers one execution tool and provides snapshot, viewport, API-introspection and undo helpers inside it. Its rollback deletes newly appended timeline entries; it does not restore changed existing parameters or external files. The saved undo checkpoint is a timeline count rather than a document-bound transaction. Source: `src/fusion360_mcp/addin/Claude MCP.py:297–325,343–413`, commit `13acbbc7fec9f078753fedb1a68952ab369ca24b`. +- `ulfandpete/fusion360-mcp-server` exposes 29 decorated tools in its main server, more than the short README list. The README itself labels the project as not working yet. Its licence is AGPL-3.0 with a separate commercial option; no implementation code was reused. Source commit `390d60d36ecf86dee21ade287ec0ab060de6cd58`. +- `zkbkb/fusion-mcp` exposes 45 decorated tools, but the shipped add-in dispatcher accepts only 11 command strings; affected rows identify the exact unmatched command. Simulation helpers return configuration summaries rather than solved results. The registered report tool simulates filenames and hard-codes timing/size without writing those artifacts. The socket path also calls Fusion APIs from its client thread and assumes each JSON message fits one `recv(4096)`. This is CC-BY-NC-4.0 public source, not an open-source code donor. Sources: `src/mcp_server.py:1482–1590`, `src/fusion360/addin.py:89–191,1899–2032`, commit `ea90968b3592a1a2b1d1091e50720373eacd435d`. + +These are static source findings. None of these additional servers was installed or executed against the user's CAD session. diff --git a/docs/mechanical-comparison/licenses/FusionMCPSample-LICENSE.txt b/docs/mechanical-comparison/licenses/FusionMCPSample-LICENSE.txt new file mode 100644 index 0000000..31e2e77 --- /dev/null +++ b/docs/mechanical-comparison/licenses/FusionMCPSample-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Autodesk Fusion 360 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/Justus-LICENSE.txt b/docs/mechanical-comparison/licenses/Justus-LICENSE.txt new file mode 100644 index 0000000..aecebd7 --- /dev/null +++ b/docs/mechanical-comparison/licenses/Justus-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 JustusBraitinger + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/Poyraxx-LICENSE.txt b/docs/mechanical-comparison/licenses/Poyraxx-LICENSE.txt new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/docs/mechanical-comparison/licenses/Poyraxx-LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/docs/mechanical-comparison/licenses/artapo-LICENSE.txt b/docs/mechanical-comparison/licenses/artapo-LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/docs/mechanical-comparison/licenses/artapo-LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/mechanical-comparison/licenses/artapo-NOTICE.txt b/docs/mechanical-comparison/licenses/artapo-NOTICE.txt new file mode 100644 index 0000000..8397006 --- /dev/null +++ b/docs/mechanical-comparison/licenses/artapo-NOTICE.txt @@ -0,0 +1,8 @@ +fusion360-mcp +Copyright 2026 artapo + +This product includes software developed for bridging Claude Code and +Autodesk Fusion 360. + +Fusion 360 is a trademark of Autodesk, Inc. This project is not affiliated +with or endorsed by Autodesk. diff --git a/docs/mechanical-comparison/licenses/f360mcp-LICENSE.txt b/docs/mechanical-comparison/licenses/f360mcp-LICENSE.txt new file mode 100644 index 0000000..3e4c433 --- /dev/null +++ b/docs/mechanical-comparison/licenses/f360mcp-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/docs/mechanical-comparison/licenses/faust-LICENSE.txt b/docs/mechanical-comparison/licenses/faust-LICENSE.txt new file mode 100644 index 0000000..1119468 --- /dev/null +++ b/docs/mechanical-comparison/licenses/faust-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Faust Network, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/frankhommers-LICENSE.txt b/docs/mechanical-comparison/licenses/frankhommers-LICENSE.txt new file mode 100644 index 0000000..560e10a --- /dev/null +++ b/docs/mechanical-comparison/licenses/frankhommers-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Frank Hommers / Initialize + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/fusion-cam-mcp-LICENSE.txt b/docs/mechanical-comparison/licenses/fusion-cam-mcp-LICENSE.txt new file mode 100644 index 0000000..31b6877 --- /dev/null +++ b/docs/mechanical-comparison/licenses/fusion-cam-mcp-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 bjam + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/mcp-fusion360-LICENSE.txt b/docs/mechanical-comparison/licenses/mcp-fusion360-LICENSE.txt new file mode 100644 index 0000000..e3e36af --- /dev/null +++ b/docs/mechanical-comparison/licenses/mcp-fusion360-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Ignacio Molini + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/ncmlabs-LICENSE.txt b/docs/mechanical-comparison/licenses/ncmlabs-LICENSE.txt new file mode 100644 index 0000000..3d54efc --- /dev/null +++ b/docs/mechanical-comparison/licenses/ncmlabs-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024-2025 NCM Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/prim-LICENSE.txt b/docs/mechanical-comparison/licenses/prim-LICENSE.txt new file mode 100644 index 0000000..4456c52 --- /dev/null +++ b/docs/mechanical-comparison/licenses/prim-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 prim.design + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/mechanical-comparison/licenses/ulfandpete-LICENSE.txt b/docs/mechanical-comparison/licenses/ulfandpete-LICENSE.txt new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/docs/mechanical-comparison/licenses/ulfandpete-LICENSE.txt @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/docs/mechanical-comparison/licenses/zkbkb-LICENSE.txt b/docs/mechanical-comparison/licenses/zkbkb-LICENSE.txt new file mode 100644 index 0000000..c657cab --- /dev/null +++ b/docs/mechanical-comparison/licenses/zkbkb-LICENSE.txt @@ -0,0 +1,407 @@ +Attribution-NonCommercial 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + j. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + k. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + l. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/docs/mechanical-comparison/mcmaster-and-bom.md b/docs/mechanical-comparison/mcmaster-and-bom.md new file mode 100644 index 0000000..163b5a5 --- /dev/null +++ b/docs/mechanical-comparison/mcmaster-and-bom.md @@ -0,0 +1,26 @@ +# McMaster and mechanical BOM parity + +The SolidWorks precedent is a complete sourcing-to-assembly workflow. Its crate build downloaded real supplier STEP models through a browser CAD selector, imported them, assigned material and properties, measured orientation, placed occurrences and preserved purchased-part information. The inspected source has no dedicated verb named McMaster. Reference: `adom/solidworks-bridge` commit `95c5a3bfc340e83a8619d7016572692f69c9301d`, `docs/crate-build-log.md`, sections 4–5. [Canonical bridge](https://wiki.adom.inc/adom/solidworks-bridge) + +## Fusion's native integration + +Fusion includes **Insert McMaster-Carr Component**. Autodesk documents browsing the product page inside Fusion, choosing STEP or SAT and inserting the result. Part name, part number and description can then be edited in component properties. [Official workflow](https://help.autodesk.com/cloudhelp/ENU/Fusion-Model/files/GUID-90FD5419-A8AF-4A7C-AB1E-75D027077709.htm) + +The command requires online mode; Autodesk also identifies Hybrid mode as a condition for its availability. [Official troubleshooting](https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Insert-McMaster-Carr-Component-is-missing-from-the-Insert-menu-in-Fusion-360.html) + +Live verification on Fusion 2705.1.11 confirmed command ID `InsertMcMasterCarrComponentCommand`, then launched the native picker through `mcmaster_open`. UI Automation observed `DialogOfMcMasterCarrWebViewer`, the McMaster-Carr document/logo and the native Insert Component title. Its exact Close control dismissed the dialog without ordering or downloading. Background window capture was black; the retained UI Automation evidence establishes launch/cancel, not a complete automated supplier download. Local-file ingestion is verified separately in the checkpoint report. + +## Required purchased-part behavior + +- Import the actual supplier model, retain its original filename and checksum, and measure its geometry before assuming orientation or size. +- Preserve supplier, supplier part number, product URL, description, material and any sourcing substitution notes. A user-supplied label is not proof the supplier's model was obtained. +- Keep component definition identity separate from occurrence identity. Repeated placements increase quantity; two distinct components with the same name must not silently merge. +- Preserve supplier attributes in native archives. STEP is geometry exchange and must not be assumed to preserve all application attributes. +- Generate flat and structured BOMs plus CSV, with an explicit policy for purchased subassemblies and root-component bodies. Report truncation, omitted elements and write failure. +- Distinguish modeled mass from validated material mass. Do not invent price, stock, purchased status or material density. + +## Verified supplier workflow + +The independent live gate imported the actual McMaster 3597N17 STEP retained from the SolidWorks sourcing workflow. Its SHA-256 was `763ae5ee875936b61d6c111761756c6011e1677e2784e451de12c4e12ded851a`; measured imported volume was 330.573647 mm³. Typed insertion produced a purchasing quantity of two. Both flat and structured CSV retained supplier, part number and source metadata. An exported F3D reopened with matching metadata, poses and materials, and the source STEP bytes were unchanged. A deliberately wrong expected checksum was refused before mutation. + +This proves downloaded supplier geometry ingestion and purchasing/BOM persistence. It does not claim a new automated browser download, supplier-certified material density, pricing or stock lookup. The native picker launch/cancel test is separate. See the final [checkpoint report](../mechanical-verification/CP3-VERIFICATION.md) for retained cases and limitations. No purchase or order placement was performed. diff --git a/docs/mechanical-comparison/official-features.json b/docs/mechanical-comparison/official-features.json new file mode 100644 index 0000000..25534fe --- /dev/null +++ b/docs/mechanical-comparison/official-features.json @@ -0,0 +1,734 @@ +{ + "asOf": "2026-10-02", + "scope": "Live desktop selector values plus published Data and Compute capability groups. Dynamic authenticated Data/Compute tools were not available for enumeration.", + "features": [ + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Attribute", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Bus", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Circle", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Contact", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Element", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Frame", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Gate", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Hole", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Grid", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Instance", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Junction", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Label", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Layer", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Module", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.ModuleInstance", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Net", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Signal", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Pad", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Part", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Pin", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.PinRef", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.PolyCutout", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Spline", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.PolyPour", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.PolyShape", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Port", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.PortRef", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Rectangle", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Segment", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Sheet", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Schematic", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Board", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Library", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Smd", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Symbol", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.DeviceSet", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Device", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Package", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Package3D", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Technology", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Text", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.VariantDef", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Variant", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Via", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.ContactRef", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Wire", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Dimension", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.NetClass", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.Error", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_electronics_read", + "selector": "entity_type", + "feature": "electronics.PortNetMappingEntry", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_execute", + "selector": "featureType", + "feature": "script", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_execute", + "selector": "featureType", + "feature": "document", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_execute", + "selector": "featureType", + "feature": "purchase", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "purchase means Autodesk subscription/extensions/Flex UI, not McMaster CAD procurement" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_execute", + "selector": "featureType", + "feature": "editImage", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_execute", + "selector": "featureType", + "feature": "generatePowerpoint", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_execute", + "selector": "featureType", + "feature": "previewImage", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_read", + "selector": "queryType", + "feature": "apiDocumentation", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_read", + "selector": "queryType", + "feature": "licensing", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_read", + "selector": "queryType", + "feature": "screenshot", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_read", + "selector": "queryType", + "feature": "document", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_read", + "selector": "queryType", + "feature": "projects", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_read", + "selector": "queryType", + "feature": "activeCommand", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_update", + "selector": "featureType", + "feature": "undo", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk desktop MCP", + "tool": "fusion_mcp_update", + "selector": "featureType", + "feature": "redo", + "coverage": "delegated through existing fusion_mcp_call", + "gap": false, + "evidence": "live discovery 2026-10-02; operation itself not run in this audit", + "notes": "" + }, + { + "server": "Autodesk Fusion Data MCP", + "feature": "Hub/project browsing", + "coverage": "existing APS/cloud browsing verbs", + "gap": false, + "evidence": "published capability; authenticated dynamic tool catalogue not queried", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/introducing-the-autodesk-fusion-data-mcp-server/" + }, + { + "server": "Autodesk Fusion Data MCP", + "feature": "Folder creation/organization", + "coverage": "partial existing cloud folder handling; not full Data MCP management", + "gap": true, + "evidence": "published capability; authenticated dynamic tool catalogue not queried", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/introducing-the-autodesk-fusion-data-mcp-server/" + }, + { + "server": "Autodesk Fusion Data MCP", + "feature": "Item management", + "coverage": "partial existing APS/cloud design lifecycle; not full Data MCP management", + "gap": true, + "evidence": "published capability; authenticated dynamic tool catalogue not queried", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/introducing-the-autodesk-fusion-data-mcp-server/" + }, + { + "server": "Autodesk Fusion Data MCP", + "feature": "Project members and role assignment", + "coverage": "no dedicated Fusion bridge operation", + "gap": true, + "evidence": "published capability; authenticated dynamic tool catalogue not queried", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/introducing-the-autodesk-fusion-data-mcp-server/" + }, + { + "server": "Autodesk Fusion Data MCP", + "feature": "Permissions and access control", + "coverage": "no dedicated Fusion bridge operation", + "gap": true, + "evidence": "published capability; authenticated dynamic tool catalogue not queried", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/introducing-the-autodesk-fusion-data-mcp-server/" + }, + { + "server": "Autodesk Fusion Compute MCP", + "feature": "Independent cloud Fusion sessions", + "coverage": "no backend integration", + "gap": true, + "evidence": "published public-beta capability; not authenticated or live validated", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/fusion-compute-mcp/" + }, + { + "server": "Autodesk Fusion Compute MCP", + "feature": "Parametric modeling API execution", + "coverage": "local Python execution exists; cloud TypeScript adapter absent", + "gap": true, + "evidence": "published public-beta capability; not authenticated or live validated", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/fusion-compute-mcp/" + }, + { + "server": "Autodesk Fusion Compute MCP", + "feature": "Cloud assemblies and joints", + "coverage": "cloud adapter absent", + "gap": true, + "evidence": "published public-beta capability; not authenticated or live validated", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/fusion-compute-mcp/" + }, + { + "server": "Autodesk Fusion Compute MCP", + "feature": "CAM setups/toolpaths/NC posting", + "coverage": "no dedicated CAM authoring workflow", + "gap": true, + "evidence": "published public-beta capability; not authenticated or live validated", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/fusion-compute-mcp/" + }, + { + "server": "Autodesk Fusion Compute MCP", + "feature": "Fusion Team save/open and exported artifact URLs", + "coverage": "existing local/cloud file workflows; Compute session artifacts not integrated", + "gap": true, + "evidence": "published public-beta capability; not authenticated or live validated", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/fusion-compute-mcp/" + }, + { + "server": "Autodesk Fusion Compute MCP", + "feature": "More than 7000 API endpoints via execute", + "coverage": "vendor stated API breadth; not an enumerated tool inventory", + "gap": true, + "evidence": "published public-beta capability; not authenticated or live validated", + "sourceUrl": "https://www.autodesk.com/products/fusion-360/blog/fusion-compute-mcp/" + } + ] +} diff --git a/docs/mechanical-comparison/protocol-features.json b/docs/mechanical-comparison/protocol-features.json new file mode 100644 index 0000000..559d7c5 --- /dev/null +++ b/docs/mechanical-comparison/protocol-features.json @@ -0,0 +1,828 @@ +{ + "asOf": "2026-10-02", + "scope": "Non-tool resources, templates, prompts and selected protocol/operational features. Separate from registered tool counts.", + "features": [ + { + "repository": "faust", + "kind": "resource/template", + "feature": "fusion360://status", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L229", + "gap": true, + "bridgeRoute": "fusion_readiness", + "notes": "Equivalent data is available through verbs; the same MCP resource URI is not registered by our bridge.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "resource/template", + "feature": "fusion360://design", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L235", + "gap": true, + "bridgeRoute": "fusion_mechanical inspect", + "notes": "Equivalent data is available through verbs; the same MCP resource URI is not registered by our bridge.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "resource/template", + "feature": "fusion360://parameters", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L241", + "gap": true, + "bridgeRoute": "fusion_mechanical inspect", + "notes": "Equivalent data is available through verbs; the same MCP resource URI is not registered by our bridge.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "resource/template", + "feature": "fusion360://body/{name}", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L328", + "gap": true, + "bridgeRoute": "fusion_mechanical inspect_entity", + "notes": "Equivalent data is available through verbs; the same MCP resource URI is not registered by our bridge.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "resource/template", + "feature": "fusion360://component/{name}", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L334", + "gap": true, + "bridgeRoute": "fusion_mechanical inspect_entity", + "notes": "Equivalent data is available through verbs; the same MCP resource URI is not registered by our bridge.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "prompt", + "feature": "create-box", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L345", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "No matching MCP prompt registration. Sheet-metal authoring also remains outside checkpoints1\u20133.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "prompt", + "feature": "model-threaded-bolt", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L365", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "No matching MCP prompt registration. Sheet-metal authoring also remains outside checkpoints1\u20133.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "prompt", + "feature": "sheet-metal-enclosure", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L378", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "No matching MCP prompt registration. Sheet-metal authoring also remains outside checkpoints1\u20133.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "protocol", + "feature": "Tool readOnly/destructive/idempotent annotations", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L1", + "gap": true, + "bridgeRoute": "Bridge verb schemas and permissions", + "notes": "Different discovery/permission surface; no per-feature Faust annotations contract.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "execution", + "feature": "Structured errors and timeout cancellation", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/server.py#L1", + "gap": true, + "bridgeRoute": "Typed mechanical errors, operation IDs and status polling", + "notes": "Stable mechanical errorCode and replay semantics are implemented; exact cancellation/error-kind contracts differ.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "faust", + "kind": "testing", + "feature": "Explicit mock mode", + "sourceUrl": "https://github.com/faust-machines/fusion360-mcp-server/blob/ba8560f321656aa493cdc775bc2fa7b2e7d8f005/src/fusion360_mcp/mock.py#L1", + "gap": true, + "bridgeRoute": "Offline test API fakes", + "notes": "No public plausible-geometry mock server mode.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "weingals", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L985", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "magnet", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L1000", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "dna", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L1031", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "flansch", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L1074", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "vase", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L1106", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "teil", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L1146", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "Justus", + "kind": "prompt", + "feature": "kompensator", + "sourceUrl": "https://github.com/JustusBraitinger/Autodesk-Fusion-360-MCP-Server/blob/dd2f156fe2e79d1ee2282a26eaa8b7e58661a28a/Server/MCP_Server.py#L1187", + "gap": true, + "bridgeRoute": "docs/MECHANICAL.md", + "notes": "Documented workflows, no matching MCP prompt registration.", + "evidence": "Source registration; protocol behavior not live verified." + }, + { + "repository": "artapo", + "kind": "execution", + "feature": "Bearer-token protected local main-thread Python executor; inline image results and API signature suggestions", + "sourceUrl": "https://github.com/artapo/fusion360-mcp/blob/13acbbc7fec9f078753fedb1a68952ab369ca24b/src/fusion360_mcp/server.py", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "zkbkb", + "kind": "resource", + "uri": "fusion360://design/info", + "handler": "get_design_info_resource", + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1656", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "zkbkb", + "kind": "resource", + "uri": "fusion360://context/summary", + "handler": "get_context_summary", + "sourceUrl": "https://github.com/zkbkb/fusion-mcp/blob/ea90968b3592a1a2b1d1091e50720373eacd435d/src/mcp_server.py#L1662", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Generic API path calls and constructor/reference store", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Python session_id persistent variables", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Session-only selection annotation claim/release/complete workflow with document/revision guards", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Viewport camera snapshot/restore, temporary camera capture, crop/background/anti-alias controls", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "MCP protocol negotiation, cancellation distinguishes queued vs already-running work", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Subscriptions endpoint acknowledges empty notification filters; static tools/resources do not emit change events", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Saved Python script CRUD", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "protocol/operation", + "feature": "Runtime API introspection and online documentation lookup", + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "frankhommers", + "kind": "resource", + "uri": "fusion://design-guide", + "name": "Autodesk Fusion Design Guide", + "description": "Workflow guidance, API patterns, naming rules, and modeling habits for Autodesk Fusion.", + "file": "fusion_bridge/tool_surface.py", + "line": 20, + "sourceUrl": "https://github.com/frankhommers/autodesk-fusion-mcp/blob/cbd01e540af425a81913d4e6c0d49e09e723aeb6/fusion_bridge/tool_surface.py#L20", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "joxoo", + "kind": "protocol/operation", + "feature": "Compact15/full31 API registration profiles; full is opt-in", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "joxoo", + "kind": "protocol/operation", + "feature": "stdio/SSE/streamable-http transport choices", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "joxoo", + "kind": "protocol/operation", + "feature": "English schema descriptions and hidden lang runtime parameter; argument aliases", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "joxoo", + "kind": "protocol/operation", + "feature": "File/script execution bridge with structured bridge error mapping", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "joxoo", + "kind": "protocol/operation", + "feature": "Operation batches execute sequentially; no proven atomic rollback", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "joxoo", + "kind": "protocol/operation", + "feature": "Action discovery through describe_tool_actions and JSON guide", + "sourceUrl": "https://github.com/joxoo/Fusion360MCP/blob/06cc8fc0417f740122c5103ec17a69623c227d92/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "prim", + "kind": "protocol/operation", + "feature": "FastMCP stdio server over local newline-delimited TCP JSON bridge", + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "prim", + "kind": "protocol/operation", + "feature": "Fusion CustomEvent marshals queued commands to main thread", + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "prim", + "kind": "protocol/operation", + "feature": "execute_python persists non-callable variables by session_id", + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "prim", + "kind": "protocol/operation", + "feature": "batch stops at first exception; previous commands remain applied", + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "prim", + "kind": "protocol/operation", + "feature": "Root/component body and sketch ordinal selection defaults to latest item", + "sourceUrl": "https://github.com/prim-design/fusion-mcp/blob/13fd2ef6290ade0f076ff3227ddb64d58322f349/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "protocol/operation", + "feature": "FastMCP HTTP SSE and file-based fallback", + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "protocol/operation", + "feature": "Fusion CustomEvent main-thread marshaling", + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "protocol/operation", + "feature": "Explicit electronics begin/end/cancel design-change transactions", + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "protocol/operation", + "feature": "Generic live API inspection/execution for design, drawing, CAM and electronics", + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "protocol/operation", + "feature": "Structured error payload includes traceback; not necessarily MCP isError", + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "protocol/operation", + "feature": "Runtime package auto-install path exists; source was not run in this audit", + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/README.md", + "gap": true, + "bridgeRoute": "See corresponding typed operation or documentation where applicable", + "notes": "No matching protocol contract claimed; generic scripting does not establish parity." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_active_document_info", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4114, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4114", + "description": "Get information about the active document in Fusion 360.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://active-document-info", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_design_structure", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4119, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4119", + "description": "Get the structure of the active design in Fusion 360.", + "category": "Document and execution", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://design-structure", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_parameters", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4124, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4124", + "description": "Get the parameters of the active design in Fusion 360.", + "category": "Parameters", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://parameters", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_components", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4129, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4129", + "description": "Get the components in the active design.", + "category": "Assemblies", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://components", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_sketches", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4134, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4134", + "description": "Get the sketches in the active design.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://sketches", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_bodies", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4139, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4139", + "description": "Get the bodies in the active design.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://bodies", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_context", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4144, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4144", + "description": "Get the active Fusion Electronics context, including schematic, board, and library state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-context", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_schematic", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4149, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4149", + "description": "Get the active Fusion Electronics schematic state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-schematic", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_board", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4154, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4154", + "description": "Get the active Fusion Electronics board state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-board", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_library", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4159, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4159", + "description": "Get the active Fusion Electronics library state.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-library", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_libraries", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4164, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4164", + "description": "List the libraries referenced by the active electronics document.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-libraries", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_documents", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4169, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4169", + "description": "List open and available electronics documents and data files.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-documents", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_electronics_errors", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4174, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4174", + "description": "Get ERC and DRC errors from the active electronics schematic and board.", + "category": "Electronics", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://electronics-errors", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "resource", + "name": "get_mcp_capabilities", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4179, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4179", + "description": "Describe the fixed MCP surface and the generic Fusion API bridge.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": {} + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "uri": "fusion://mcp-capabilities", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "prompt", + "name": "create_sketch_prompt", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4368, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4368", + "description": "Create a prompt for creating a sketch based on a description.", + "category": "Sketches", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "required": [ + "description" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "prompt", + "name": "parameter_setup_prompt", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4373, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4373", + "description": "Create a prompt for setting up parameters based on a description.", + "category": "Parameters", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "required": [ + "description" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + }, + { + "repository": "Poyraxx", + "kind": "prompt", + "name": "feature_strategy_prompt", + "file": "MCPserve/commands/MCPServerCommand.py", + "line": 4378, + "sourceUrl": "https://github.com/Poyraxx/fusion-advanced-mcp-server/blob/2dfb68993caad514a1346a9641ca9f9d149c88c7/MCPserve/commands/MCPServerCommand.py#L4378", + "description": "Create a prompt for planning sketches and features for a Fusion model.", + "category": "Solid features", + "externalEvidence": "registered source implementation; no live validation performed", + "externalCaveat": "Runtime/API success not established by this inventory.", + "inputSchema": { + "type": "object", + "properties": { + "description": { + "type": "string" + } + }, + "required": [ + "description" + ] + }, + "schemaSource": "statically inferred Python signature; runtime FastMCP not imported", + "gap": true, + "bridgeRoute": "Bridge verbs or documentation provide some equivalent data; no same URI/prompt registration", + "notes": "Protocol registration gap; inspect corresponding feature route for mechanical capability." + } + ] +} diff --git a/docs/mechanical-comparison/solidworks-catalog.json b/docs/mechanical-comparison/solidworks-catalog.json new file mode 100644 index 0000000..4a9746a --- /dev/null +++ b/docs/mechanical-comparison/solidworks-catalog.json @@ -0,0 +1,400 @@ +{ + "_hint": "Say 'swx' to reach this bridge. Everyday flow: swx_status \u2192 swx_find_files \u2192 swx_open \u2192 swx_bom / swx_mass_properties / swx_export. To MAKE something: swx_new_document \u2192 swx_run_script \u2192 swx_inspect_bodies \u2192 swx_save_as. swx_get_app_state is the poll-me verb, swx_state the render-me one. Verb names and arg names mirror the Fusion 360 bridge (`outputPath`, `filePath`, `name`, `parameters`, `bodies`) so fusion_* knowledge transfers directly; docs/FUSION-PARITY-REPORT.md records exactly where the two diverge and why. Every verb returns its own _hint; that is the documentation that matters.", + "bridge": "solidworks", + "exportFormats": { + "blockedFormats": [ + "wrl", + "vrml" + ], + "note": "Verified on SOLIDWORKS Design Professional for Makers 2026 (3DEXPERIENCE R2026x) on 2026-09-02 by exporting a real solid and checking the bytes on disk. DXF and DWG are DRAWING formats \u2014 they are refused for a part and are expected to work from a .slddrw. VRML (.wrl) hangs SOLIDWORKS on a modal option sheet, so this bridge refuses it outright.", + "provenModelFormats": [ + "step", + "stp", + "iges", + "igs", + "stl", + "parasolid", + "x_t", + "x_b", + "sat", + "3mf", + "glb", + "ply", + "amf", + "3dxml", + "png", + "jpg", + "tif", + "xaml", + "pdf" + ], + "refusedForParts": [ + "obj", + "dxf", + "dwg", + "u3d" + ] + }, + "keyword": "swx", + "mock": false, + "schemaVersion": 1, + "scriptOps": [ + "new_part", + "new_assembly", + "sketch_rect", + "sketch_circle", + "extrude", + "cut", + "set_material", + "set_prop", + "save_as", + "rebuild", + "zoom_fit" + ], + "status": "ok", + "statusVerb": "swx_status", + "success": true, + "timeoutSeconds": 120, + "userWrites": "disabled", + "verbs": [ + { + "risk": "write", + "summary": "assembly BOM: quantities per (file, configuration) + custom props; json or csv (csv writes a file)", + "verb": "swx_bom" + }, + { + "risk": "exec", + "summary": "close a document (save:true to save first; a dirty document the bridge did not create needs confirm:true)", + "verb": "swx_close_doc" + }, + { + "risk": "exec", + "summary": "maintainer escape hatch: a late-bound COM call chain on the live app", + "verb": "swx_com_eval" + }, + { + "risk": "read", + "summary": "this catalog", + "verb": "swx_describe" + }, + { + "risk": "read", + "summary": "list open documents", + "verb": "swx_docs" + }, + { + "risk": "write", + "summary": "export by format name or destination extension: STEP/IGES/STL/3MF/GLB/SAT/X_T/X_B/PLY/AMF/3DXML/PDF/PNG/JPG/TIF (DXF/DWG from drawings; VRML refused)", + "verb": "swx_export" + }, + { + "risk": "read", + "summary": "search disk for .sldprt/.sldasm/.slddrw (works without SOLIDWORKS)", + "verb": "swx_find_files" + }, + { + "risk": "read", + "summary": "assembly interference detection", + "verb": "swx_interference" + }, + { + "risk": "read", + "summary": "mass/volume/area/CoM/density (SI units)", + "verb": "swx_mass_properties" + }, + { + "risk": "exec", + "summary": "open a document silently (part/assembly/drawing)", + "verb": "swx_open" + }, + { + "risk": "write", + "summary": "copy a design + all references into a folder", + "verb": "swx_pack_and_go" + }, + { + "risk": "read", + "summary": "active[] progress blocks for in-flight slow verbs", + "verb": "swx_progress" + }, + { + "risk": "read", + "summary": "read custom properties (file or configuration scope)", + "verb": "swx_props_get" + }, + { + "risk": "write", + "summary": "write custom properties (swx_save to persist)", + "verb": "swx_props_set" + }, + { + "risk": "read", + "summary": "read-only ready check; never spawns anything", + "verb": "swx_readiness" + }, + { + "risk": "exec", + "summary": "force rebuild + broken-feature census (design health)", + "verb": "swx_rebuild_check" + }, + { + "risk": "write", + "summary": "save the target document", + "verb": "swx_save" + }, + { + "risk": "read", + "summary": "screenshot the SOLIDWORKS window via ab's generic verb", + "verb": "swx_screenshot" + }, + { + "risk": "process", + "summary": "launch SOLIDWORKS via COM (background; cold start 30-90s)", + "verb": "swx_start" + }, + { + "risk": "read", + "summary": "open docs + active doc + detection (logical state of the union)", + "verb": "swx_state" + }, + { + "risk": "read", + "summary": "bridge + SOLIDWORKS detection + COM state (the everyday probe)", + "verb": "swx_status" + }, + { + "risk": "process", + "summary": "quit SOLIDWORKS", + "verb": "swx_stop" + }, + { + "risk": "write", + "summary": "remove the bridge's own artifacts (ab calls this on app uninstall)", + "verb": "swx_uninstall" + }, + { + "risk": "exec", + "summary": "create a NEW part/assembly/drawing from the stock template", + "verb": "swx_new_document" + }, + { + "risk": "exec", + "summary": "import STEP/IGES/Parasolid/STL as a new document", + "verb": "swx_import" + }, + { + "risk": "write", + "summary": "save the document to a new path; the default RENAMES the open document, so one the bridge did not create needs confirm:true", + "verb": "swx_save_as" + }, + { + "risk": "read", + "summary": "running + active document + documents + workspace + busy, in one call", + "verb": "swx_get_app_state" + }, + { + "risk": "read", + "summary": "metadata for one document (name, type, saved, configurations)", + "verb": "swx_document_info" + }, + { + "risk": "exec", + "summary": "make an open document the active one", + "verb": "swx_activate_document" + }, + { + "risk": "exec", + "summary": "close EVERY open document (confirm:true; skips unsaved by default)", + "verb": "swx_close_all_documents" + }, + { + "risk": "exec", + "summary": "close only the scratch documents this bridge created", + "verb": "swx_reset_workspace" + }, + { + "risk": "exec", + "summary": "drain leaked STEP/IGES import temporaries (\u2026\\Temp\\swx\\IC~~\\\u2026); default posture, never a saved user doc", + "verb": "swx_close_import_temps" + }, + { + "risk": "exec", + "summary": "save EVERY open document into a recovery folder, then close it \u2014 nothing closes before it is on disk; needs only a reason", + "verb": "swx_close_all_safely" + }, + { + "risk": "exec", + "summary": "close_all_safely, then quit SOLIDWORKS; idempotent, and the quit is skipped unless the session really emptied", + "verb": "swx_shutdown" + }, + { + "risk": "read", + "summary": "what previous sweeps preserved, and where \u2014 newest first", + "verb": "swx_recover_list" + }, + { + "risk": "read", + "summary": "is the user working in this SOLIDWORKS? foreground + last input + documents the bridge did not open (the guard every quit and sweep passes)", + "verb": "swx_user_presence" + }, + { + "risk": "process", + "summary": "force-kill SOLIDWORKS (reason + confirm; discards unsaved work)", + "verb": "swx_kill" + }, + { + "risk": "read", + "summary": "SOLIDWORKS' windows and its main hwnd (read-only, nothing raised)", + "verb": "swx_window_info" + }, + { + "risk": "exec", + "summary": "census of blocking SOLIDWORKS dialogs; close:true is opt-in, gated, and never touches an unattributed window", + "verb": "swx_dismiss_blocking_dialogs" + }, + { + "risk": "exec", + "summary": "close one window by hwnd (reason + confirm)", + "verb": "swx_close_window" + }, + { + "risk": "read", + "summary": "is SOLIDWORKS showing the Document Recovery dialog?", + "verb": "swx_check_recovery" + }, + { + "risk": "read", + "summary": "append-only record of what the bridge did in the background", + "verb": "swx_action_ledger" + }, + { + "risk": "read", + "summary": "measured per-verb timings on THIS machine (count/p50/p90)", + "verb": "swx_verb_times" + }, + { + "risk": "write", + "summary": "sticky taskbar badge showing an AI is driving SOLIDWORKS", + "verb": "swx_set_driving_badge" + }, + { + "risk": "read", + "summary": "features/sketches/bodies/components/material/rebuild state", + "verb": "swx_design_info" + }, + { + "risk": "read", + "summary": "global variables + named model dimensions", + "verb": "swx_get_parameters" + }, + { + "risk": "write", + "summary": "drive one named dimension (valueMm or value) and rebuild", + "verb": "swx_set_parameter" + }, + { + "risk": "read", + "summary": "per-body geometry read-back in millimetres (bbox, volume, area, faces)", + "verb": "swx_inspect_bodies" + }, + { + "risk": "exec", + "summary": "run a SOLIDWORKS VBA macro (.swp/.swb/.dll) \u2014 arbitrary code, so it needs the write opt-in every time", + "verb": "swx_run_macro" + }, + { + "risk": "exec", + "summary": "the modeling DSL: new_part/sketch_rect/extrude/set_material/save_as (refuses to build into a document the bridge did not create)", + "verb": "swx_run_script" + }, + { + "risk": "write", + "summary": "insert part/assembly files as components of an assembly, positioned in mm (the verb swx_bom needs)", + "verb": "swx_add_component" + }, + { + "risk": "read", + "summary": "the small set of preferences this bridge can round-trip", + "verb": "swx_get_preferences" + }, + { + "risk": "write", + "summary": "write one preference and READ IT BACK to verify", + "verb": "swx_set_preference" + }, + { + "risk": "read", + "summary": "3DEXPERIENCE cloud reachability (spoiler: no COM route exists)", + "verb": "swx_cloud_status" + }, + { + "risk": "exec", + "summary": "open + activate + zoom-to-fit a part, in the background", + "verb": "swx_show_part" + }, + { + "risk": "exec", + "summary": "open + activate + zoom-to-fit an assembly, in the background", + "verb": "swx_show_assembly" + }, + { + "risk": "exec", + "summary": "open + activate + zoom-to-fit a drawing, in the background", + "verb": "swx_show_drawing" + }, + { + "risk": "write", + "summary": "export STEP (fusion_export_step parity: outputPath)", + "verb": "swx_export_step" + }, + { + "risk": "write", + "summary": "export IGES", + "verb": "swx_export_iges" + }, + { + "risk": "write", + "summary": "export STL mesh", + "verb": "swx_export_stl" + }, + { + "risk": "write", + "summary": "export 3MF", + "verb": "swx_export_3mf" + }, + { + "risk": "write", + "summary": "export GLB (binary glTF)", + "verb": "swx_export_glb" + }, + { + "risk": "write", + "summary": "export ACIS SAT", + "verb": "swx_export_sat" + }, + { + "risk": "write", + "summary": "export Parasolid (.x_t)", + "verb": "swx_export_parasolid" + }, + { + "risk": "write", + "summary": "export PDF (3D PDF from a part; a sheet from a drawing)", + "verb": "swx_export_pdf" + }, + { + "risk": "write", + "summary": "export DXF (drawings; refused for a part on this edition)", + "verb": "swx_export_dxf" + }, + { + "risk": "write", + "summary": "export DWG (drawings; refused for a part on this edition)", + "verb": "swx_export_dwg" + } + ], + "version": "0.9.11", + "writePolicy": "DENY BY DEFAULT. This bridge writes only to documents it created itself (swx_new_document / swx_import) and to destination paths that do not exist yet. Touching the user's documents, or overwriting an existing file, requires the bridge process to be started with SWX_ALLOW_USER_WRITES=1 AND the call to carry allowUserWrites:true, confirm:true and a reason. An AI cannot grant this to itself; ask the user. Every exception is recorded in swx_action_ledger.", + "inspectedAt": "2026-10-02", + "sourceCommit": "95c5a3bfc340e83a8619d7016572692f69c9301d" +} diff --git a/docs/mechanical-comparison/solidworks-parity.md b/docs/mechanical-comparison/solidworks-parity.md new file mode 100644 index 0000000..ecc17bf --- /dev/null +++ b/docs/mechanical-comparison/solidworks-parity.md @@ -0,0 +1,24 @@ +# SolidWorks comparison + +Source baseline: SolidWorks bridge 0.9.11, commit `95c5a3bfc340e83a8619d7016572692f69c9301d`, with 67 public verbs and 11 modeling DSL operations in the [captured live catalog](solidworks-catalog.json). [Canonical source](https://wiki.adom.inc/adom/solidworks-bridge). This is broader and newer than the old 0.6.9 baseline used by the first audit. The old Fusion parity report contains historical assembly limitations; the later crate build log records successful assembly insertion, BOM and interference workflows, so those old limitations must not be treated as current failures. + +This table compares mechanical behavior, rather than raw verb counts. The new Fusion surface groups many operations beneath `fusion_mechanical` and publishes their schemas at runtime. + +| Behavior | SolidWorks bridge | Fusion bridge implementation | Remaining distinction | +|---|---|---|---| +| Discovery and readback | design_info, inspect_bodies, parameters, document_info | inspect/inspect_entity, health, current target, explicit length/area/volume/mass and transform unit labels | Per-application entity and parameter models differ. | +| New parametric part | new_document plus 11-operation DSL | new_design, sketches, constraints/dimensions, common solid features | Fusion supports a wider typed authoring vocabulary here; this is not a claim of general API completeness. | +| General scripting | run_script DSL, run_macro, com_eval | run_modeling_script and official MCP script delegation | General execution does not count as a dedicated mechanical feature. | +| Safe existing-document edits | document ownership/write policy and rebuild checks | Session/document/revision guards, current entity references, operation replay ledger and measured transaction recovery | The new typed safety contract does not retrofit arbitrary scripts or every legacy verb. | +| Assembly insertion | add_component places part/assembly files in mm | Typed component/occurrence creation, repeated definitions, independent copies, transforms and supplier CAD import | Internal Hybrid assemblies; no arbitrary external linked-document insertion. | +| McMaster sourcing | Browser CAD download → swx_import → properties → measured assembly placement | Native Insert McMaster command plus typed downloaded-part import/provenance | Native browsing and local-file import need separate verification; no ordering workflow. | +| Properties/materials | props_get/props_set; set_material/set_prop DSL | Part metadata, supplier/native attributes and material assignment by library/material ID | Native material catalogs and custom-property schemas differ. | +| Mechanical BOM | bom groups by file/configuration with properties; JSON/CSV | Typed flat/structured BOM and CSV; root bodies, repeated/nested quantities and purchased-subassembly policy | Fusion definition and occurrence identity replace file/configuration keys. | +| Interference/mass | interference and mass_properties | Occurrence-aware interference and high-accuracy physical properties with explicit scope | Material mass and geometric overlap need explicit scope and units. | +| Neutral/native exports | Broad proven exchange list plus native SW saves | Verified staged Fusion exports and native F3D archives | Parasolid/GLB/PLY/AMF/3DXML and drawing PDF/DXF/DWG are not covered by this Fusion mechanical contract. | +| Reference packaging | pack_and_go | Native Fusion archive/export plus cloud version save | No typed Pack and Go equivalent for an arbitrary external-reference graph. | +| Configurations | Native SW configuration-aware metadata/BOM | Parameters and atomic parameter batches | Native Fusion configuration-table/variant authoring remains a gap. | +| Recovery lifecycle | Safe close/shutdown, recovery archives/list, append-only action ledger | Existing Fusion document hygiene plus session operation ledger | The new operation ledger is not durable across add-in restart and does not replace a disk recovery archive. | +| Cloud | Catalog explicitly reports no direct 3DEXPERIENCE COM route | Existing signed-in cloud document operations/APS; optional future Compute backend | Different vendor cloud APIs and entitlements; not a mechanical parity defect. | + +See the [build handoff](../build-2026-10-02.md) and checkpoint reports for actual live results and limitations. This table records implemented behavior rather than claiming every option has been exercised.