xc-mcp
Version:
MCP server that wraps Xcode command-line tools for iOS/macOS development workflows
28 lines • 5.68 kB
TypeScript
/**
* Manage privacy permissions for apps on simulators
*
* Examples:
* - Grant permission: udid: "device-123", bundleId: "com.example.MyApp", action: "grant", service: "camera"
* - Revoke permission: udid: "device-123", bundleId: "com.example.MyApp", action: "revoke", service: "microphone"
* - Reset all: udid: "device-123", bundleId: "com.example.MyApp", action: "reset", service: "all"
* - With audit trail: udid: "device-123", bundleId: "com.example.MyApp", action: "grant", service: "location", scenario: "LocationTest", step: 1
*
* Supported services:
* - camera, microphone, location, contacts, photos, calendar
* - health, reminders, motion, keyboard, mediaLibrary, calls, siri
*
* LLM Optimization:
* Include scenario and step for structured permission audit trail tracking. Enables agents to track
* permission changes across test scenarios and verify state at each step.
*
* **Full documentation:** See simctl/privacy.md for detailed parameters and examples
*/
export declare function simctlPrivacyTool(args: any): Promise<{
content: {
type: "text";
text: string;
}[];
isError: boolean;
}>;
export declare const SIMCTL_PRIVACY_DOCS = "\n# simctl-privacy\n\nManage app privacy permissions on simulators with structured audit trail support.\n\n## What it does\n\nGrants, revokes, or resets privacy permissions for apps without requiring user interaction.\nSupports audit trail tracking for test scenario documentation and verification.\n\n## Parameters\n\n- **udid** (string, required): Simulator UDID (from simctl-list)\n- **bundleId** (string, required): App bundle ID (e.g., com.example.MyApp)\n- **action** (string, required): \"grant\", \"revoke\", or \"reset\"\n- **service** (string, required): Permission service to modify\n- **scenario** (string, optional): Test scenario name for audit trail\n- **step** (number, optional): Step number in test scenario\n\n## Supported Services\n\n- camera, microphone, location, contacts, photos\n- calendar, health, reminders, motion, keyboard\n- mediaLibrary, calls, siri, all (for reset)\n\n## LLM Optimization\n\nThe **scenario** and **step** parameters enable structured permission audit trail tracking.\nThis allows AI agents to track permission state changes across test scenarios and verify\npermissions at each step of a test workflow.\n\n## Returns\n\nJSON response with:\n- Permission modification status\n- Audit entry with timestamp and test context\n- Guidance for verification and next steps\n\n## Examples\n\n### Grant camera permission\n```typescript\nawait simctlPrivacyTool({\n udid: 'device-123',\n bundleId: 'com.example.MyApp',\n action: 'grant',\n service: 'camera'\n})\n```\n\n### Revoke microphone permission\n```typescript\nawait simctlPrivacyTool({\n udid: 'device-123',\n bundleId: 'com.example.MyApp',\n action: 'revoke',\n service: 'microphone'\n})\n```\n\n### Reset all permissions\n```typescript\nawait simctlPrivacyTool({\n udid: 'device-123',\n bundleId: 'com.example.MyApp',\n action: 'reset',\n service: 'all'\n})\n```\n\n### Grant with audit trail tracking\n```typescript\nawait simctlPrivacyTool({\n udid: 'device-123',\n bundleId: 'com.example.MyApp',\n action: 'grant',\n service: 'location',\n scenario: 'LocationTest',\n step: 1\n})\n```\n\n## Common Use Cases\n\n1. **Permission testing**: Verify app behavior with different permission states\n2. **Onboarding flows**: Test permission request flows without manual interaction\n3. **Denied permission handling**: Test app behavior when permissions are denied\n4. **Permission combinations**: Test apps with various permission combinations\n5. **Audit trail**: Track permission changes across automated test scenarios\n\n## Important Notes\n\n- **No user prompts**: Permissions are changed without showing system alerts\n- **Immediate effect**: Changes take effect immediately for running apps\n- **App restart**: Some permissions may require app restart to take effect\n- **Reset behavior**: \"reset\" with \"all\" service clears all permissions\n- **Audit trail**: scenario/step parameters create structured test documentation\n\n## Error Handling\n\n- **App not installed**: Error if app is not installed on simulator\n- **Invalid service**: Error if service name is not recognized\n- **Invalid action**: Error if action is not \"grant\", \"revoke\", or \"reset\"\n- **Invalid bundle ID**: Validates bundle ID format (must contain '.')\n\n## Testing Workflow\n\n1. **Reset permissions**: Start with clean slate\n2. **Grant permission**: `simctl-privacy <udid> <bundleId> grant camera scenario:\"CameraTest\" step:1`\n3. **Launch app**: `simctl-launch <udid> <bundleId>`\n4. **Test feature**: Use camera feature in app\n5. **Take screenshot**: `simctl-io <udid> screenshot` to verify UI\n6. **Revoke permission**: Test denied permission handling\n7. **Verify behavior**: Screenshot and check error handling\n\n## Permission Testing Strategies\n\n- **Happy path**: Grant all permissions, test full functionality\n- **Denial path**: Deny permissions, verify error handling\n- **Mixed state**: Some granted, some denied, test partial functionality\n- **Reset testing**: Test permission request flows from clean state\n- **Background permissions**: Test location \"always\" vs \"when in use\"\n\n## Audit Trail Usage\n\nThe auditEntry in the response includes:\n- timestamp: When permission was changed\n- action, service, bundleId: What was changed\n- success: Whether change succeeded\n- testContext: scenario and step for test tracking\n\nThis enables agents to maintain a complete history of permission changes during testing.\n";
//# sourceMappingURL=privacy.d.ts.map