The six actions
context and message are the two ways of telling the agent something. Neither
changes the agent’s system prompt or persona — that is fixed for the call — they
add to the conversation, the same way a participant’s words do.
say.text ≤ 2,000 characters; context / message ≤ 4,000; initial_state
and payload ≤ 8 KB of JSON; 30 actions per minute per meeting per caller
(429 rate_limited). Send an Idempotency-Key header on retries, as on every write.
Who may call it
Two kinds of credential, with different reach:
Use the stage token as the bearer exactly as you received it:
Responses
How say is voiced
On the standard pipeline (speech-to-text → LLM → text-to-speech) your text goes
straight to text-to-speech: mode: "tts", verbatim by construction.
On Gemini Live, the model produces the audio itself and there is no
text-to-speech stage to hand the sentence to. say is pushed straight into the
live session as a tagged system message the agent is instructed to voice word for
word, immediately (mode: "live_inject"). It is spoken within about a second and
is reliable, but not guaranteed byte-exact — a persona may soften punctuation.
Where that matters, prefer the standard pipeline for the scenario, or use
message and let the agent phrase it. (mode: "overlay" / "model_voiced" are
fallbacks used only while the session is still starting.)
What the agent learns
say— the sentence enters the history as something the agent said.context/message— your text, as a note or a message.stage.open/stage.close— a silent note naming the app and who opened it (api_key:…,skill:…orstage_token:<app>), so the agent can refer to what is on screen. The agent still cannot see the page; usecontextto tell it what matters.
action.<type>
(action.say, action.stage.open, …) — the same log that will carry
screen-share and camera events.
Not supported
- Google Meet, Zoom, Teams and phone calls:
say,contextandmessagework;stage.*answers409 surface_unavailablebecause there is no Waterr screen in those calls. - Changing the persona or system prompt mid-call. Use
context. - Per-participant targeting: an action reaches the agent, and what it shows or says reaches everyone in the call.

