Skip to main content
Glama
hellstein-dev

fusion-mcp

feature_revolve

Creates or cuts revolved solid or surface features by sweeping sketch profiles or planar faces around a chosen axis, with full, angle, two-angle, or to-entity extents.

Instructions

Revolve sketch profiles or planar faces around an axis - shafts, pulleys, bottles, grooves (operation="cut").

Units: angles are degrees (a string is a Fusion expression, e.g. "180 deg"); units only applies to {"sketch", "point"} profile specs. Refs: profiles from sketch_draw / sketch_profiles; the axis is a sketch line ref (sketch_draw refs), a construction axis (construction_axis, origin:X|Y|Z) or a straight BRep edge (inspect_query). The profile must lie on one side of the axis. is_solid=false revolves a surface body (new_body / new_component only).

Extents: full (default) = 360 deg; angle with symmetric=true splits the angle to both sides of the sketch plane; two_angles sets each side; to_entity revolves up to a face, body, construction plane, vertex or construction point, starting towards the sketch normal (direction="positive") or away from it ("negative").

Errors: an axis that is not linear (e.g. a circular edge) or a wrong extent field -> INVALID_PARAMS (nothing changed); a feature Fusion computes with an error -> FUSION_API_ERROR and the timeline is rolled back.

Returns {"feature": {ref, type, name}, "health": {"state": ok|warning|error|unknown, "message"}, "created_bodies": [{ref, type, name}], "modified_bodies": [{ref, type, name}], "removed_bodies": [<refs of bodies consumed by join/cut>], "component"?: {ref, type, name} (new_component only)}. Body geometry is not repeated: describe the bodies with inspect_* if needed.

Examples:

  • feature_revolve(profiles=["profile:@5,20"], axis="origin:Z")

  • feature_revolve(profiles=[...], axis=, extent={"type": "angle", "angle": 90, "symmetric": true}, operation="cut")

Input Schema

NameRequiredDescriptionDefault
axisYesAxis of revolution: a sketch line, a construction axis (construction_axis or origin:X|Y|Z) or a straight edge (inspect_query)
unitsNoUnit of plain-number lengths and pointsmm
extentNo{"type": "full"} (default, 360 deg) | {"type": "angle", "angle"=360, "symmetric"=false} | {"type": "two_angles", "angle1", "angle2"} | {"type": "to_entity", "entity", "direction"=positive}
is_solidNotrue (default) = solid; false = surface body (new_body / new_component only; close surfaces with surface_stitch, check is_solid)
profilesYesProfiles to use: 'profile:<sketch>@x,y' refs from sketch_profiles / sketch_draw, {"sketch", "point"} / {"sketch", "curves"} / {"sketch", "all": true}, or planar face refs (inspect_query)
operationNonew_body (default), join, cut, intersect or new_componentnew_body
participant_bodiesNoBody refs join/cut/intersect act on (default: every body it touches); not allowed with new_body / new_component

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotation coverage the description carries the full burden, and it does: it discloses rollback/atomicity ("INVALID_PARAMS (nothing changed)", "FUSION_API_ERROR and the timeline is rolled back"), the geometric precondition that the profile must lie on one side of the axis, and the constraint that surface bodies require new_body/new_component. These are exactly the non-obvious behaviors an agent needs before committing a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-line purpose, then organizes detail under clear inline labels (Units:, Refs:, Extents:, Errors:, Returns:, Examples:), and the examples are compact and functional. It is on the long side and the Extents paragraph partly restates the schema's extent description, but nearly every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with a discriminated-union `extent`, no annotations and no output schema, the description supplies everything missing: an inline Returns shape (feature ref, health state, created/modified/removed bodies, component), error/rollback semantics, and worked invocation examples. Nothing an agent needs to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely non-obvious semantics: `units` applies only to {"sketch", "point"} specs (a caveat absent from the schema), symmetric splits the angle about the sketch plane, and to_entity starts toward or away from the sketch normal. Extent field mapping is largely repeated from the schema, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Revolve sketch profiles or planar faces around an axis") and grounds it with concrete outcomes (shafts, pulleys, bottles) plus an operation variant ("grooves (operation=\"cut\")"). This is clearly distinguishable from feature_extrude, feature_sweep and feature_loft, and no sibling would be selected in its place.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites and routing: profiles come from sketch_draw / sketch_profiles, the axis from sketch_draw refs, construction_axis, origin:X|Y|Z or an inspect_query edge, and it says to describe created bodies with inspect_* since geometry is not returned. It also constrains is_solid=false to new_body/new_component. It stops short of naming when to prefer feature_extrude or feature_sweep instead, so no explicit exclusion against siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools