Domain 1 β€” Module 8 of 10 80%
8 of 28 overall
Domain 1: Plan and Configure Agent Solutions Free ⏱ ~14 min read

Topics, Tools and Variables

Build agent conversations with topics, integrate tools and flows, manage variable scopes, and format responses with Power Fx.

The Building Blocks of an Agent Conversation

Simple explanation

Think of a topic as a recipe card. Each card has a title (the trigger β€” what makes the agent start this recipe), a list of steps (nodes β€” questions, messages, conditions), and sticky notes (variables β€” bits of information the agent remembers while cooking).

Tools are the kitchen appliances β€” a blender (prebuilt connector), a custom sous-vide machine (custom connector), or a delivery service (HTTP call). The agent picks the right tool for each step.

Variables are the labels on your ingredient jars. Some labels only exist for one recipe (topic variables). Others are visible across the whole kitchen (global variables). And some are printed by the manufacturer and you cannot change them (system variables).

Topics: Triggers, Nodes, and Flow

A topic is a self-contained conversation unit. It has three parts:

Trigger phrases β€” natural language phrases that activate the topic. When a user says something that matches (or is semantically close to) a trigger phrase, the agent starts that topic. Examples: β€œtrack my delivery,” β€œwhere is my package,” β€œshipment status.”

Nodes β€” the steps in the conversation canvas:

Node TypePurpose
MessageSend a message to the user
QuestionAsk and store the answer in a variable
ConditionBranch based on variable values
Call an actionInvoke an agent flow or connector
RedirectJump to another topic
TransferHand off to a live human
Generative answersAI generates a response from knowledge

Variables β€” data containers that hold information collected during the conversation.

Adding Flows to a Topic

To call an agent flow from a topic, you use the Call an action node. The process:

  1. Add a Call an action node to the canvas.
  2. Select the flow β€” only flows with the β€œWhen an agent calls a flow” trigger appear.
  3. Map input parameters β€” connect topic variables to flow inputs. Types must match.
  4. Map output parameters β€” capture flow return values into topic variables.
  5. Branch on results β€” use a Condition node to check success and handle errors.

The mapping is where most mistakes happen. If a flow expects a number but receives text, the flow fails at runtime β€” the authoring canvas does not always catch type mismatches at design time.

Tool Types

Tools are how the agent reaches beyond conversation into action. Four types are available in Copilot Studio.

Four tool types available in Copilot Studio
FeaturePrebuilt ConnectorsCustom ConnectorsMCP ServersHTTP Actions
What it isMicrosoft-managed connectors for popular services (SharePoint, Outlook, Dataverse, SQL)OpenAPI-based connectors you build for proprietary or third-party APIsModel Context Protocol servers that expose tools for AI agents to discover and callDirect HTTP calls configured in a flow β€” GET, POST, PUT, DELETE
Setup effortMinimal β€” select and authenticateMedium β€” import OpenAPI spec, configure authMedium β€” deploy MCP server, register with agentLow β€” configure URL, headers, body in the flow
Auth modelConnection references managed by Power PlatformOAuth2, API key, or certificate configured in the connectorDepends on MCP server implementationManual β€” you set headers and tokens in the HTTP action
Best forMicrosoft 365 and common SaaS integrationsInternal APIs or niche SaaS products without prebuilt connectorsAI-native integrations where the agent dynamically discovers available toolsOne-off API calls where building a connector is overkill
Exam signalDefault choice for Microsoft ecosystemQuestion mentions proprietary API or OpenAPIQuestion mentions dynamic tool discovery or AI orchestrationQuestion mentions quick integration or no connector available

Variable Scopes

Variables in Copilot Studio have four scopes. Getting the scope wrong is one of the most common mistakes β€” and a frequent exam topic.

ScopeVisibilityLifetimeSet ByExample
TopicOnly within the current topicExists while the topic is active; cleared when the topic endsQuestion nodes, Set Variable action, flow outputsTopic.CustomerName, Topic.OrderID
GlobalAcross all topics in the agentPersists for the entire conversation sessionSet Variable action with global scope, flow outputsGlobal.UserLanguage, Global.IsAuthenticated
SystemRead-only, across all topicsSet by the platform at runtimeCopilot Studio runtimeSystem.User.DisplayName, System.Conversation.Id, System.Activity.Text
Exam tip: Use global variables for cross-topic state

