Skip to content

Quick start

Initialize a pump and dispense 500 µL from the media reservoir to a chip. You'll need your Habitat device's API URL — see Access.

1. Set up

curl (or any HTTP client) is all you need — no extra install required.

Add the Open Culture connector once (see MCP), then just ask Claude in plain language — no code, no URLs. The steps below show what to say.

2. Check the server

curl http://mistyforest.local:8000/health

Expected: a JSON object with device, drivers, and status fields.

Ask: "Is MistyForest ready?"

3. List pumps

curl http://mistyforest.local:8000/pumps/

A MistyForest-class device has two pumps: address 0 (Dispense) and address 1 (Aspirate).

Ask: "What pumps does MistyForest have, and are they ready?"

4. Initialize pump 0

Pumps must be initialized before use. Initialization homes the plunger and valve.

curl -X POST http://mistyforest.local:8000/pumps/0/initialize

Ask: "Initialize pump 0 on MistyForest." Claude proposes the action and waits for your approval before it runs.

5. Dispense 500 µL

curl -X POST http://mistyforest.local:8000/routines/dispense \
  -H "Content-Type: application/json" \
  -d '{"params": {"volume_ul": 500.0, "chip_id": "chip_A", "source_role": "media"}}'

Ask: "Dispense 500 µL of media to chip_A on MistyForest." Claude proposes the operation and waits for your approval before anything moves.

6. Observe the result

curl http://mistyforest.local:8000/pumps/0

The plunger position should reflect the dispense.

Ask: "What's pump 0's plunger position on MistyForest?"

Error handling

Non-2xx responses return a JSON body with a detail field:

curl -s http://mistyforest.local:8000/pumps/99
# → {"detail": "Pump 99 not found"}  (404)

When something fails, Claude relays it in plain language — e.g. that pump 99 doesn't exist, or which safety interlock blocked an action — and suggests a fix. Actuating tools always wait for your approval first.

Where next

  • Read the API overview for conventions, units, and error shapes.
  • Drive your Habitat device in natural language with MCP.