manifest.json and two icons. All six bridges use the same
package - it describes the bot identity, not the agent behind it.
Download it from StandIn (recommended)
Download your Teams app package
Your StandIn dashboard generates a per-identity app package with your
botId and valid
domains already filled in. Open your identity and click Download Teams app package (.zip)
(served by /api/identities/:id/manifest), then continue to
Upload to Teams.The generated package contains no secrets - a Teams manifest is public metadata (IDs, names,
icons). Anyone who obtains it can still only reach the bot your tenant consented to.
Example manifest
The example uses obvious placeholders - do not publish with these values.manifest.json
supportsCalling: true (required for voice) and supportsVideo: true
(required for the CVI avatar tile). The resourceSpecific block is per-team consent (RSC) -
granted when the app is installed in a team; it does not replace the tenant-wide
Graph permissions.
Official reference: Teams app manifest schema.
Placeholders
Generate GUIDs with
uuidgen (macOS/Linux), [guid]::NewGuid() (PowerShell), or
uuidgenerator.net.
Icons
The package needs a color icon (192×192 px,color.png) and an outline icon (32×32 px,
transparent, outline.png). In the Developer Portal they upload
under Branding; in a manual zip they sit next to the manifest.