# Expo — how to use (mcp.ai)

Your Expo and EAS project in natural language: up to date SDK docs, cloud builds (status, logs, trigger and cancel), EAS CI workflows, store submission and TestFlight data (crashes and feedback). Connect your Expo account in one click, no key or token.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_expo?ms=1788880620000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `expo_add_library`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/expo`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/expo/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/expo/add/library` — Add an Expo library to the project using expo install and attach usage instructions when available
  - body: { projectRoot: string, libraryName: string }
- `POST https://api.mcp.ai/api/expo/build/cancel` — Cancels an EAS build that is queued or in progress. Use build_info to check the current status first.
  - body: { buildId: string }
- `POST https://api.mcp.ai/api/expo/build/info` — Fetches the status and detailed information about a specific EAS build by ID. Use this to check build status, errors, artifacts, and other details.
  - body: { buildId: string }
- `POST https://api.mcp.ai/api/expo/build/list` — Lists EAS builds for a project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app"). Use this to see recent builds, their status, and available artifacts.
  - body: { appId?: string, appFullName?: string, platform?: string, status?: string, limit?: number }
- `POST https://api.mcp.ai/api/expo/build/logs` — Fetches the logs for a specific EAS build. The build must be completed (finished or errored) to have logs available.
  - body: { buildId: string }
- `POST https://api.mcp.ai/api/expo/build/run` — Triggers a new EAS build using a build profile from eas.json. Requires a GitHub repository to be connected to the project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.
  - body: { appId?: string, appFullName?: string, platform: string, buildProfile: string, gitRef: string, baseDirectory?: string, autoSubmit?: boolean, submitProfile?: string }
- `POST https://api.mcp.ai/api/expo/build/submit` — Submits an EAS build to the app store (Google Play Store for Android, App Store for iOS). The build must be a finished build with the appropriate distribution type. Provide either appId (from app.json
  - body: { appId?: string, appFullName?: string, buildId: string, platform: string, track?: string, ascAppIdentifier?: string }
- `POST https://api.mcp.ai/api/expo/learn` — Learn Expo how-to for a specific topic and remember it for future conversations. Use this to teach the assistant about specific Expo features or workflows.
  - body: { topic: string }
- `POST https://api.mcp.ai/api/expo/read/documentation` — Fetch a single Expo documentation page and return its content as markdown. Returns up to ~5000 tokens per call. Use offset to paginate through long pages.
  - body: { url: string, offset?: integer }
- `POST https://api.mcp.ai/api/expo/search/documentation` — Search the official Expo documentation and return page URLs ranked by relevance for a user query. Use read_documentation to fetch the full content of specific pages, starting from the top.
  - body: { query: string }
- `POST https://api.mcp.ai/api/expo/testflight/crashes` — Fetch TestFlight crash data. Without crashId, lists recent crashes. With crashId, returns the full crash log with stack trace.
  - body: { bundleId: string, crashId?: string, limit?: number }
- `POST https://api.mcp.ai/api/expo/testflight/feedback` — Fetch screenshot feedback from TestFlight. Returns feedback metadata including device info, user comments, and screenshot URLs.
  - body: { bundleId: string, limit?: number }
- `POST https://api.mcp.ai/api/expo/workflow/cancel` — Cancels a running EAS workflow. Use workflow_info to get the workflow run ID.
  - body: { workflowRunId: string }
- `POST https://api.mcp.ai/api/expo/workflow/create` — Creates a new EAS workflow YAML file for Expo projects or fetches workflow syntax documentation. Use this when users want to create CI/CD workflows in .eas/workflows/ or need to learn EAS workflow syn
  - body: { action: string, projectRoot?: string, fileName?: string, workflowYaml?: string }
- `POST https://api.mcp.ai/api/expo/workflow/info` — Fetches detailed information about a specific EAS workflow run by ID. Use this to check the status, job results, errors, and artifacts of a workflow run. If workflow has multiple jobs, draw them in a 
  - body: { workflowRunId: string }
- `POST https://api.mcp.ai/api/expo/workflow/list` — Lists recent EAS workflow runs for a project. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app").
  - body: { appId?: string, appFullName?: string, status?: string, limit?: number }
- `POST https://api.mcp.ai/api/expo/workflow/logs` — Fetches logs for a specific job in an EAS workflow run. Call without sectionIndex or phase to get a summary of log sections (phase names and line ranges); then call again with sectionIndex or phase to
  - body: { workflowRunId: string, jobKey: string, sectionIndex?: integer, phase?: string }
- `POST https://api.mcp.ai/api/expo/workflow/run` — Triggers an EAS workflow run from a git reference. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner/my-app"). The workflow file must exist at the specified git 
  - body: { appId?: string, appFullName?: string, fileName: string, gitRef: string }
- `POST https://api.mcp.ai/api/expo/workflow/validate` — Validates EAS workflow YAML syntax and configuration. Use this after creating a workflow to ensure it is valid. Provide either appId (from app.json "extra.eas.projectId") OR appFullName (e.g., "@owner
  - body: { appId?: string, appFullName?: string, workflowYaml: string }

## Example prompts
- "What's the status of my latest EAS build?"
- "Show me the logs of the build that failed"
- "List the recent TestFlight crashes for my app"

## More
- Page: https://mcp.ai/expo
- Agent spec (llms.txt): https://mcp.ai/expo/llms.txt
- Postman collection: https://mcp.ai/expo/postman.json
