ACTUATOR SCIENCE IN DEVELOPMENT

DEVELOPER GUIDE / 23 OCTOBER 2026

MCP &
Python SDK.

Give your agent the room contracts. Keep your model, controller and decisions. Retrieve the original evidence.

LOCAL / STDIO

The working prototype runs in local software simulation. This website hosts documentation and a concept of the planned service. It exposes no robot API or hosted MCP endpoint.

01 / CONNECT

Connect the local MCP bridge.

The MCP host starts a Python process over stdio. That process talks to an existing room API. Start with the onboarding tool profile to inspect access guidance, candidates and their documentation.

  1. Prepare the local service. From physical-ai-lab/, use Python 3.11+ and an existing environment where possible. Install the MCP extra with .venv/bin/python -m pip install -e '.[mcp]'. The getting-started guide covers service startup, native qualification and owner setup.
  2. Configure access privately. The owner creates a project and a scoped key in the local /console. Discovery needs read. Supply PAL_API_KEY using your MCP host's secret mechanism. Keep it out of prompts, source files and shared config.
  3. Add the stdio server. Replace the absolute path below. The loopback URL assumes the MCP process and API run on the same computer. A remote agent needs a separately secured, qualified connection to the API.
GENERIC MCP CLIENT CONFIG · ADAPT TO YOUR HOST
{
  "mcpServers": {
    "actuator-science": {
      "command": "/absolute/path/physical-ai-lab/.venv/bin/python",
      "args": ["-m", "physical_ai_lab.mcp_server"],
      "env": {
        "PAL_API_URL": "http://127.0.0.1:8000",
        "PAL_MCP_TOOL_PROFILE": "onboarding"
      }
    }
  }
}

Configure PAL_API_KEY separately on the MCP host. Without it, workshop_room_onboarding still returns packaged guidance; API tools return credential_required without making an API call. The default room profile has only the twelve booked-room tools, so select onboarding for discovery.

02 / DISCOVERY

Read before reserving.

Start with the customer's actual implementation and fixed experiment requirements. Ask the server for published candidates, then read each promising configuration's exact contract and documents. Follow pagination; the first page is not necessarily the complete catalogue.

Implemented onboarding MCP tools
ToolPurpose
workshop_room_onboardingKeyless access and selection guidance.
workshop_room_catalogPublished candidates, qualification, preview availability and prices. Parameters: project_id, limit, offset.
workshop_room_capabilitiesExact room_id + configuration_id under the project: channels, cameras, timing, state policy and gaps.
workshop_room_documentationVersion-matched guide by doc_id returned in the capabilities.
workshop_find_farm_capacityCheck the intended UTC window. Reading a candidate's preview window reserves nothing.
workshop_observe_room_bookingRead original images, interface and outcome from an existing booking.
workshop_export_room_bookingRetrieve original result/export references, including failures.

Supported documentation IDs are selection, so100, nexarm-pair, nexarm-continuous and python-policy. Use the schemas discovered from your running server; this table is a guide, not a replacement for them.

EXAMPLE REQUEST TO YOUR AGENT

“Inspect my policy's action units, camera inputs and timing. Compare published room configurations. Explain any adapter work or missing evidence. If none fits, stop and tell me why. Do not book or run yet.”

03 / COMPATIBILITY

Match the contract to the model.

A matching tensor shape or robot name is insufficient. Check embodiment and gripper meaning, named action channels and units, coordinate frames, camera mounts and calibration, inference/control timing, initial-state promises and the required outcome measurements.

Current local software-simulation paths
Configuration familyControl & observationsClient fit
SO100 pausedSix radian position-target channels. Physics pauses between actions. Camera sources depend on the published scene.Booked starter or generic paused ExecutionLoop with an explicit adapter.
Paired NexArm pausedTwelve radian target channels. Overview + left/right wrist RGB. Physics pauses between actions.Generic paused loop and explicit NexArm sensing/decoder integration.
Paired NexArm continuousTwelve channels at 20 Hz. One overview RGB source. Physics continues during inference.Existing RobotClient forecast/feedback runner; wrist views are absent.

