← Capabilities

Synchronous MCP — the AI gets data, not callbacks

Every MCP tool call blocks until the real device replies. When it returns, the AI is holding the answer — a UI tree, a screenshot, a task result — ready to reason about, with no polling and no callback wiring.

What it is

OmniDebugLink exposes your app as a set of synchronous MCP tools. When the AI calls run_task, the request travels to the device, the handler runs inside your app, and the reply comes back as the tool's return value. Text results arrive as JSON; screenshots arrive as native image blocks the AI can see. One call in, one complete answer out.

How it works

Each request carries a unique requestId, and the device's reply must echo that same ID — this is how many concurrent AI calls stay matched to their own results instead of stepping on each other. Success is an explicit ok: true with a result payload; failure comes back as a structured error with a code like DEVICE_OFFLINE, TASK_FAILED, or TASK_TIMEOUT if the device does not answer in time. Either way the call resolves — it never hangs silently.

Because the device announces its capabilities when it connects, the AI can discover them live: list_devices shows what is online under your account, list_tasks shows what a given device can do, and run_task invokes one. Registering a new task in your app makes it callable immediately — no server-side changes.

One sign-in covers your whole fleet. The AI tool authenticates with your account — no token to copy — and every device under that account is addressable by name: each tool takes a device parameter, so a single MCP connection can drive your office phone, a colleague's tablet, and a simulator in the same session.

Connect in one line

claude mcp add --transport http odl \
  "https://api.omnidebuglink.dev/mcp"

A browser sign-in pops up on first use; after that, every call is a synchronous round trip to whichever device you name.

Works with all 7 official SDKs

The request-response protocol is built into every official client — Unity, Android, iOS / macOS / watchOS, Flutter, React Native, Godot, and Web (JavaScript). Free during the public beta.