How an agent team becomes an interactive participant in an agentic app — the message hint routing pattern, the App Experience Tab in Agent Studio, and the Agent Editor in the App Builder

Introduction

This blog walks through the full configuration journey of an Agent Team for an agentic app. It starts with the message hint — the signaling protocol your workflow must respond to. Then it moves to Oracle AI Agent Studio, where you license what the agent is capable of producing. Finally it ends in the Agentic App Builder, where you decide what that team should actually contribute inside one specific app.

Two surfaces, one agent. Agent Studio defines what an agent team is capable of producing. The App Builder decides what that team should contribute inside a specific app. The same team can be reused across many apps; each app exposes a different subset of its capabilities through its own Agent Editor. Configuration in Agent Studio is global — a change ripples to every app using that team. Configuration in the App Builder is local — it applies only to one app slot.


Part 1 — The Message Hint: The App’s Signaling Protocol

Every time the app calls an agent, it passes a message hint in $context.$app.$OraMessageHint. This single variable tells the agent whether the app is asking for a summary, an initial display, a set of actions, an answer to a user question, or any of the other request types. Your workflow’s job is to read this variable, branch on its value, and route the request to the right node.

 Workflow type — quick note For agentic apps, the recommended team type is Workflow. Workflows give you structured input, per-request prompts, and predictable latency — all of which matter for the 60-second response budget. Supervisor teams work as a fallback, but require very careful prompting to stay within the limit. This was covered in detail in earlier posts in the series.

The App Lifecycle — What Fires When

When an agentic app first loads, the framework runs through a predictable startup sequence. Each step sends a different message hint to the appropriate agents.

  • Summary — fires first. Each agent marked “Include in Summary” returns a 1–2 sentence overview.
  • InitSubtitle — fires once, on the nominated Dynamic Subtitle Agent. Returns the tagline for the session.
  • InitDisplay — each agent renders its initial widgets and state into its section card.
  • InitActions — agents marked “Include in Actions” surface their initial actionable insights.
  • InitCommunications — agents marked “Include in Communications” surface their initial suggested communications.

After initialization, the app waits for user interaction. Every interaction triggers another message hint:

  • Query — fires when the user asks a question via Ask Oracle. The workflow handles the query and returns a response that may include displays, actions, or communications.
  • InvokeAction — fires when the user clicks an action button. The action’s context is available in $context.$app.$OraAction.
  • FillParameters — fires when an agent needs to fill in communication parameters before the user reviews and sends.
  • SendCommunication — fires when the communication is being dispatched by the designated agent.
  • AdditionalContent — fires when the user expands a panel. The panel’s identifier arrives in $OraPanelName.

Complete Hint Reference

Hint ValueWhen It FiresWhat to Return
SummaryApp is asking for summary text from each agentShort summary text reflecting that agent’s contribution
InitSubtitleApp is asking for the dynamic subtitleThe subtitle text itself
InitDisplayApp startup — load initial displaysOne or more <oraInfoDisplay> blocks (may include actions, oraComms)
InitActionsApp startup — load priority actionsZero or more action suggestions
InitCommunicationsApp startup — load communication suggestionsZero or more <oraComms> blocks
QueryUser asked something through Ask OracleUse input message to answer; may include displays, actions, comms
InvokeActionA UI click sent work back to the workflowFollow-up handling after a widget command triggers an action path
AdditionalContentApp is loading an extra panel under a focused agentUse $OraPanelName to determine which panel is requested
FillParametersApp is asking agents to fill communication parametersFill in the requested parameters before generation/send
SendCommunicationApp is asking the workflow to send/complete a communicationSend or complete the communication flow

The Routing Pattern in Practice

The canonical workflow pattern is a Switch node that reads $context.$app.$OraMessageHint and routes to a dedicated handler node for each hint value you care about. Each handler is then a focused Agent or LLM node with a prompt tuned for that specific kind of request.

This pattern keeps each path simple and predictable, which is exactly what you need to stay inside the 60-second response budget.

Context passing inside a workflow Conversation history and user input are NOT automatically passed to internal nodes. If a downstream node needs to see the user’s message or chat history, you must pass it explicitly using $context.$system.$inputMessage or $context.$system.$chatHistory. This is one of the most common sources of confusion when a workflow appears to ignore what the user said.
 Terminal paths — end on Agent or LLM nodes Design your workflow so every terminal path ends on an Agent or LLM node, rather than a Code or Output node. This keeps the door open for streaming responses in the future, which improves perceived latency. Terminating on a Code node returns the response in a single block.

