<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>What a call carries on Ulai Docs</title><link>https://docs.ulai.co.in/docs/agent-server/concepts/</link><description>Recent content in What a call carries on Ulai Docs</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.ulai.co.in/docs/agent-server/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>The agent profile</title><link>https://docs.ulai.co.in/docs/agent-server/concepts/agent-profile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.ulai.co.in/docs/agent-server/concepts/agent-profile/</guid><description>&lt;p&gt;Almost nothing about a conversation is configured on the agent server. The&#10;prompt, the voice, the GCP project, the service-account key, which behaviours&#10;are on — all of it arrives with each call, in something called the &lt;strong&gt;agent&#10;profile&lt;/strong&gt;, sent by the agent client.&lt;/p&gt;&#10;&lt;p&gt;This matters to you as an operator for three reasons.&lt;/p&gt;&#10;&lt;h2 id="1-it-explains-the-short-environment-list"&gt;1. It explains the short environment list&lt;a class="td-heading-self-link" href="#1-it-explains-the-short-environment-list" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;You are not missing settings. There is no &lt;code&gt;PROMPT&lt;/code&gt;, no &lt;code&gt;VOICE&lt;/code&gt;, no&#10;&lt;code&gt;GEMINI_MODEL&lt;/code&gt; to set here, because those are properties of an &lt;em&gt;agent&lt;/em&gt;, not of&#10;a &lt;em&gt;host&lt;/em&gt;. One agent server runs many different agents at once, each with its&#10;own.&lt;/p&gt;</description></item><item><title>Tools</title><link>https://docs.ulai.co.in/docs/agent-server/concepts/tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.ulai.co.in/docs/agent-server/concepts/tools/</guid><description>&lt;p&gt;An agent can do more than talk. Mid-call it can look up a balance, an order&#10;status, an appointment slot — anything the business it belongs to can answer.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;None of that work happens on this host.&lt;/strong&gt; The agent server has no database&#10;and no idea what any of those tools mean. It carries the request out to the&#10;agent client and carries the answer back.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;model asks for &amp;#34;check_balance&amp;#34;&#10; │&#10; ▼&#10; agent server ──▶ agent client ──▶ the business&amp;#39;s own system&#10; ◀──────────── answer ◀───────────────┘&#10; │&#10; ▼&#10;model continues the conversation&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="what-this-means-operationally"&gt;What this means operationally&lt;a class="td-heading-self-link" href="#what-this-means-operationally" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Tools are configured on the agent, not here.&lt;/strong&gt; There is nothing to install,&#10;declare or permit on this host to make a tool available.&lt;/p&gt;</description></item><item><title>The shape of a call</title><link>https://docs.ulai.co.in/docs/agent-server/concepts/call-lifecycle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.ulai.co.in/docs/agent-server/concepts/call-lifecycle/</guid><description>&lt;h2 id="joining"&gt;Joining&lt;a class="td-heading-self-link" href="#joining" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The room exists first. Whoever created it is the only party that knows which&#10;room the other participants are in, so the agent server never creates one — it&#10;is told which to join.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;client ──JoinBridge──▶ server ──join──▶ control plane&#10; │&#10; ├──▶ SFU room (WebSocket, Opus)&#10; └──▶ AI backend (the placement on the profile)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;JoinBridge&lt;/code&gt; returns once the agent has a seat. The backend handshake&#10;continues after that.&lt;/p&gt;</description></item></channel></rss>