These are simulation contracts, not physical equipment offers. Nominal camera targets are not delivered minimum-rate guarantees. A custom multiview model integration ran locally but missed its fixed 2 Hz source requirement. Qualification, experiment fit and slot availability are separate checks. “No compatible room” is a valid answer.

04 / AUTHORITY

Get approval for the bounded run.

A key or installed tool does not establish spending consent. Obtain any missing scoped access, a finite owner-approved limit and execution consent. The current prototype uses development-credit grants; monetary funding and a full USD approval journey remain planned.

After compatibility and model warmup: save the exact configuration, prepare its declared state, obtain a quote, check capacity, hold and confirm the finite booking. The existing tools include workshop_save_room_experiment, workshop_prepare_room_experiment, workshop_quote_room_experiment, workshop_hold_farm_capacity and workshop_confirm_farm_hold.

Read the confirmed booking's starter, limits and original observation before control. Preserve exact request bodies and idempotency keys for uncertain retries. Inspect applied commands, failures, stop evidence, final results and reconciled usage. Installing this integration grants no physical authority.

05 / PYTHON

Use the same discovery from code.

The standalone actuator-rooms-sdk development wheel exposes actuator_sdk. The current local version is 0.1.10; this is not a published PyPI release. Install the reviewed local wheel using the SDK source guide.

READ-ONLY DISCOVERY · NO BOOKING OR MOTION
import asyncio
import os
from actuator_sdk import RoomDirectory

async def inspect():
    async with RoomDirectory(
        os.environ["ACTUATOR_URL"],
        os.environ["PROJECT_ID"],
        os.environ["ACTUATOR_TOKEN"],
    ) as rooms:
        offset = 0
        while True:
            page = await rooms.catalog(limit=25, offset=offset)
            for candidate in page["candidates"]:
                details = await rooms.capabilities(
                    candidate["room_id"],
                    candidate["configuration_id"],
                )
                print(details)
                for doc_id in details["document_ids"]:
                    print(await rooms.documentation(doc_id))
            if not page["pagination"]["has_more"]:
                break
            offset += page["pagination"]["limit"]

asyncio.run(inspect())

ObservationClient reads original named RGB cameras independently of arm control. Device adapters declare hardware-specific channels, units and limits. Customer policies supply preprocessing, inference and decoding. The generic paused loop and the NexArm-specific continuous runner have different contracts; neither is a universal model adapter.

06 / EXECUTION LOCATION

Remote decisions or on-site compute.

PLANNED PHYSICAL PATH

Your compute

Your agent or model sends bounded movements over the internet. Local drivers/controllers enforce limits. Network latency constrains the control loop; WAN timing and physical stops need qualification.

PLANNED PHYSICAL PATH

On-site workstation

Load a customer-owned model into a rented, isolated CPU/GPU runtime near the robot. A remote supervisor observes events/callbacks and live media through independent channels, then receives the original results.

The on-site option requires an all-in room/workstation/staging quote, finite runtime and separate admission. No model upload, hosted GPU rental or physical control is available through this website. The existing local software-simulation paths above can be developed and tested now.

07 / PRICING STATUS

Planning prices and actual quotes.

The website's single-arm examples use the owner's US$80/hour rate: six minutes is US$8. Optional US$5 preparation is another design example. Dual-arm US$70, dexterity US$115, humanoid US$225 and mobile US$105 per hour come from the saved Pro business-model research, dated 22 October 2026. They are unvalidated hypotheses, not approved commercial prices or measured willingness to pay.

The current local service separately previews US$20 per room-hour and settles development credits; it collects no money. The website estimator does not modify it. A real quote must pin the configuration, state, window, compute and all charges, then be compared with the owner's cap. Unknown compute costs cannot be treated as zero.

Compare planned rooms ↗ · Download planning JSON ↗

SOURCE GUIDES

Source documentation.

Download the current repository guides as Markdown. These source copies include their repository-relative cross-references; the web guide above provides the self-contained starting path.