# constrain_angle

A write tool on the FreeCAD Robust MCP Server MCP server.

Agent View of the PolicyLayer registry record for `constrain_angle`. HTML page: https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/constrain-angle

## Facts

- Tool: `constrain_angle`
- Server: FreeCAD Robust MCP Server (`spkane/freecad-addon-robust-mcp-server`) — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server.md
- Homepage: https://github.com/spkane/freecad-addon-robust-mcp-server
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "constrain_angle",
    "arguments": {}
  }
}
```

## Why constrain_angle is rated Medium

The tool creates or modifies sketch geometry constraints (angle constraints) within FreeCAD models. This is a Write operation because it alters the design data reversibly—constraints can be removed, edited, or replaced without permanent deletion. While not Read (no data retrieval) or Destructive (fully reversible), it modifies model state.

From the tool's own definition: "Tool name 'constrain_angle' indicates modification of sketch constraints in FreeCAD; sibling tools like 'add_sketch_constraint' confirm this tool adds or modifies constraint data in a reversible manner."

## Use case

AI agents use constrain_angle to create or update resources in FreeCAD Robust MCP Server, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your FreeCAD Robust MCP Server environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches FreeCAD Robust MCP Server:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "constrain_angle": {
      "limits": [
        {
          "counter": "constrain_angle_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on FreeCAD Robust MCP Server (151)

- `close_document` — Destructive — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/close-document.md
- `delete_macro` — Destructive — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/delete-macro.md
- `delete_object` — Destructive — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/delete-object.md
- `delete_sketch_constraint` — Destructive — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/delete-sketch-constraint.md
- `delete_sketch_geometry` — Destructive — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/delete-sketch-geometry.md
- `spreadsheet_clear_cell` — Destructive — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/spreadsheet-clear-cell.md
- `activate_workbench` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/activate-workbench.md
- `boolean_operation` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/boolean-operation.md
- `draft_extrude_shapestring` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/draft-extrude-shapestring.md
- `execute_python` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/execute-python.md
- `explode_compound` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/explode-compound.md
- `part_sweep` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/part-sweep.md
- `recompute` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/recompute.md
- `recompute_document` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/recompute-document.md
- `revolution_sketch` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/revolution-sketch.md
- `run_macro` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/run-macro.md
- `safe_execute` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/safe-execute.md
- `scale_object` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/scale-object.md
- `set_camera_position` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/set-camera-position.md
- `shell_object` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/shell-object.md
- `slice_shape` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/slice-shape.md
- `subtractive_loft` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/subtractive-loft.md
- `subtractive_pipe` — Execute — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/subtractive-pipe.md
- `common_all` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/common-all.md
- `draft_feature` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/draft-feature.md
- `draft_shapestring_to_face` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/draft-shapestring-to-face.md
- `draft_text_on_surface` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/draft-text-on-surface.md
- `section_shape` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/section-shape.md
- `set_display_mode` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/set-display-mode.md
- `set_view_angle` — Other — https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server/set-view-angle.md
- …and 121 more: https://policylayer.com/tools/spkane-freecad-addon-robust-mcp-server.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=spkane-freecad-addon-robust-mcp-server · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/spkane-freecad-addon-robust-mcp-server