Part 2 — The App Experience Tab in Agent Studio

Once your workflow has the right routing logic, you need to license the agent’s capabilities for use in agentic apps. This happens in the App Experience Tab on each Agent or LLM node inside your workflow. This is where the agent is granted the right to participate in agentic apps and where you decide which output features it can produce.

Step 1: Expose to Agentic Apps — The Master Toggle

At the bottom of the agent team’s Details panel, you’ll find the Expose to Agentic Apps toggle. This is the master switch.

  • When it is ON: the agent team becomes discoverable to the App Builder and a new App Experience Tab appears on every Agent and LLM node in the workflow.
  • When it is OFF: the agent will not appear properly in the App Builder’s agent dropdown, no matter what else you configure.

Step 2: Configure the App Experience Tab on Each Node

Open any Agent or LLM node inside the workflow and navigate to the App Experience Tab. Inside, you control what kinds of output the agent is licensed to produce when it runs inside an agentic app.

  • Enable Actions for the Widgets — Turns on the Actionable Insights feature for this node. With this on, the agent can generate <oraInsight> blocks — the actions that show up as buttons in the app’s actions panel. With this off, no amount of prompting will produce actions.
  • Enable Communications for the Widgets — Lets the agent generate recommended communication items — the <oraComms> blocks that become suggested emails, messages, or notifications in the app.
  • Select Widgets — Choose which of the seven widgets the agent is allowed to render: Card, Messages List, Change List, Chart, Record, Multi Record, Sankey. Each widget you select expands the set of <oraInfoDisplay> outputs the agent can produce.
  • Instructions Prompt Box — A free-form prompt that captures general formatting rules and guidance on when and how to use each selected widget. Think of this as the agent’s house style for outputs across every app it participates in. Per-app specifics belong in the App Builder, not here.
Best practice — clear team descriptions The agent team’s description is what the framework uses for filtering and routing decisions. Spell out the team’s capabilities clearly and in plain language. A vague description (“handles requests”) leads to unpredictable routing; a precise one (“analyzes spend variance against budget and surfaces anomalies for approver review”) gives the framework the signal it needs to route correctly.

Part 3 — Configuring the Agent in the App Builder

With the agent team properly configured and exposed in Agent Studio, you can now drop it into an agentic app. Open the App Builder, navigate to your app, and click any agent card on the page pattern. The Agent Editor opens as a side panel — this is where you decide what this specific agent contributes to this specific app.

Think of the Agent Editor as the app-level steering wheel. The capabilities are already defined in Agent Studio; here you decide which of those capabilities to surface, how to prompt the agent for each kind of output, and what supplementary content to organize into panels.

Agent Code — The Link to the Team

The first control in the editor is the Agent Code dropdown. Type to search and select the agent team you want to bind to this slot. Only teams that have Expose to Agentic Apps turned on in Agent Studio will appear here. Once selected, the team’s description appears below the dropdown — a quick sanity check that you picked the right one.

Include in Summary

Tick this checkbox to include this agent’s output in the app’s summary view at the top of the page. When checked, an Initial Summary Prompt textarea appears. Write a concise instruction for what this agent should contribute to the overall summary.

Example: “Summarize the key spend variance metrics and any anomalies detected in 1–2 sentences.”

Include in Actions

Tick this checkbox to allow this agent to surface actionable insights. When checked, an Initial Actions Prompt textarea appears. This is where you tell the agent what conditions warrant an action and how to phrase the suggestion.

Example: “Suggest actions when budget variance exceeds 10% or when a milestone is at risk of slipping. Keep titles short and lead with the verb.”

 This control only works if Actions are enabled upstream The Include in Actions checkbox in the App Builder relies on “Enable Actions for the Widgets” being on in the App Experience Tab in Agent Studio. If that upstream toggle is off, ticking the checkbox here has no effect — the agent simply will not emit oraInsight blocks. This is the most common cross-product configuration mistake.

Initial Graphics Display Instructions

This is the prompt that drives the agent’s main display output — what it renders into the section card the first time the app loads. Write instructions that name the widget you want and constrain the output to a manageable shape.

Example: “Focus on the top 5 most critical items by impact score and display them using the message list widget. Each row should show the item name, the impact value, and a one-line reason.”

Include in Communications

Tick this checkbox to allow the agent to suggest communication templates — pre-written emails, messages, or notifications that the user can review and send. The agent’s ability to emit <oraComms> blocks must also be licensed in Agent Studio (“Enable Communications for the Widgets”) for this to work end to end.

