Mobile test integrations: GitHub, Slack, webhooks, MCP and CLI

Semaloop integrates with GitHub (pull request checks and a build-push Action), Slack, webhooks, an MCP server and a CLI, so builds go in from your CI and results come out where your team already works.

What you get

  • GitHub Action to push builds, and pull request checks for the results
  • Slack channel summaries for each build, and direct messages for a single test
  • Signed webhooks, delivered by Svix, when a run succeeds, fails or errors
  • A remote MCP server so a coding agent can write tests, run them and read failures
  • A CLI and a three-call upload API to push builds from any CI system
  • A route into Jira, Linear or any tracker through a webhook or an agent

Which integration does what

Builds go in through TestFlight, the CLI, the GitHub Action or the upload API. Results come out through any of the others.

Semaloop integrations at a glance
You want toUseHow it works
Test every iOS buildTestFlightAgents join your group and pick up each build
Push a build from CICLI, GitHub Action or upload APIAn .app, .ipa or .apk is uploaded with an API key
See results on a pull requestGitHub checksReported when the build was pushed with the Action or CLI
Get a summary in chatSlackA channel summary per build, and DMs for one test
Trigger your own toolingWebhooksA signed test_run.status_changed.v1 event per finished run
Let a coding agent write and fixMCP serverCreate tests, trigger runs and pull video and logs
File failures in Jira or LinearWebhook or MCPNo native integration; both routes work today

GitHub pull request checks

Connect the repository in Settings, then add the build-push Action to a workflow with a Semaloop API key stored as a repository secret. The Action works out the repository, commit and ref for you. When builds arrive this way, the results of the tests run against them are reported on the pull request as checks.

Pull request checks are GitHub-only today, and they need builds pushed through the Action or the CLI. TestFlight builds are not tied to a commit. On other CI systems, push builds with the CLI and use a webhook to post results.

- uses: semaloop/cli/actions/build-push@v1
  with:
    path: build/YourApp.app
    api-key: ${{ secrets.SEMALOOP_API_KEY }}

Slack

A channel of your choice gets a summary whenever a full suite run completes on a new build, and the message updates in place if a result changes because a spec was edited. You can also subscribe to a single test and get its outcome as a direct message. Channel summaries are sent for automatic runs only.

Webhooks

Semaloop sends a signed webhook to your endpoint when a run reaches success, failure or error. The event is test_run.status_changed.v1, and its payload carries the app, test, build and run IDs, a link to the run and the failure or error reason. A transformation in the webhook portal can cancel everything that is not a failure.

{
  "type": "test_run.status_changed.v1",
  "data": {
    "previousStatus": "pending",
    "nextStatus": "failure",
    "testRunId": "a379af73-217d-464b-b4ee-266b63a1f48d",
    "url": "https://app.semaloop.com/app/uk_example_app/run/a379af73…",
    "failureReason": "Tapping 'Sign in' showed an error"
  }
}

MCP server and CLI

The MCP server runs at mcp.semaloop.com over Streamable HTTP with OAuth 2.1 sign-in, and CI or headless agents connect to the API-key endpoint instead. It can discover apps, builds and tests, create and update tests, trigger runs, pull root cause analysis, video and logs, track issues, and manage secrets and custom tools.

The CLI is in early access. It installs with Homebrew or as a downloaded binary, authenticates with an API key from Settings, and pushes builds with semaloop build push. Its git flags let results come back as pull request checks.

Jira, Linear and other trackers

There is no built-in Jira or Linear integration. Two routes work today: a webhook that opens a ticket when a run fails, or a coding agent connected to both the Semaloop MCP server and your tracker. The documentation has a worked guide for each.

Frequently asked questions

Last reviewed: 26 October 2026

Does Semaloop integrate with GitHub?

Yes. A GitHub Action pushes your builds to Semaloop, and when builds arrive that way from a connected repository, the test results are reported on the pull request as checks.

Does Semaloop send results to Slack?

Yes. A channel gets a summary when a full suite run completes on a new build, and you can subscribe to a single test to get its result as a direct message. Manual reruns do not post a channel summary.

Does Semaloop support webhooks?

Yes. Semaloop sends a signed test_run.status_changed.v1 webhook when a run succeeds, fails or errors, delivered by Svix, with a portal to inspect and replay deliveries.

Does Semaloop have an MCP server?

Yes. It runs at https://mcp.semaloop.com/mcp, with OAuth 2.1 sign-in, and at https://mcp.semaloop.com/mcp/key for CI with an API key.

Is there a Semaloop CLI?

Yes, in early access. semaloop build push sends an .app, .ipa or .apk to Semaloop from any CI system, and installs with Homebrew or as a binary from the releases page.

Does Semaloop integrate with Jira or Linear?

Not natively. Use a webhook to open a ticket when a run fails, or connect a coding agent to the Semaloop MCP server and your tracker's own server.

See it against your own app