From signing up to your agent looking at a phone, in five steps.
Sign up and get a phone
Start a free trial in the console, or top up your balance by card. Then, on the Phones page, pick a model and allocate a phone. It is paid for from your balance, 30 days at once or by the minute while it runs, and the balance has to cover it before you can add one. You can also allocate over the API; see Phones.
Create an API key
In the console, go to Developers → API keys, name the key and pick its scopes. A key is shown once, so put it in your secret manager or an environment variable straight away.
bashexport DISTILLED_KEY="dk_live_..."
Check that it works
GET /v1/meaccepts any valid key and tells you which workspace it belongs to and what it may do.terminalcurl https://api.distilled.cx/v1/me \ -H "Authorization: Bearer $DISTILLED_KEY"
200 OK{ "workspace": { "id": "acme", "name": "Acme" }, "key": { "id": "k7m2p4x5q3r6t2w5", "name": "agent", "scopes": [ "phones:read", "phones:write", "control:write", "runs:read", "runs:write", "skills:read", "skills:write", "billing:read", "billing:write" ] } }Connect your agent
Add the server to your MCP client's configuration. Where that lives and its exact format depend on the client, but most take an entry like this one: the URL, and your key as a bearer token.
mcp.json{ "mcpServers": { "distilled": { "type": "http", "url": "https://mcp.distilled.cx/mcp", "headers": { "Authorization": "Bearer dk_live_..." } } } }Look at a phone
List your phones with
GET /v1/phones, then ask one for a screenshot. Your agent can do the same with thescreenshottool.terminalcurl https://api.distilled.cx/v1/phones/phone-1/observe \ -H "Authorization: Bearer $DISTILLED_KEY" \ -H "Content-Type: application/json" \ -d '{ "screenshot": { "maxEdge": 960 } }'