If you need a variable that survives across topic redirects β€” like whether the user is authenticated, their preferred language, or a cart total that accumulates across multiple product topics β€” it must be a global variable. Topic variables are destroyed when the topic ends.

A common exam trap: a scenario where variable data is lost after a topic redirect. The answer is always β€œchange from topic scope to global scope.”

Response Formatting

Copilot Studio supports rich response formatting using markdown and Power Fx expressions:

Markdown in messages β€” bold, italic, bullet lists, numbered lists, and links work in message nodes. The rendering depends on the channel (Teams renders full markdown; a custom web chat may not).

Power Fx for dynamic content β€” you can use Power Fx expressions inside message nodes to format data dynamically:

// Concatenate strings
"Hello, " & Topic.CustomerName & "! Your order " & Topic.OrderID & " is " & Topic.Status & "."

// Format a number as currency
"Total: $" & Text(Topic.Amount, "0.00")

// Conditional text
If(Topic.DaysUntilDelivery <= 1, "arriving tomorrow!", "arriving in " & Text(Topic.DaysUntilDelivery) & " days.")

// Format a date
"Shipped on " & Text(Topic.ShipDate, "dd MMM yyyy")

Power Fx in Copilot Studio uses Power Apps syntax but only a subset of functions is available.

🚚 Dev Adds Tools to the Delivery Tracker

Dev is enhancing his logistics agent’s delivery tracking topic. Currently the topic only shows a static status message. He wants to add real-time tracking data from three sources.

Step 1: Prebuilt connector for Dataverse β€” Dev adds a Call an action node that invokes a flow using the Dataverse connector. The flow takes Topic.TrackingNumber as input, queries the Shipments table, and returns the current status, estimated delivery date, and driver name.

Step 2: Custom connector for the carrier API β€” The carrier exposes a REST API. Dev’s team built a custom connector from the OpenAPI spec. He adds another flow call to get the real-time GPS location.

Step 3: HTTP action for weather β€” Dev wants to warn customers about weather delays. He adds a flow with an HTTP GET action that calls a public weather API using the delivery city from the Dataverse result. No connector needed β€” it is a simple one-off call.

Step 4: Response formatting β€” Dev composes a rich response combining all three data sources using Power Fx concatenation with Char(10) line breaks, Text() for date formatting, and If() for a conditional weather alert. Each data source used a different tool type (prebuilt, custom, HTTP).

Key Terms

Question

What are the three variable scopes in Copilot Studio and when do you use each?

Click or press Enter to reveal answer

Answer

Topic scope: visible only in the current topic, cleared when it ends. Global scope: visible across all topics, persists for the entire session β€” use for cross-topic state like authentication or language preference. System scope: read-only, set by the runtime β€” includes User.DisplayName, Conversation.Id, Activity.Text.

Click to flip back

Question

How do you add an agent flow to a topic?

Click or press Enter to reveal answer

Answer

Use a Call an action node. Select the flow (must have 'When an agent calls a flow' trigger), map topic variables to flow input parameters, and map flow output parameters back to topic variables. Then add a Condition node to branch on the success output.

Click to flip back

Question

What are the four tool types available in Copilot Studio?

Click or press Enter to reveal answer

Answer

1) Prebuilt connectors β€” Microsoft-managed for popular services. 2) Custom connectors β€” OpenAPI-based for proprietary APIs. 3) MCP servers β€” AI-native tool discovery. 4) HTTP actions β€” direct REST calls in a flow for one-off integrations.

Click to flip back

Question

What Power Fx functions are commonly used for response formatting in Copilot Studio?

Click or press Enter to reveal answer

Answer

Text() for number and date formatting, If() for conditional messages, the ampersand operator for concatenation, Char(10) for line breaks, and Value() for converting text to numbers. Same syntax as Power Apps but a subset of functions.

Click to flip back

Knowledge Check

Knowledge Check

Dev's delivery tracking topic collects a tracking number, calls a Dataverse flow, and then redirects to an upsell topic. The upsell topic needs the customer name collected in the tracking topic. What should Dev do?

Knowledge Check

Priya at AgentForge is building an ISV agent that needs to call a customer's proprietary inventory API. The API has an OpenAPI spec and uses OAuth2 authentication. Which tool type should she use?

Knowledge Check

An agent topic calls a flow that expects a Number input, but the developer mapped a Text variable containing '42'. What happens?


Next up: Advanced Responses: Custom Prompts and Generative Answers β€” control how your agent generates responses using custom prompts, knowledge sources, and the generative answers node.