# GeoSpec Start with the [capability cheat sheet](https://www.geospec.xyz/docs/reference/cheat-sheet.mdx), then [GeoSpec for agents](https://www.geospec.xyz/docs/agents/for-agents.mdx). Every page below is served as Markdown at its `.mdx` URL. - [Quick start](https://www.geospec.xyz/docs.mdx): Install geospec, claim the size of a STEP part and read passed, failed or refused in TypeScript or Python. - [Install](https://www.geospec.xyz/docs/install.mdx): Add the packages or the wheel, see which engine build each import loads, and check the install with one script. - [Tutorial](https://www.geospec.xyz/docs/tutorial.mdx): Grow one spec over five steps and read a pass, a failure, a refusal, a negation and a reproducible result. - **Guides** - [Check dimensions](https://www.geospec.xyz/docs/guides/check-dimensions.mdx): Claim a bounding box, read the measured bounds and pin where the part sits. - [Check mass properties](https://www.geospec.xyz/docs/guides/check-mass-properties.mdx): Claim volume, surface area, centre of mass and mass, and read which evidence the engine measured. - [Find holes and features](https://www.geospec.xyz/docs/guides/find-holes-and-features.mdx): Claim holes, faces, edge treatments and wall thickness from the exact BRep of a STEP part. - [Check meshes](https://www.geospec.xyz/docs/guides/check-meshes.mdx): Claim that a mesh is closed, sound and in one piece, and count the parts of an assembly mesh. - [Compare parts](https://www.geospec.xyz/docs/guides/compare-parts.mdx): Select two parts of an assembly by name, claim their clearance or non-interference, and query the exact distance between them. - [Query geometry](https://www.geospec.xyz/docs/guides/query-geometry.mdx): Ask the engine what it measured and read the report without asserting anything. - [Set tolerances and budgets](https://www.geospec.xyz/docs/guides/set-tolerances-and-budgets.mdx): State how close a measurement must come, compare with strict bounds, and set the work and the memory a claim may spend before it is refused. - [Read a refusal](https://www.geospec.xyz/docs/guides/read-a-refusal.mdx): Tell a refused claim from a failed one, find the code, and fix the model or the subject rather than the tolerance. - [Reproduce a result](https://www.geospec.xyz/docs/guides/reproduce-a-result.mdx): Keep the bytes a result depends on, hash the result bytes the engine wrote, and get the same digest from TypeScript and Python. - [Run in the browser](https://www.geospec.xyz/docs/guides/run-in-the-browser.mdx): Load the WASM engine in a Web Worker, run expectGeo on bytes the page already holds, and serve the module. - [Test parts in CI](https://www.geospec.xyz/docs/guides/test-parts-in-ci.mdx): Write a test that loads a part and states what it must be, read a pass, a failure and a refusal in the run, and run it on every push. - **Agents** - [GeoSpec for agents](https://www.geospec.xyz/docs/agents/for-agents.mdx): The check-and-fix loop an agent runs with GeoSpec, what each verdict demands, and the Markdown endpoints to read. - [Write a spec from a drawing](https://www.geospec.xyz/docs/agents/spec-from-a-drawing.mdx): Map each callout on a part drawing to a matcher, take the tolerance from the tolerance block and run the spec against the export. - **Reference** - [How it works](https://www.geospec.xyz/docs/how-it-works.mdx): The four stages between model bytes and a verdict, what a subject carries, what a result promises and where the engine stops. - [API reference](https://www.geospec.xyz/docs/api.mdx): Every export of geospec and the geospec-engine wheel, with options, defaults, results, errors and constants in TypeScript and Python. - Matcher reference - [Capability cheat sheet](https://www.geospec.xyz/docs/reference/cheat-sheet.mdx): Every capability on one page, with its kind, admitted subjects, failure code and refusal codes, generated from the registry and the reference. - [Matcher reference](https://www.geospec.xyz/docs/reference/overview.mdx): Every capability in the engine's registry, with its fields, admitted geometry, refusal codes and a passing and a refused example in TypeScript and Python. - [Measurements](https://www.geospec.xyz/docs/reference/measurement.mdx): Bounding box, surface area, volume, mass and centre of mass. - [Soundness](https://www.geospec.xyz/docs/reference/mesh.mdx): Connected components, watertightness, mesh integrity and subject diagnostics. - [BRep and STEP structure](https://www.geospec.xyz/docs/reference/brep.mdx): Shape validity, topology counts, STEP units, product structure and assembly occurrences. - [Features](https://www.geospec.xyz/docs/reference/features.mdx): Planar and cylindrical faces, holes, hole patterns, chamfers, fillets, wall thickness and void continuity. - [Relationships and interference](https://www.geospec.xyz/docs/reference/relationships.mdx): Component interference and spatial relationships between selected parts, faces and bodies. - [Queries](https://www.geospec.xyz/docs/reference/queries.mdx): Positive-only queries that report what the engine measured, without asserting an expected value. - [Fixed contracts](https://www.geospec.xyz/docs/reference/contracts.mdx): Two assertions whose requirement is fixed by a named contract and decided in exact rational arithmetic.