Skip to content

Resources

โœ… Implemented ๐Ÿงช Tested

Current state: All resources listed here are implemented. See the Status Glossary for chip definitions.

AutoMobile exposes resources through the Model Context Protocol for AI agents to access.

MCP Resources provide read-only access to:

  • Navigation graph data
  • Test execution history
  • Performance metrics
  • Device information

Available Resources

This page documents the primary resources. It is not an exhaustive list of every registered resource โ€” the server also registers observation, device images, test runs, video recording, device snapshots, databases, failures, storage, app files, feature flags, and network resources (see the register*Resources() calls in src/server/index.ts).

URI: automobile:navigation/graph

Returns the current navigation graph showing:

  • Known screens and their IDs
  • Screen transitions and triggers
  • UI elements that cause navigation

See Navigation Graph for details.

URI: automobile:navigation/apps

Lists the apps that have a persisted navigation graph, so an agent (or the desktop’s offline app picker) can choose an app to browse. This resource is device-independent โ€” it reads persisted data only and requires no connected device. An app appears only when it has at least one recorded screen; an empty database returns an empty list rather than an error.

Each entry provides:

  • appId โ€” the application package id (e.g. com.example.app)
  • displayName โ€” human-readable name when known; currently always null because the persisted schema has no display-name column
  • lastUpdated โ€” ISO-8601 timestamp of the app record’s updated_at

Entries are ordered newest-first by the app record’s updated_at.

Response shape:

{
  "apps": [
    {
      "appId": "com.example.app",
      "displayName": null,
      "lastUpdated": "2026-01-02T00:00:00.000Z"
    }
  ]
}

lastUpdated caveat: this field reflects the app record’s navigation_apps.updated_at, which is bumped on the main navigation-recording paths but not by every graph mutation (e.g. promoteSuggestion, updateNodeScreenshot, recordBackStack). It can therefore lag those changes, and the updated_at ordering can too โ€” do not treat it as the exact time of the most recent graph mutation. Tracked by #4931.

Booted Devices

URI: automobile:devices/booted

Returns booted device inventory across Android and iOS, including:

  • Total, per-platform, virtual, and physical device counts
  • Optional daemon pool status (idle/assigned/error) when the daemon is active
  • Per-device pool assignment (status + session UUID) when available

URI Template: automobile:devices/booted/{platform}

This resource supersedes the device data that the listDevices tool used to return. listDevices still exists as an MCP tool, but now returns resource guidance โ€” a message pointing callers at these resource URIs โ€” rather than device data (see listDevicesHandler in src/server/deviceTools.ts). The separate daemon_available_devices tool was removed.

Installed Apps

URI: automobile:apps

Returns installed apps for booted devices. deviceId is required. Supports query parameters for filtering:

  • platform (android or ios)
  • search (case-insensitive partial match on package name or display name when available)
  • type (user or system)
  • profile (Android user ID, e.g. 0 or 10)
  • deviceId (booted device ID, required)

Example URIs:

  • automobile:apps?deviceId=emulator-5554&platform=android&search=slack&type=user
  • automobile:apps?deviceId=YOUR_IOS_DEVICE_ID&platform=ios&search=calendar

Clients can subscribe to specific automobile:apps?deviceId=... URIs for change notifications and re-read filtered URIs after updates.

App Container Files

URI Template: automobile:devices/{deviceId}/apps/{appId}/files/{container}

Lists files in a logical app container without requiring callers to know Android or iOS container paths. Supported logical containers are:

  • documents
  • library
  • cache
  • tmp
  • externalFiles where the platform supports it

List responses include each entry’s relative path, name, resourceUri, isDirectory marker, byte size for files when available, and lastModified timestamp when the platform can report one. Host absolute app-container paths are intentionally omitted.

Example list request:

{
  "method": "resources/read",
  "params": {
    "uri": "automobile:devices/emulator-5554/apps/com.example.app/files/documents"
  }
}

URI Template: automobile:devices/{deviceId}/apps/{appId}/files/{container}/{path}

Reads a single file from an app container. Nested paths and filenames containing spaces are encoded as URI path segments. Binary content is returned as an MCP blob so it can be round-tripped losslessly. UTF-8 text files are returned as text with text/plain; charset=utf-8 so clients do not need Android or iOS specific decoding logic.

iOS simulator examples:

  • automobile:devices/AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE/apps/com.example.app/files/documents/fixtures/welcome.png
  • automobile:devices/AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE/apps/com.example.app/files/cache/responses/home.json
  • automobile:devices/AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE/apps/com.example.app/files/tmp/session/output.bin

Example read request:

{
  "method": "resources/read",
  "params": {
    "uri": "automobile:devices/emulator-5554/apps/com.example.app/files/documents/fixtures/welcome%20image.png"
  }
}

Test Timing History

URI: automobile:test-timings

Returns historical test execution data:

  • Test class and method names
  • Average execution duration
  • Success/failure rates
  • Device information
  • Supports query parameters for filtering and sorting (e.g., lookbackDays, limit, minSamples, orderBy, sessionUuid).

See Daemon for test timing aggregation.

Performance Results

URI: automobile:performance-results

Returns recent UI performance audit results:

  • Scroll framerate measurements
  • Frame drop counts
  • Render time statistics

Localization Settings

URI: automobile:devices/{deviceId}/localization

Returns current localization settings for a device:

  • Locale tag
  • Time zone
  • Text direction
  • Time format
  • Calendar system

Using Resources

AI agents can request resources via MCP:

{
  "method": "resources/read",
  "params": {
    "uri": "automobile:navigation/graph"
  }
}

The agent receives structured data that it can analyze and use to inform decisions.

Implementation

See MCP Server for technical implementation details of resource providers.