# rhino_curve_length

Return the curve's parametric domain and approximate length.

Agent View of the PolicyLayer registry record for `rhino_curve_length`. HTML page: https://policylayer.com/tools/easehee-rhino-mcp/rhino-curve-length

## Facts

- Tool: `rhino_curve_length`
- Server: Rhino (`easehee/rhino-mcp`) — https://policylayer.com/tools/easehee-rhino-mcp.md
- Homepage: https://github.com/EaseHee/rhino-mcp
- Risk category: Read (Low risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Allowed

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

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

## Why rhino_curve_length is rated Low

This tool only retrieves geometric properties (parametric domain and length) of an existing curve. It has no side effects and does not modify, create, or delete any data.

From the tool's own definition: "Return the curve's parametric domain and approximate length"

## Use case

AI agents call rhino_curve_length to retrieve information from Rhino without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Rhino:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "rhino_curve_length": {}
  }
}
```

## Other tools on Rhino (244)

- `gh_delete_component` — Destructive — https://policylayer.com/tools/easehee-rhino-mcp/gh-delete-component.md
- `gh_reset` — Destructive — https://policylayer.com/tools/easehee-rhino-mcp/gh-reset.md
- `rhino_bim_pset_delete` — Destructive — https://policylayer.com/tools/easehee-rhino-mcp/rhino-bim-pset-delete.md
- `rhino_layer_delete` — Destructive — https://policylayer.com/tools/easehee-rhino-mcp/rhino-layer-delete.md
- `rhino_object_delete` — Destructive — https://policylayer.com/tools/easehee-rhino-mcp/rhino-object-delete.md
- `rhino_render_queue_cancel` — Destructive — https://policylayer.com/tools/easehee-rhino-mcp/rhino-render-queue-cancel.md
- `gh_new_canvas` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/gh-new-canvas.md
- `gh_run` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/gh-run.md
- `gh_run_template` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/gh-run-template.md
- `rhino_annotation_scale_bar` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-annotation-scale-bar.md
- `rhino_attractor_displace_points` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-attractor-displace-points.md
- `rhino_axis_ribs` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-axis-ribs.md
- `rhino_batch_call` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-batch-call.md
- `rhino_boolean_intersection` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-boolean-intersection.md
- `rhino_boolean_union` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-boolean-union.md
- `rhino_bridge_select_instance` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-bridge-select-instance.md
- `rhino_display_mode_set` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-display-mode-set.md
- `rhino_drawing_section_cut` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-drawing-section-cut.md
- `rhino_execute_csharp` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-execute-csharp.md
- `rhino_execute_python` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-execute-python.md
- `rhino_mesh_boolean_union` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-mesh-boolean-union.md
- `rhino_network_surface` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-network-surface.md
- `rhino_object_select` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-object-select.md
- `rhino_render_queue_submit` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-render-queue-submit.md
- `rhino_render_to_file` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-render-to-file.md
- `rhino_section` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-section.md
- `rhino_section_at_axis` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-section-at-axis.md
- `rhino_shell` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-shell.md
- `rhino_skin_from_sections` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-skin-from-sections.md
- `rhino_taper` — Execute — https://policylayer.com/tools/easehee-rhino-mcp/rhino-taper.md
- …and 214 more: https://policylayer.com/tools/easehee-rhino-mcp.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=easehee-rhino-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/easehee-rhino-mcp
