> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parashell.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Parashell agent reference

> Agent-facing retrieval map for Parashell MCP tools and FreeCAD-compatible Python execution

This documentation is written for CAD agents that operate Parashell through MCP and the FreeCAD-compatible Python execution surface. It is optimized for retrieval, exact tool selection, argument construction, validation, and recovery.

Terminology constraint: call the product **Parashell**. When referring to API compatibility, use **FreeCAD-compatible**. Do not identify Parashell as the upstream product.

## Retrieval map

* [Agent quickstart](/quickstart): minimal operating loop and first-call sequence.
* [Operating model](/agent/operating-model): domain routing, transactions, validation, rendering, safety, and fallback behavior.
* [Schemas](/agent/schemas): shared JSON shapes for vectors, placements, object selectors, object properties, sketch geometry, constraints, spreadsheets, views, and builder params.
* [API coverage](/agent/api-coverage): what is exhaustive, what is runtime-discovered, and how agents should treat coverage.
* [Best practices](/agent/best-practices): documents, transactions, recompute, expressions, spreadsheets, Draft, BIM, TechDraw, GUI boundaries, and validation.
* [Python quirks](/agent/python-quirks): runtime quirks for stubs, transactions, links, properties, expressions, spreadsheets, GUI gating, and parseability.
* [Compatible modules](/agent/compatible-modules): dense module-by-module map for the FreeCAD-compatible Python surface.
* [Runtime introspection](/agent/runtime-introspection): exact symbol/property discovery recipes to run inside Parashell.
* [TypeIds and properties](/agent/typeids-properties): object TypeIds, common properties, and expression/property discovery.
* [Python API](/agent/python-api): FreeCAD-compatible module names, object creation, parametric modeling, sketches, Part geometry, Draft, TechDraw, BIM, mesh, spreadsheet, and export patterns.
* [Python syntax](/agent/python-syntax): allowed Python constructs, forbidden execution forms, snippet structure, exception handling, and minimal code templates.
* [Workflows](/agent/workflows): executable CAD workflows for inspection, creation, modification, repair, drawings, BOMs, BIM, spreadsheets, and exports.
* [Python reference: core stubs](/agent/python-reference-core): static `.pyi` reference for App, Base, Gui, and Main stubs.
* [Python reference: modeling stubs](/agent/python-reference-modeling): static `.pyi` reference for Part, PartDesign, Sketcher, Mesh, Spreadsheet, TechDraw, Import, Measure, Surface, and related modeling stubs.
* [Python reference: workbench stubs](/agent/python-reference-workbenches): static `.pyi` reference for remaining workbench stubs.
* [Tool index](/agent/tools): every MCP tool grouped by purpose with signatures.

## Mandatory agent invariants

* Start from current state. Use `get_world_state`, `get_objects`, `take_snapshot`, or relevant list tools before mutating an existing model.
* Prefer typed MCP tools over `execute_code`. Use Python only for unsupported operations, low-level inspection, or recovery after a concrete tool failure.
* Use transactions for mutation when the tool requires `transaction_id`: `transaction_create` -> mutation calls -> `transaction_plan` -> `transaction_apply` or `transaction_cancel`.
* Render after geometry creation or modification. Use `get_view`, `get_ortho`, `get_view_with_overlays`, or page rendering for TechDraw.
* Validate after mutation with geometry checks appropriate to the domain: `check_objects`, `check_geometry`, `verify_solid`, `analyze_mass_properties`, `check_interferences`, and `validate_document`.
* Build parametric models. Prefer Spreadsheet-driven variables, constrained sketches, expressions, named features, and editable object properties. Do not deliver a baked mesh or one-off shape as the final design unless explicitly requested as an export artifact.
* Keep units explicit. Parashell geometry values are normally millimeter-scale unless the document or user states otherwise.
