getPermissions
Lists Android permissions, iOS Info.plist keys, and runtime grants required by selected smart-glasses capabilities, then returns a summary framed for either platform.
Instructions
Derive the Android permissions, iOS Info.plist keys, Meta DAT scopes, AND the runtime grants a list of SDK capabilities requires. Returns { android, ios, metaDat, runtimeGrants, summary }. runtimeGrants is the half that is not a manifest entry — the OS grants nothing until the app ASKS at runtime, and applying every returned plist key still ships a mute app if you skip it. Each entry says who asks (requestedBy: app | sdk), the exact call when it is yours, and what silence looks like when nobody does. On iOS the microphone is the app's job and its absence is invisible: no prompt, no error, no transcripts, every voice command dead on hardware while working perfectly in the simulator — ALWAYS all three platform blocks regardless of the platform argument (which only frames the one-line summary; it does NOT filter the response). android = { permissions[], manifestEntries[] (ready-to-paste lines), foregroundService: { required, types[], declaration, devInstructions }, notificationListener: { required, declaration, devInstructions }, minimumSdk, compileSdk, targetSdk }. ios = { plistKeys: [{ key, value, reason }] }. metaDat = { scopes[], registrationRequired, registrationSteps[] }. Capabilities that need no platform permission (e.g. speak, connection_state, earcon) contribute nothing and are accepted silently — they never error. USE after deciding which features (capture_photo, transcription_incremental, voice_command, …) the app integrates. DON'T USE for capability discovery (use getPlatformInfo).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Selects how the one-line `summary` is phrased (Android vs iOS framing). Required — but does NOT filter the response: the android, ios, and metaDat blocks are all returned either way. | |
| capabilities | Yes | Capability names from getPlatformInfo.features[].name. e.g. ['capture_photo', 'transcription_incremental', 'voice_command']. |