---
name: rageshake
description: Set up shake-to-report bug reporting (rageshake / RageShake) in an iOS app. Use when the user wants in-app feedback, "shake to report", crash/bug reporting, or to route iOS bug reports to Linear or a webhook. Provisions a rageshake project, pulls an ingest key, adds the RageShake Swift package, and wires RageShake.configure(apiKey:).
---

# rageshake — shake-to-report for iOS

Set an iOS app up to send shake-to-report bug reports (screenshot + message +
device metadata) to rageshake.dev, routed to Linear or a webhook. You drive the
whole thing through the hosted **rageshake MCP server**.

## Prerequisites

The rageshake MCP server must be connected with the user's **account key**
(`rs_mgmt_…`, created on the rageshake dashboard):

```
claude mcp add rageshake --transport http https://rageshake.dev/api/mcp \
  --header "Authorization: Bearer <ACCOUNT_KEY>"
```

If the `rageshake` MCP tools are not available, ask the user to add the server
with their account key (from https://rageshake.dev/dashboard) and stop.

## Steps

1. **Create the project.** Call `bootstrap_project({ name: "<app name>" })` — it
   creates the project, mints an ingest key (returned once), and can wire a
   destination in the same call. If the user named a destination, pass it:
   - Linear: `destination: { type: "linear", linear: { apiKey, teamId, labelName? } }`
   - Webhook: `destination: { type: "webhook", webhook: { url } }` (a signing
     secret is generated and returned once).

   Already have a project? Use `create_ingest_key({ projectId })` to pull a token,
   and `configure_destination(...)` to add routing.

2. **Add the Swift package.** Add the RageShake SPM dependency to the app
   (Xcode → Add Packages, or `Package.swift`):

   ```swift
   .package(url: "https://github.com/patrickshuff/rageshake-ios", from: "1.0.0")
   ```

   and add `"RageShake"` to the app target's dependencies.

3. **Configure the SDK.** In the app's startup (e.g. `App.init` or
   `application(_:didFinishLaunchingWithOptions:)`), add the one-liner using the
   ingest key from step 1 (it starts with `rs_ing_`):

   ```swift
   import RageShake

   RageShake.configure(apiKey: "rs_ing_…")
   ```

   That's it — shaking the device now raises the feedback sheet and submits the
   report.

4. **Verify.** Have the user run the app in the simulator, shake (Device → Shake
   Gesture), and submit. Then call `list_reports({ projectId })` to confirm the
   report arrived, and `test_destination({ projectId, destinationId })` to
   confirm routing works end to end.

## Useful MCP tools

- `bootstrap_project`, `create_project`, `list_projects`, `get_project`
- `create_ingest_key` (pull a token), `list_api_keys`, `revoke_api_key`
- `configure_destination`, `list_destinations`, `test_destination`
- `list_reports`, `get_report`

Full reference: https://rageshake.dev/docs/mcp