Panels — Additional Content Sections

Beyond the main display, an agent can have supplementary content panels. Each panel has its own name, heading, and prompt, and is loaded on demand when the user focuses on the agent’s section.

  • Click + Add Panel at the bottom of the Agent Editor.
  • Name — internal identifier, snake_case (e.g. variance_details).
  • Heading — the display title users see in the panel header.
  • Prompt — instructions for what content this panel should generate.

When the panel is loaded at runtime, the agent receives the AdditionalContent message hint along with the panel’s Name in $OraPanelName, so the workflow can route to the right handler.

Dynamic Subtitle Agent

Configured at the app level rather than per agent, but worth mentioning here: the Dynamic Subtitle Agent setting in the App Editor lets you nominate an agent whose output drives the app’s subtitle. The agent receives the InitSubtitle message hint at startup and is expected to return a short string that the app uses as its tagline for the session.


Part 4 — The End-to-End Configuration Checklist

When you build a new agentic app, work through these steps in order. Skipping ahead — particularly skipping the Agent Studio step — is the source of almost every “why isn’t this working” issue.

In Agent Studio

  • Open the agent team. Confirm Type is Workflow. Write a clear, capability-focused team description.
  • Turn on Expose to Agentic Apps at the team level. Confirm the App Experience Tab now appears on the LLM nodes.
  • For each Agent or LLM node that needs to produce app content, open the App Experience Tab:
  •    • Turn on Enable Actions if this node should produce actions.
  •    • Turn on Enable Communications if this node should produce communications.
  •    • Under Select Widgets, check every widget type this node may render.
  •    • Fill in the Instructions Prompt with general formatting rules and widget guidance.
  • Build the workflow routing on $OraMessageHint with a dedicated handler node for each hint your app will trigger.
  • Confirm context passing — pass $context.$system.$inputMessage and $chatHistory explicitly to nodes that need them.
  • Confirm terminal paths end on Agent or LLM nodes, not Code nodes, for future streaming.

In the App Builder

  • Open the app, add the agent to the right page-pattern slot.
  • Open the Agent Editor on that slot. Select the team in Agent Code.
  • Tick Include in Summary if appropriate; write the Summary Prompt for this app.
  • Tick Include in Actions if appropriate; write the Actions Prompt with the specific triggers for this app.
  • Write the Initial Graphics Display Instructions — name the widget, constrain the output.
  • Tick Include in Communications if the agent should surface communication suggestions in this app.
  • Add Panels for any supplementary content sections this app needs.
  • If this agent should drive the dynamic subtitle, set it as the Dynamic Subtitle Agent in the App Editor (gear icon next to the app title).
  • Save and run the app. Watch the section card light up at startup, verify actions appear, and click through to confirm InvokeAction handling.

Quick Troubleshooting

SymptomLikely Cause
Agent doesn’t appear in the App Builder dropdownExpose to Agentic Apps is off in Agent Studio.
Section card is empty at runtimeNo widgets selected in App Experience Tab, or InitDisplay handler not wired in the workflow.
Actions panel is always emptyEnable Actions is off in App Experience Tab, or no InitActions branch in the workflow.
Agent ignores what the user typed in Ask OracleWorkflow’s Query handler isn’t passing $context.$system.$inputMessage.
Workflow times outToo many LLM calls per path; consider tighter prompts or move logic out of Supervisor-style chains.
Communication suggestions never appearEnable Communications is off in App Experience Tab, or Include in Communications is unchecked in the Agent Editor.

Key Takeaways

  • Branch on the hint. The message hint is the framework’s signaling protocol. Every workflow you build for an agentic app should have a Switch node that branches on $OraMessageHint.
  • Two surfaces, one agent. Agent Studio defines capability; the App Builder defines participation. Both are required, and they happen in different products.
  • Order matters. Always configure Agent Studio first. The App Builder relies on what you enabled in the App Experience Tab.
  • App Experience Tab, not Output Tab. This is where you grant the agent the right to participate in agentic apps and select widgets, actions, and communications it can emit.
  • Prompts are layered. The Instructions Prompt in Agent Studio holds general rules; the prompts in the App Builder hold app-specific behavior. Don’t duplicate.

New to Oracle Fusion AI Agents?

Explore AI Agent Studio Learning Path — blog series to help build from zero to production-grade AI agents, with deep dives on every agent pattern, node type, and tool integration.

Explore AI Agentic Apps Learning Path — blog series on everything you need to build Oracle Fusion AI Agentic Apps using AI Agent Studio.