# Example programs

> Copy-ready execute programs for calculations, citations, drawings and deliverables.

Source: https://docs.archee.studio/mcp/examples

Each program is one `execute` call. Ask your agent for the outcome and it will write programs like these; you can also send them yourself.

## A cited calculation

```python
import archee

belt = archee.calc.run("vbelt", P1_kW=8.152, n1_rpm=1455.0, u=2.252, section="B",
                       d1_mm=180.0, eps_slip=0.01, load_class="light", motor_group="I", shifts=2)
belt
```

Not sure of the inputs? `archee.calc.describe("vbelt")` lists them with units.

## Find the source

```python
import archee

hits = archee.kb.search("bảng chọn tiết diện đai thang", limit=3)
[{"source": h.source, "page": h.printed_page, "text": h.text[:200]} for h in hits]
```

## Pick parts for a shaft

```python
import archee

d = 40
{
    "key": archee.standards.lookup_key(shaft_d=d),
    "bearings": archee.standards.list_bearings(d=d, kind="deep_groove"),
}
```

## Check a drawing and share it

Upload the drawing in the web app first, or with `archee.files.upload`.

```python
import archee

report = archee.verify.check("sheets/detail-a3.dxf", standard="TCVN")
link = archee.files.link("sheets/detail-a3.dxf")
{"passed": report.passed, "findings": [f.message for f in report.findings], "download": link.url}
```

## Render a drawing

```python
import archee

archee.draft.render("sheets/assembly-a0.dxf", "renders/assembly.png", dpi=150)
archee.files.link("renders/assembly.png").url
```

## Change a design value safely

```python
import archee

doc = archee.project.design("shafts.slow.d_mm")
archee.project.design_set("shafts.slow.d_mm", 45, expected_revision=doc.revision)
```

If someone changed the design since you read it, the write is refused instead of overwriting their change; read it again and retry.

## Hand off long work

```python
import archee

run = archee.agent.run("Redraw the A3 detail of the slow shaft with the new diameter.")
run.run_id
```

Then, in a later call:

```python
import archee
archee.runs.get("RUN_ID")
```
