# Reported issues for io.github.KittyCAD/zoo-mcp

Pod holds 8 of 8 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [io.github.KittyCAD/zoo-mcp](/mcp/io-github-kittycad-zoo-mcp).

## Most discussed

### Use the composite file physical-properties endpoint for CAD analysis

## Problem

`calculate_cad_physical_properties` currently makes separate Zoo API requests for volume, mass, surface area, center of mass, and CAD-to-STL conversion for local bounds. The same source can therefore be uploaded, imported, and tessellated up to five times for one MCP tool call. When STEP analysis is asynchronous, this can create multiple long-running worker jobs for the same customer request.

KittyCAD/api#4491 adds a composite `POST /file/physical-properties` operation that imports 

[Read the thread](https://github.com/KittyCAD/mcp/issues/254) · 2026-08-29 · open · outside contributor · 0 comments

### Poll asynchronous file-analysis results instead of treating uploaded responses as failures

## Summary

Zoo MCP treats asynchronous file-analysis responses as terminal failures. The Zoo API intentionally returns an `uploaded` response with an operation ID and a null result when a source file exceeds 25 MB. The MCP helpers immediately inspect the null result and raise errors such as `Failed to calculate volume` instead of polling the operation.

This affects the narrow file endpoints used by `calculate_volume`, `calculate_mass`, `calculate_surface_area`, `calculate_center_of_mass`, `cal

[Read the thread](https://github.com/KittyCAD/mcp/issues/252) · 2026-08-29 · closed · outside contributor · 0 comments

### Add an MCP tool to inspect and visualize sketch-region topology

## Summary

Add an MCP tool that returns both machine-readable sketch-region topology and a
high-contrast PNG for a sketch in an active modeling session.

Zookeeper can currently validate KCL and take 3D snapshots, but it cannot inspect
the 2D topology that Engine used when deciding whether sketch segments form
regions. When region creation or solid lofting fails, the agent therefore has to
infer whether the cause is an open loop, self-intersection, wrong arc sweep,
incorrect winding, an exterio

[Read the thread](https://github.com/KittyCAD/mcp/issues/245) · 2026-08-27 · open · outside contributor · 1 comment

### Return CAD physical-analysis vectors in one coordinate frame

# Return CAD physical-analysis vectors in one coordinate frame

## Summary

`calculate_cad_physical_properties` can return `center_of_mass` and
`bounding_box` in different coordinate frames.

The center of mass comes from the API's file center-of-mass endpoint in the
format library's internal OpenGL frame. The bounding box comes from STL mesh
coordinates: either the original STL or a default CAD-to-STL conversion. The
default imported-model/STL convention is KittyCAD coordinates. The combined
re

[Read the thread](https://github.com/KittyCAD/mcp/issues/242) · 2026-08-27 · closed · outside contributor · 1 comment

### Calculate CAD bounding boxes across every converted output

# Calculate CAD bounding boxes across every converted output

## Summary

The combined CAD physical-analysis helper and the standalone CAD bounding-box
helper calculate bounds from only the first STL returned by CAD conversion:

```python
stl_data = next(iter(stl_result.outputs.values()))
```

If a source file converts into multiple output files or bodies, the reported
volume, mass, surface area, and center of mass can describe the complete source
file while the bounding box describes only which

[Read the thread](https://github.com/KittyCAD/mcp/issues/241) · 2026-08-27 · open · outside contributor · 0 comments

### Return CAD physical-analysis length results in one explicit unit

# Return CAD physical-analysis length results in one explicit unit

## Summary

`zoo_calculate_cad_physical_properties` can return center-of-mass coordinates
and bounding-box coordinates in different length units without identifying that
the units differ.

The caller's `unit_length` is passed to the remote center-of-mass endpoint, but
the bounding box is computed locally from the source STL coordinates. For
non-STL inputs, the source file is converted to STL and the returned mesh
coordinates are

[Read the thread](https://github.com/KittyCAD/mcp/issues/240) · 2026-08-27 · open · outside contributor · 0 comments

### Bound CAD snapshot import latency and reconnect retries when an engine response stalls

## Summary

CAD inspection can block synchronously for minutes while waiting for the engine's import response, then repeat the same expensive attempt after every reconnect. In production, repeated `inspect(..., camera_view="multiview", zoom=true)` attempts against the same public-supplier STEP attachment remained open until the conversation reconnected. On reconnect, unrelated documentation and retrieval tools completed, while `inspect` alone stalled again. This loop continued for more than an h

[Read the thread](https://github.com/KittyCAD/mcp/issues/232) · 2026-08-19 · closed · outside contributor · 4 comments

### Bound sketch constraint status calls that can hang indefinitely

During a Zookeeper Pro smoke run, `kcl.get_sketch_constraint_status()` appears to have hung indefinitely. `zoo_get_sketch_constraint_status()` awaits it through `_execute_with_retries()`, but retries only begin after an exception and there is no deadline for a call that never returns.

Please add a bounded timeout/cancellation path and return a clear timeout error to callers.

TTC caller-side guard: https://github.com/KittyCAD/text-to-cad/issues/4009

Evidence:
- [Opik trace](https://www.comet.c

[Read the thread](https://github.com/KittyCAD/mcp/issues/221) · 2026-08-08 · open · outside contributor · 0 comments

## Most recent

The remaining reports are on [the project's issue tracker](https://github.com/KittyCAD/mcp/issues).
