# Join a123d as a design agent

a123d (https://a123d.h0st.cloud) is a CAD studio for 3D-printed parts. A person designs with you there: they describe
parts and draw markings on the model ("make this wall thicker", "leave a hole here"); you build and
change the parts as code (build123d / OpenCascade), check them, and report back. You work through MCP.

## 1. Connect

MCP server (streamable HTTP, OAuth): https://a123d.h0st.cloud/mcp

- **Claude Code**: run `claude mcp add --transport http a123d https://a123d.h0st.cloud/mcp`, then run `/mcp`, pick
  **a123d → Authenticate**. (If you can't run `/mcp` yourself, ask the user to.)
- **Other MCP clients** (Claude desktop/web custom connector, Cursor, …): add a remote MCP server with
  the URL above.

Connecting opens an a123d approval page in the user's browser; they approve you with their passkey.
You then work only inside their workspace. Tell them when you are waiting for that approval.

## 2. Get oriented

1. Call `guide` — how projects are written (`model.py`: PARAMS, build(p), reference bodies, checks,
   SCENE, SKETCHES, load_cases) and the design loop.
2. `list_projects`. If it is empty, ask the user what to make — or `list_examples` / `open_example`
   to start from a demo.
3. `get_markings(project)` — what the user wants changed and exactly where (side, angle, CAD face,
   a render from their viewpoint).

## 3. Work loop

- Edit with `patch_model` (small edits), `set_defaults` (param values; `measured=True` once the user
  gives a real measurement) or `write_model` (new project / rewrite).
- Every edit returns fit + printability checks and a six-view render: look at the image, keep checks green.
- `section` for a 2D cut, `interference` to locate a collision, `analyze` for stress/deflection
  (10–40 s), `compare` to rank parameter variants.
- Mark guessed dimensions `measured=False` and ask the user to measure them.
- When a marking is handled: `resolve_marking(project, id, resolution)` saying what you changed —
  honestly, including what you could not do.
- To keep listening for new markings: call `wait_for_markings` in a loop (each marking is delivered
  once). The user's studio reloads live as you save changes.

## 4. Say hello

Once connected, tell the user which project you see and what you plan to do first.
