# Zhihuo RotoSpider Layout

> Rotomolding mold-on-arm layout feasibility: which molds fit on a machine arm/spider, and how.

- name: net.zhihuo.mcp/rotospider-layout
- version: 2.0.0
- connection class: R0 (autonomous)
- trust: 60/100 flags: no-repository, deprecated
- quality: 82/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/net.zhihuo.mcp%2Frotospider-layout
- tools: https://api.protogrid.dev/v1/servers/net.zhihuo.mcp%2Frotospider-layout/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "rotospider-layout": {
      "type": "http",
      "url": "https://mcp.zhihuo.net/roto/mcp"
    }
  }
}
```


## Trust

- hygiene: 70
- liveness: 100
- freshness: 10
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-100% -no-repository -deprecated
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 82/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 2 of 2 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: check_mold_layout (destructiveHint); send_feedback (destructiveHint)
- pass `tools.token_cost`: about 1,789 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 2, about 1,789 tokens to load them all
- tool set hash: dc50947e1ab71384b239d27c63e33573
- tools last changed: 2026-09-26T08:58:01.618Z
- badge: [![protogrid quality](https://protogrid.dev/badge/net.zhihuo.mcp/rotospider-layout.svg)](https://protogrid.dev/servers/net.zhihuo.mcp/rotospider-layout)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-26 `check_mold_layout` changed (description, inputSchema)
  - before: Check whether molds fit together on a rotational-molding machine arm. Every answer comes from the deterministic RotoSpider geometric layout engine: rotation-envelope and dead-height checks, pairwise mold-to-mold clearance, offset-arm riser selection, and ring arrangements for 3+ identical molds. It never returns a physically invalid layout. Args: molds: List of mold objects. Use one explicit unit convention: Box/frame mold: {"length_mm": L, "width_mm": W, "height_mm": H}. Cylinder/tank mold: {"diameter_mm": D, "height_mm": H}. Exact L, slope, triangle, frustum, or complex mold: measured length_mm+width_mm+height_mm plus the complete geometry_asset_id+geometry_asset_revision returned by the geometry WebAPI or another trusted publisher. Decimal-inch aliases are length_in, width_in, height_in, and diameter_in. Each value is converted once to canonical micrometres; do not give both aliases for the same value. Optional per mold: "name", "weight_kg", "quantity" (default 1; use 0 to retain the mold type without requesting a copy). machine: Public-sample straight-arm preset. Available models are listed in the tool description. Leave empty AND give no explicit geometry to scan all presets ("which machine can take these molds?"). arm_type: 'straight' (dual spiders) or 'offset' (single-spider offset/L arm). Empty = both. spider_diameter_mm: Custom machine - spider (mounting plate) diameter. Giving this plus envelope_diameter_mm switches to custom-machine mode instead of presets. envelope_diameter_mm: Custom machine - rotation envelope diameter (for offset arms: the vertical envelope diameter). dead_height_mm: Custom straight arm - unusable center height between the upper and lower spider surfaces. offset_spider_y_mm: Custom offset arm - spider Y offset from the spider center to the sphere center (required for custom offset). offset_horz_diameter_mm: Custom offset arm - horizontal usable envelope diameter after side trim (defaults to envelope). riser_heights_mm: Custom offset arm - available riser heights; the solver picks the best (or none). *_in: Decimal-inch aliases for the matching custom-arm and clearance *_mm arguments. max_load_weight_kg: Optional arm weight capacity; the solver loads molds only up to this total weight. clearance_target_mm: Target mold-to-mold clearance (default 300). clearance_min_mm: Minimum acceptable clearance (default 150). allow_overhang_within_envelope: Allow every mold shape to extend past the spider edge while its complete active shape remains inside the rotation envelope. Defaults to false. include_layout: Include request-relative mold placements. Use with response_api v1/v2/v3 to select the placement heading dialect. display_unit: 'mm' (default) or 'in'. Canonical result fields remain millimetres; 'in' adds a display projection rounded to 0.00001 in. response_api: Public placement dialect. Defaults to rotospider.layout-check.v1; request rotospider.layout-check.v2 for exact four-heading orient keys when layouts are included. Returns a summary sentence plus per-arm results: feasible, placed vs requested counts (per mold type when available), selected riser height, spider utilization, center-of-gravity offset, achieved clearance, and the engine's reason when mold
  - after: Check whether molds fit together on a rotational-molding machine arm. Every answer comes from the deterministic RotoSpider geometric layout engine: rotation-envelope and dead-height checks, pairwise mold-to-mold clearance, offset-arm riser selection, and ring arrangements for 3+ identical molds. It never returns a physically invalid layout. Args: molds: List of mold objects. Use one explicit unit convention: Box/frame mold: {"length_mm": L, "width_mm": W, "height_mm": H}. Cylinder/tank mold: {"diameter_mm": D, "height_mm": H}. Exact L, slope, triangle, frustum, or complex mold: measured length_mm+width_mm+height_mm plus the complete geometry_asset_id+geometry_asset_revision returned by the geometry WebAPI or another trusted publisher. Decimal-inch aliases are length_in, width_in, height_in, and diameter_in. Each value is converted once to canonical micrometres; do not give both aliases for the same value. Optional per mold: "name", "weight_kg", "quantity" (default 1; use 0 to retain the mold type without requesting a copy). machine: Public-sample straight-arm preset. Available models are listed in the tool description. Leave empty AND give no explicit geometry to scan all presets ("which machine can take these molds?"). arm_type: 'straight' (dual spiders) or 'offset' (single-spider offset/L arm). Empty = both. spider_diameter_mm: Custom machine - spider (mounting plate) diameter. Giving this plus envelope_diameter_mm switches to custom-machine mode instead of presets. envelope_diameter_mm: Custom machine - rotation envelope diameter (for offset arms: the vertical envelope diameter). dead_height_mm: Custom straight arm - unusable center height between the upper and lower spider surfaces. offset_spider_y_mm: Custom offset arm - spider Y offset from the spider center to the sphere center (required for custom offset). offset_horz_diameter_mm: Custom offset arm - horizontal usable envelope diameter after side trim (defaults to envelope). riser_heights_mm: Custom offset arm - available riser heights; the solver picks the best (or none). *_in: Decimal-inch aliases for the matching custom-arm and clearance *_mm arguments. max_load_weight_kg: Optional arm weight capacity; the solver loads molds only up to this total weight. clearance_target_mm: Target mold-to-mold clearance (default 300). clearance_min_mm: Minimum acceptable clearance (default 150). allow_overhang_within_envelope: Allow every mold shape to extend past the spider edge while its complete active shape remains inside the rotation envelope. Defaults to false. include_layout: Include request-relative mold placements, each with its heading in milli-degrees (angleMilliDeg). display_unit: 'mm' (default) or 'in'. Canonical result fields remain millimetres; 'in' adds a display projection rounded to 0.00001 in. response_api: The answer's version, rotospider.layout-check.v3, the default and the only version. Returns a summary sentence plus per-arm results: feasible, placed vs requested counts (per mold type when available), selected riser height, spider utilization, center-of-gravity offset, achieved clearance, and the engine's reason when molds do not fit.

Full history: https://api.protogrid.dev/v1/servers/net.zhihuo.mcp%2Frotospider-layout/changes

## Remotes

- https://mcp.zhihuo.net/roto/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (2)

- `check_mold_layout`: Check whether molds fit together on a rotational-molding machine arm.

        Every answer comes from the deterministic RotoSpider geometric layout
        engine: rotation-envelope and dead-height checks, pairwise mold-to-mold
        clearance, offset-arm riser selection, and ring arrangements for 3+
        identical molds. It never returns a physically invalid layout.

        Args:
            molds: List of mold objects. Use one explicit unit convention:
                Box/frame mold: {"length_mm": L, "width_mm": W, "height_mm": H}.
                Cylinder/tank mold: {"diameter_mm": D, "height_mm": H}.
                Exact L, slope, triangle, frustum, or complex mold: measured
                length_mm+width_mm+height_mm plus the complete
                geometry_asset_id+geometry_asset_revision returned by the
                geometry WebAPI or another trusted publisher.
                Decimal-inch aliases are length_in, width_in, height_in, and
                diameter_in. Each value is converted once to canonical
                micrometres; do not give both aliases for the same value.
                Optional per mold: "name", "weight_kg", "quantity" (default 1;
                use 0 to retain the mold type without requesting a copy).
            machine: Public-sample straight-arm preset. Available models are
                listed in the tool description. Leave empty AND give no
                explicit geometry to scan all presets ("which machine can take
                these molds?").
            arm_type: 'straight' (dual spiders) or 'offset' (single-spider
                offset/L arm). Empty = both.
            spider_diameter_mm: Custom machine - spider (mounting plate)
                diameter. Giving this plus envelope_diameter_mm switches to
                custom-machine mode instead of presets.
            envelope_diameter_mm: Custom machine - rotation envelope diameter
                (for offset arms: the vertical envelope diameter).
            dead_height_mm: Custom straight arm - unusable center height
                between the upper and lower spider surfaces.
            offset_spider_y_mm: Custom offset arm - spider Y offset from the
                spider center to the sphere center (required for custom offset).
            offset_horz_diameter_mm: Custom offset arm - horizontal usable
                envelope diameter after side trim (defaults to envelope).
            riser_heights_mm: Custom offset arm - available riser heights; the
                solver picks the best (or none).
            *_in: Decimal-inch aliases for the matching custom-arm and
                clearance *_mm arguments.
            max_load_weight_kg: Optional arm weight capacity; the solver loads
                molds only up to this total weight.
            clearance_target_mm: Target mold-to-mold clearance (default 300).
            clearance_min_mm: Minimum acceptable clearance (default 150).
            allow_overhang_within_envelope: Allow every mold shape to extend
                past the spider edge while its complete active shape remains
                inside the rotation envelope. Defaults to false.
            include_layout: Include request-relative mold placements, each
                with its heading in milli-degrees (angleMilliDeg).
            display_unit: 'mm' (default) or 'in'. Canonical result fields remain
                millimetres; 'in' adds a display projection rounded to 0.00001 in.
            response_api: The answer's version, rotospider.layout-check.v3,
                the default and the only version.

        Returns a summary sentence plus per-arm results: feasible, placed vs
        requested counts (per mold type when available), selected riser height,
        spider utilization, center-of-gravity offset, achieved clearance, and
        the engine's reason when molds do not fit.
        
- `send_feedback`: Relay a user question, bug report, or suggestion to the maintainers.

        Args:
            message: The user's feedback text (required).
            contact: Optional reply address the user volunteers.
        
