Skip to main content
There are two ways to connect an agent to Microsoft Teams. They differ in who owns the Teams bot, and that single difference decides how much Azure work you do. Both modes connect your own agent. StandIn is the bridge, never the brain: the AI that talks is the OpenClaw or Hermes agent you run.

StandIn Managed Bot

StandIn publishes and operates one Teams bot; your Microsoft organization is routed to your agent by a connection you create in the StandIn portal.
  1. In Teams, add StandIn from the Store.
  2. Type signin to the bot and sign in with your StandIn account. That link is how StandIn learns which Microsoft organization to connect - you do not type a tenant id anywhere.
  3. In the StandIn portal, deploy an identity and choose Use the StandIn bot. Paste your agent’s address; the portal gives you back the secrets.
  4. A Microsoft 365 administrator approves calling once for the organization. Chat works before this; calling switches on when the approval lands.
You get one connection secret, covering both calls and chat - paste it once:
Advanced deployments can split the lanes with the per-lane overrides (calling_secret/messages_secret on Hermes, sharedSecret/messagesSecret on OpenClaw) - when set, they win over secret.
One agent instance serves one connection. The secrets belong to a single Microsoft organization - run a second instance for a second organization, and never share a secret across tenants.

Bring your own Azure bot

You register a Microsoft Entra app, create an Azure Bot resource, and upload your own Teams app package. The bot carries your name and lives entirely in your tenant. Follow Azure bot setup and App package. This is the right choice when identity custody matters more than setup time, or when you need the bot to be visibly yours.

Endpoints

StandIn dials your agent. Give the portal a bare host and it completes the canonical path for you; if your bridge serves a different path, paste the full URL and StandIn will respect it. Both StandIn-maintained bridges also still answer their previous paths, so an agent deployed before this naming keeps working.