Create a channel
Bind a CONVERSATIONAL agent to a transport. An ACTIVE channel must have an agent. audience (MSP | END_USER) declares the surface’s trust domain and must match the bound agent’s audience — an END_USER channel may only bind a user-facing agent, and an MSP (internal) channel only an internal agent. audience is fixed for the channel’s whole life; pick it carefully. internal_name must be unique among your live channels (compared trimmed and case-insensitively). Omitting show_agent_progress_steps takes the audience default — the live “working…” card is off on an END_USER channel and on for MSP; send it explicitly to override, and it stays editable afterwards. idle_reset_minutes sets how long a Teams conversation may sit idle before the bot offers the user a “Start fresh / Continue” card; omit it to keep only the built-in behaviour, which offers the same card on conversations that have grown large enough to be slow to resume.
Authorizations
Authorization: Bearer <token> where <token> is either a neo_sk_<env>_<secret> API key (service account) or a Microsoft Entra ID access token (dashboard user).
Body
Trust domain a tool / agent / channel may be exposed to.
MSP — technician/dashboard surfaces; tools may take MSP-wide scope and accept company/
contact identifiers as LLM-supplied parameters. An agent/channel with this audience is the
MSP's own INTERNAL surface (the dashboard labels MSP as "Internal").
END_USER — the MSP's end-client users (white-label Teams bots, embedded end-company chat).
END_USER tools must derive ALL identity (end-company, contact) from the session context,
never from tool parameters, so a prompt-injected or curious end user cannot widen scope.
The two surfaces are disjoint by construction: resolve_end_user_toolbox resolves only
END_USER tools (deny-by-default, no auto-injection), and resolve_full_toolbox is for
MSP surfaces only.
MSP, END_USER Transport a channel binds an agent to. TEAMS is the only M2 transport; the rest are reserved.
TEAMS, SLACK, PORTAL, EMAIL Who a technician's PSA note is attributed to when it is relayed into an end user's chat: TECHNICIAN (the note's real author, shown with their name and an avatar, falling back to the channel's relay_prefix label when the PSA supplies no author), BRAND (always the relay_prefix label and the channel's own icon, never an individual's name), or OFF (the note is relayed as plain text with no attribution). Omit it to derive the mode from relay_prefix.
TECHNICIAN, BRAND, OFF ACTIVE, DISCONNECTED 