Skip to content
SilanDocs
Main site

Features

API: REST, MCP and WebDriver

Silan’s engine listens on this Mac only, at 127.0.0.1 and ::1, and offers three surfaces that share one set of keys and one approval flow. REST at http://127.0.0.1:47800/v1 is for scripts and pipelines. MCP at /mcp, or silan mcp over stdio, is for AI apps. WebDriver at /wd/hub is an Appium-style WebDriver endpoint for test tools that already speak that protocol, not a full Appium server. Every tool and route is listed under MCP reference and REST reference.

Keys. Every call carries Authorization: Bearer silan_sk_.... No key, a wrong key or a revoked key gets 401. A call with a web page’s Origin header or from another host gets 403. GET /wd/hub/status needs no key. The port and the Mac’s own local key sit in engine.json in Silan’s support folder, and the silan command reads them from there. A key’s actions show in Activity as an agent named Local key (this Mac).

Profiles. silan mcp --profile core serves 16 tools for using devices: list, claim and release, observe, tap, long press, swipe, type, keys, buttons, launch, open a link, wait, ask the person to sign in, fill a credential. testing adds 11 more for test work, 27 in all: recordings, checks, notifications, a test push, install, location, clipboard, rotate and text size. full serves every tool the current release has, 45. The five flow tools in the spec (validate_scenario, run_scenario, list_runs, get_run, get_report) are not served on the current release: the engine answers that the scenario engine is not available, so run flows from the app for now. The counts come from the server’s own tool list on 4 Nov 2026.

Approvals. When a call would pay, send, post or delete, REST answers 202 with the approval in the body, MCP answers APPROVAL_REQUIRED, and WebDriver answers 500. Poll the approval, then repeat the call. See safety and approvals.

Errors. Every error is RFC 9457 application/problem+json with a stable code such as DEVICE_LEASED or STALE_ELEMENT, and delivery says whether anything reached the phone.

Header or field What it does
Prefer: respond-async The call returns 202 with a job. Poll the job for the result.
409 DEVICE_LEASED Another caller holds the device. The Silan-Lease header names the lease.
delivery notSent, maybeSent, sent or checked on every action.

Recordings. start_recording and stop_recording make an mp4 of the device’s screen with secrets masked. A recording stops on its own at its maximum length, when the device is released, when the session ends or when the engine stops.

  1. Open Connections › For developers and make a key. See connections.
  2. List your devices:
Terminal window
curl -H "Authorization: Bearer silan_sk_..." http://127.0.0.1:47800/v1/devices
  1. Launch an app and read the picture:
Terminal window
curl -X POST -H "Authorization: Bearer silan_sk_..." -H "Content-Type: application/json" \
-d '{"action":{"type":"launchApp","app":"Settings"}}' \
http://127.0.0.1:47800/v1/devices/ios:XXXX/actions
curl -H "Authorization: Bearer silan_sk_..." http://127.0.0.1:47800/v1/devices/ios:XXXX/screenshot -o screen.png
  1. For an AI app, point it at silan mcp --profile core over stdio, or at http://127.0.0.1:47800/mcp with the key. See use Silan from your agent.
  2. For a WebDriver client, open a session at /wd/hub/session with silan:deviceId in the capabilities.

The command line covers the same ground for a shell, see command line.

  • The engine answers on this Mac only. Remote access is coming soon.
  • The Python library in the repository is not published yet. Coming soon.
  • Stop Everything, Resume, safety settings, removing a phone and other person-only calls answer FORBIDDEN to every key.
  • WebDriver supports the actions Silan has. It is not a full Appium server.
The For developers fold on the Connections page: New key, and the MCP, REST and WebDriver addresses with a Copy button each.
The For developers fold on the Connections page: New key, and the MCP, REST and WebDriver addresses with a Copy button each.