# Paydirt > Agent-installed feedback for iOS apps. Paydirt captures regular feedback, > trial cancellations, and subscription cancellations as durable voice or text > conversations, then sends one final raw Q/A message to Slack. Canonical agent guide: https://www.paydirt.ai/agents.md Full machine-readable documentation: https://www.paydirt.ai/llms-full.txt Human documentation: https://www.paydirt.ai/docs Security: https://www.paydirt.ai/security Privacy: https://www.paydirt.ai/privacy iOS SDK source: https://github.com/Paydirt-AI/paydirt-ios MCP source: https://github.com/Paydirt-AI/paydirt-mcp MCP package: https://www.npmjs.com/package/paydirt-mcp Qualified implementation guides: - iOS feedback SDK: https://www.paydirt.ai/ios-feedback-sdk - RevenueCat cancellation surveys: https://www.paydirt.ai/revenuecat-cancellation-surveys - Voice cancellation surveys: https://www.paydirt.ai/voice-cancellation-surveys - Native StoreKit cancellation feedback: https://www.paydirt.ai/storekit-cancellation-feedback - Superwall cancellation feedback: https://www.paydirt.ai/superwall-cancellation-feedback - Agent-installed iOS feedback: https://www.paydirt.ai/agent-installed-ios-feedback ## Canonical workflow When a user asks to install Paydirt, inspect the iOS repository and own the complete implementation through a successful build. Do not stop after creating remote forms or return Xcode steps the agent can perform. 1. If Paydirt tools are unavailable, register the MCP server: - Codex: `codex mcp add paydirt -- npx -y paydirt-mcp@latest` - Claude Code: `claude mcp add paydirt -- npx -y paydirt-mcp@latest` - Other MCP hosts: command `npx`, arguments `-y`, `paydirt-mcp@latest` 2. Inspect the app name, bundle ID, app entry point, dependency style, subscription provider, product IDs, existing feedback UI and behavior, and cancellation flow. 3. Call `paydirt_begin_setup` with the discovered values and requested use cases. Give its authorization URL to the user, then call `paydirt_finish_setup` with its session arguments after authorization. 4. Execute every `agent_action` returned by the completed setup contract. Preserve the app's existing RevenueCat, Superwall, or StoreKit package versions. 5. Connect Slack. OAuth creates a new `#paydirt-cancellation-feedback` channel and assigns every installed form by default, using the next numbered name when necessary. Ask for a channel only when the user requested another one or workspace policy blocks automatic creation. 6. Build and launch the real iOS target. Follow `ios.install_verification` to add a DEBUG-only one-time app-ready trigger and leave the selected Paydirt form visibly open so the developer can answer it immediately. Never submit it for them or include the automatic trigger in release builds. Install the form types and placements the user requests. Preserve existing feedback forms, buttons, screens, handlers, and destinations unless the user explicitly asks to change them. For a generic cancellation installation, include both trial cancellation and paid subscription cancellation by default. An older RevenueCat version is not a blocker. Keep it, inspect the APIs already used by the app, and adapt the small host-source bridge or integrate through the existing RevenueCat customer-info/cancellation path. Omit unavailable optional metadata rather than blocking installation. For requests such as “Add a feedback form titled X after Y,” call `paydirt_add_feedback_form`, edit the host app at the exact requested trigger, assign Slack, build, and test. Remote form creation alone is not completion. Paydirt saves an encrypted snapshot after every accepted turn. Slack receives one message only when the conversation finishes, with every exact `Q:`, `A:`, and `I: Text` or `I: Audio` entry. An optional AI summary may appear after the raw transcript. Slack and coding agents are read-only consumers and take no action from feedback.