# Simulation Engine Source: https://docs.lyzr.ai/enterprise/agent-studio/agent eval/agentsimulation Test your agent against synthetic conversations before deploying to real users. The Simulation Engine lets you test your agent against synthetic conversations before deploying to real users. It generates realistic test inputs based on your agent's role and goal, runs them against the live agent, and scores the results across quality and safety metrics. ## How it works 1. Open an agent and go to **Safety and Evaluations > Simulation Engine**. 2. Define or auto-generate **scenarios**: situations the agent should handle. Examples: "angry customer demanding a refund," "user asking an out-of-scope question." 3. Define or auto-generate **personas**: user types the agent will encounter. Examples: "non-technical user," "enterprise decision-maker," "hostile adversarial user." 4. The engine combines scenarios and personas into test cases automatically. 5. Run the simulation. The engine executes each test case and scores the results. ## Scoring metrics | Metric | What it measures | | --------------- | ------------------------------------------------------------- | | Task Completion | Did the agent accomplish what the user asked? | | Hallucination | Did the agent fabricate facts not present in its knowledge? | | Faithfulness | Is the response grounded in the connected Knowledge Base? | | Toxicity | Did the agent produce harmful content? | | Bias | Did the agent treat any group unfairly? | | Tool Accuracy | Did the agent call the right tool with the correct arguments? | ## Agent Hardening When test cases fail, select them and choose **Agent Hardening**. The engine analyzes the failure patterns and recommends changes to the agent's instructions, model selection, or feature configuration (for example, enabling Reflection for an agent that is hallucinating). Review the recommendations, apply them to the agent, and re-run the simulation to confirm improvement. ## Before going to production Run the Simulation Engine until the agent meets your quality bar. A reasonable threshold for most production agents is 90% or higher task completion, zero toxicity failures, and a hallucination rate below your acceptable limit with all tool calls producing correct outputs. The Simulation Engine is the primary quality gate before promoting any agent to a production environment. ## Next steps * [Approval Flows](../governance/approval-flows) * [Tracing](tracing) # Improvement Engine Source: https://docs.lyzr.ai/enterprise/agent-studio/agent eval/improvement-engine Monitor agent performance, detect issues, and get AI-powered improvement suggestions. The Improvement Engine monitors your registered agents continuously, detects quality and performance issues from live traces, and generates hardening suggestions to improve agent behavior over time. It checks for a range of issues across your agent's behavior - including hallucinations, low task completion, Knowledge Base retrieval failures, tool call errors, and response relevancy. Each issue is scored, categorized by severity, and tied back to the trace that surfaced it. When patterns emerge across multiple traces, the engine generates an Agent Hardening suggestion that proposes specific changes to the agent's goal and instructions to address the root cause. Access it via **Safety and Evaluations > Improvement Engine** from the sidebar. Agent Improvement Engine dashboard showing registered agents, issue counts by severity, and a Recent Issues panel ## Registering an agent Only registered agents are monitored. To register an agent: 1. Select **+ Register Agent** in the top right. 2. Choose an agent from the **Agent** dropdown. 3. Toggle **Automatic analysis** on to run evaluation on a schedule. 4. If automatic analysis is on, set the frequency: Every hour, Every 3 hours, Every 6 hours, Every 12 hours, Daily, Weekly, or Custom. 5. Select **Register Agent**. Register Agent modal showing agent selector, automatic analysis toggle, and frequency dropdown Once registered, the agent appears in the agents list. Analysis begins at the next scheduled run. You can also trigger analysis manually at any time from the agent's detail view without waiting for the schedule. Registering an agent gives you: * Real-time issue detection from traces * Performance bottleneck alerts * AI-powered prompt improvement suggestions To pause monitoring for an agent without removing it, select the three-dot menu on its row and choose **Pause**. Paused agents retain their issue history but stop receiving new analysis runs. ## Dashboard overview The main dashboard gives a cross-agent view of all registered agents. **Summary stats** across the top show total issues from all registered agents, split into Unresolved and Resolved counts, with a severity breakdown of Critical, Medium, and Low. **The agents table** lists each registered agent with: | Column | Description | | ------------------ | ---------------------------------------------------------------------- | | **Status** | Live (actively monitored) or Paused | | **Issues** | Total issues detected and how many of the agent's traces were analyzed | | **Issue Severity** | C / M / L count breakdown of current issues | | **Unresolved** | Issues still open and needing attention | **Recent Issues** on the right shows the latest issues across all registered agents, ordered by recency. Each entry shows the issue title, severity tag, the agent it belongs to, and when it was detected. This gives you a single view of what needs attention right now without having to open each agent individually. ## Viewing agent issues Select any agent from the table to open its detail view. The header shows: * Agent name and live status * Analysis interval (for example, Every 3 hours) * Model and provider * Total traces analyzed and when analysis last ran Summary cards below the header show Total Issues, Unresolved, Resolved, and Issue Severity for that specific agent. ### Issues tab The **Issues** tab lists all detected issues. Use the **Severity** filter to focus on Critical, Medium, or Low issues, and the **Category** dropdown to filter by issue type. Select **Run Analysis** to trigger a fresh analysis run on demand. Each row in the issues table shows: | Column | Description | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Issue** | Title and a short description of what was detected | | **Severity** | Critical, Medium, or Low - based on how significantly the issue affects agent quality | | **Category** | Type of issue - for example, Low Task Completion, Hallucination, Knowledge Base | | **Score** | Numeric score for the affected metric, with the passing threshold shown below it. A score of 0.30 with a threshold of 0.70 means the agent is well below the acceptable range | | **Trace** | The trace ID where the issue was detected - select it to open Trace Details | | **Detected** | When the issue was first seen | Some issues carry an **Observation** score rather than a numeric score. These are qualitative findings where the engine detected a problem but the issue does not map to a numeric metric - for example, when a trace does not contain enough data to evaluate task completion. To mark an issue as resolved, select the checkmark icon on its row. To remove an issue from the list entirely, select the delete icon. Issues tab showing a filtered list of detected issues with severity, category, score, and trace columns ### Trace Details Selecting a trace ID opens the Trace Details panel. It shows: * The detected issue, its category tag, and a full description of why it was flagged - including evidence and what the evaluator expected to find * Duration, total tokens, tool calls, and cost for that trace * A trace timeline showing the span breakdown * Agent information: name, model, and provider Use **Full Trace View** to open the complete trace in the Tracing view, or **View Conversation** to see the full conversation that triggered the issue. ## Agent Hardening The **Agent Hardening** tab shows AI-generated suggestions for improving the agent's configuration. The engine analyzes patterns across detected issues - not just individual failures - and produces a consolidated suggestion that addresses the underlying root causes. Each suggestion in the list shows: | Column | Description | | -------------- | --------------------------------------------------------------------------------------- | | **Suggestion** | Name of the hardened configuration | | **Status** | Pending (not yet applied) or Applied | | **Fields** | Which parts of the agent config are proposed to change, such as Goal or Instructions | | **Size delta** | How many characters the suggested change adds or removes relative to the current config | | **Generated** | When the suggestion was created | An agent can have multiple Pending suggestions if separate analysis runs identified different issue patterns. Review each independently before deciding which to apply. Select a suggestion to expand it. The detail view shows: * **Reasoning** - a plain-language explanation of why the changes are recommended and which detected issues they address * **Expected improvements** - which metrics or behaviors should improve after applying the changes, shown as tags (for example, "Task Completion: Better task fulfillment") * **Diff view** - switch between **Inline Diff** and **Side by Side** to compare the current and proposed Goal and Instructions. Additions are shown in green, removals in red. To apply a suggestion, select **Push to Production**. The agent configuration is updated, a new version is recorded in Version Control, and the suggestion status changes to Applied. Select **Delete** to discard a suggestion without applying it. Select **Run Analysis Now** to generate a fresh hardening suggestion based on the latest traces. Agent Hardening tab showing a pending suggestion with inline diff of Goal and Instructions changes ## Settings The **Settings** tab controls how the Improvement Engine monitors an agent. Settings tab showing analysis schedule, runaway limits with per-trace ceilings and spend budgets, tracked metrics, and email alert configuration ### Analysis schedule Set whether analysis runs automatically and at what frequency. The panel shows when the next scheduled run is. You can change the interval at any time - the change takes effect before the next scheduled run. Manual **Run Analysis** always works on demand regardless of the automatic schedule setting. ### Runaway limits Agent evaluation consumes tokens and incurs cost. Runaway limits let you set guardrails so a single expensive trace or a sustained period of high usage does not run up an unexpected bill. Enable **Runaway detection** to activate limits. Leaving a field blank inherits the workspace default. **Per-trace ceilings** flag and stop evaluation for a single trace that exceeds a threshold: | Ceiling | Preset options | | ----------- | ------------------------------------------ | | **Cost** | \$0.25, \$0.50, \$1.00, or a custom value | | **Latency** | 10s, 20s, 60s, or a custom value | | **Tokens** | 25,000, 50,000, 100,000, or a custom value | **Spend budgets** cap total evaluation spend over a rolling time window: * Cost: Daily and Monthly limits * Tokens: Daily and Monthly limits Per-trace ceilings catch a single expensive evaluation call. Spend budgets catch sustained high usage over time. Anything that trips either type fires a **Resource runaway** alert - configure where those alerts are sent in the Alerts section. ### Tracked metrics Metrics are auto-selected based on the agent's configuration. For most agents, Task Completion and Hallucinations are active by default. Tool and Knowledge Base metrics activate automatically when the agent has tools or a Knowledge Base connected. | Metric | Module | What it checks | | ------------------------ | -------------- | ----------------------------------------------------------- | | **Task Completion** | Base | How fully the agent accomplishes the user's request | | **Hallucinations** | Base | Detects fabricated, unverifiable, or invented claims | | **Tool Correctness** | Tools | Whether the right tool was chosen at the right time | | **Argument Correctness** | Tools | Precision of tool arguments - types, values, and formats | | **Contextual Relevancy** | Knowledge Base | Relevance and sufficiency of retrieved context | | **Answer Relevancy** | Knowledge Base | Whether the response directly addresses the user's question | | **Knowledge Retention** | Knowledge Base | Consistency and coherence across multi-step reasoning | ### Alerts Configure where the engine sends notifications when analysis events occur. You can add multiple email channels with different recipient lists and event subscriptions. Supported events: * **Issues found** - new issues were detected in an analysis run * **Suggestion ready** - a new hardening suggestion has been generated * **Analysis failed** - an analysis run could not complete * **Resource runaway** - a runaway limit was tripped Select the events each channel should receive. **Slack alerts** are coming soon. ## Upcoming features * **Real-time monitoring** - analyze each trace via webhook as it completes, without waiting for a scheduled run * **Custom judges** - define your own evaluation criteria beyond the built-in tracked metrics ## Next steps * [Simulation Engine](agentsimulation) * [Tracing](tracing) # Monitoring & Tracing Source: https://docs.lyzr.ai/enterprise/agent-studio/agent eval/tracing Real-time insights into agent usage, performance, latency, and credit consumption via OpenTelemetry-standardized traces. Monitoring and Tracing provides real-time visibility into agent activity, execution health, and resource consumption. Traces are standardized with OpenTelemetry, which enables consistent log quality, advanced filtering, and high-fidelity reporting across all agents in your workspace. Org Owners and Admins have access to data across all users, enabling centralized oversight for teams managing multiple agents. ## Analytics dashboard The Analytics tab provides aggregate metrics across agents over a selected date range. | Metric | Description | | ----------------- | --------------------------------------------------------- | | Total Credits | Aggregate credits spent, including average cost per trace | | Avg Latency | Mean agent response time in seconds | | Reliability Score | Percentage of successful executions | | Token Efficiency | Average tokens used per trace | Screenshot of the Analytics dashboard showing credit, latency, reliability, and token efficiency metrics with trend charts. **Charts available:** * **Error Rate**: percentage of failed executions over time. * **Token Usage**: breakdown of input and output tokens. * **Latency Trends**: average and P95 latency to surface performance bottlenecks. * **Credits Consumed**: daily credit usage trends. ## Traces The Traces tab shows individual execution records for every agent run. Screenshot of the Traces list showing columns for Trace ID, Duration, Cost, Tokens, and Start Time. Each row shows: Trace ID, duration, cost and token consumption, and start time. Select any trace to open a detailed view. **Filtering:** Use the Filter Analytics sidebar to narrow traces by date range (up to 31 days), agent name, user, or session ID. Screenshot of the Filter Analytics sidebar with date range, agent name, user, and session ID filter options. ## Trace detail Selecting a trace opens the execution timeline for that run. Screenshot of the trace timeline view showing an operation waterfall from Session start through Agent Orchestration to Generate AI Response. **Operation waterfall**: shows the sequence of steps from session start through agent orchestration to the final LLM response, with duration for each span. This identifies which step is causing latency. **Metadata and logs**: shows Agent ID, Org ID, User ID, and model details. Expand any operation to view raw logs and internal event data. Screenshot of the detailed logs panel showing metadata fields and expandable operation logs. ## Generate insights for a trace Each trace detail view has a **Generate Insights** action that runs a utility agent over the trace and returns a structured review of that run. Use it to understand a long or failed execution quickly, without reading every span in the operation waterfall by hand. The trace detail view showing the Generate Insights button above the Trace Timeline. The insights come back in two parts: * **Trace Verdict** states which agent ran, what the user asked for, what the agent delivered, and an overall verdict on whether the request was fulfilled. * **Findings** lists each behavior the utility agent identified, numbered and tagged with a status such as Worked. Each finding describes what happened and its impact on the output. ## Next steps * [Transcripts for voice agent monitoring](../monitoring/transcripts) * [Simulation Engine for pre-production testing](agentsimulation) # Global Context Source: https://docs.lyzr.ai/enterprise/agent-studio/agent features/global context Create reusable context documents that inject shared instructions across multiple agents. Global Context lets you define a reusable block of information once and attach it to any number of agents. Instead of repeating the same company details, product guidelines, or compliance rules in every agent's instructions, you write them once as a context document and reference it from each agent's configuration. ## How Global Context works A Global Context document is a named text block stored in your workspace. When you attach a context document to an agent, its contents are injected into the agent's system prompt at inference time. Every agent that shares the same context document automatically receives any updates you make to that document, without requiring per-agent edits. ## Create a context document 1. Select **Knowledge** in the Studio sidebar, then open **Global Contexts** to see the list of context documents in your workspace. 2. Select **Create Context**. A panel opens on the right side of the screen. 3. Enter a **Name**: a short, descriptive identifier that makes the document easy to find and reuse across agents. Examples: `company_info`, `product_catalog`, `support_guidelines`. 4. Enter the **Value**: the text to inject into agent prompts. Example: ``` Lyzr AI was founded in 2021. Our mission is to make AI-powered automation accessible to all businesses. ``` 5. Select **Create** to save the context document. Screenshot of the Global Contexts page in Lyzr Studio showing an existing context document card and the Create Context panel open on the right with Name and Value fields. ## Attach a context document to an agent 1. Open the agent in the Studio Builder, or create a new agent. 2. Scroll to the **Features** section and select **View All**, or select the **+** icon next to **Features** to open the feature picker. You can also search for "Context" in the search bar. 3. Toggle on **Context** under Core Features. 4. Select the context document from the dropdown. The context is injected into the agent's system prompt from the next inference onwards. Screenshot of the agent feature picker in Agent Studio showing Core Features including Data Query, Memory, Voice Agent, and Context, with Memory toggled on and Context available to enable. You can attach the same context document to multiple agents. Editing the document once propagates the change to all agents that reference it. ## When to use Global Context Global Context is most useful when the same information must stay consistent across agents in your workspace. Common use cases include: * Org-wide brand voice and tone guidelines that all customer-facing agents must follow * Product descriptions referenced by both support and sales agents * Compliance rules or legal disclaimers that apply across the entire workspace ## Next steps * [Build an agent in Studio](../agents/studio) * [Memory and session context](../../get-started/concepts/memory-context) # Conversational Builder Source: https://docs.lyzr.ai/enterprise/agent-studio/agents/conversational-builder Create and refine agents by describing what you want in plain English. The Conversational Builder is the entry point on the Studio home screen. Describe what you want to build, Studio asks follow-up questions, and generates an initial agent configuration automatically. Use it to get a working draft quickly, then switch to the Studio Builder to fine-tune any setting the conversational flow does not expose. ## What the Conversational Builder configures From a natural-language description, the builder can set up the following: * Agent role, goal, and instructions * Model selection * Knowledge Base setup * Tool connections * Manager Agent orchestration for multi-agent setups ## Build an agent conversationally 1. On the Studio home screen, type a description of the agent you want to build. Be specific about the domain, the task, and who the agent is for. 2. Answer the follow-up questions Studio asks. These typically cover tone, tools the agent needs, what data it should have access to, and how it should handle edge cases. 3. Review the generated configuration. Studio populates the role, goal, and instructions based on your answers. 4. Continue refining in the same conversation. You can add constraints, adjust the persona, or request changes in plain English. 5. Select **Open in Builder** to switch to the full Studio Builder for any setting the conversational flow does not expose. Screenshot of the Conversational Builder interface in Agent Studio, showing a natural language prompt input and Studio follow-up questions below it. ## Conversational Builder vs. Studio Builder Use the Conversational Builder to draft a new agent quickly, especially when you are not yet sure of the exact configuration. Switch to the Studio Builder for chunking strategies, retrieval settings, Responsible AI thresholds, structured output schemas, and any provider-specific controls that require precise values. ## Next steps * [Fine-tune your agent in the Studio Builder](studio) * [Connect a Knowledge Base](../knowledgebase/studiokb) * [Configure tools](../tools/overview) # Building Agents in Studio Source: https://docs.lyzr.ai/enterprise/agent-studio/agents/studio Create, configure, test, and manage agents using the full Studio Builder. Use the Studio Builder when you need full control over an agent's model, prompt, features, tools, knowledge base, and deployment settings. If you want to describe your agent in plain English first and let Studio generate an initial configuration, start with the [Conversational Builder](conversational-builder) and switch to Studio for fine-tuning. ## Create an agent Navigate to **Agents** in the sidebar and select **New Agent**. ### Required fields **Name** is the internal identifier shown in the agents list and in API responses. **Model** is the LLM provider and model. Select based on latency, cost, reasoning depth, and compliance requirements. Once you have written the agent's instructions, you can select the **auto-select model** icon instead of choosing a model yourself. Auto-select reads the instructions, gauges the complexity of the task, and picks an appropriate model for it. **Role** sets the agent's domain and persona. A specific role produces better output than a generic one. **Goal** is the agent's high-level objective. Keep it to one clear sentence. **Instructions** define behavior, output format, edge cases, constraints, and step-by-step logic. Screenshot of the Agent Builder form showing the Name, Model, Role, Goal, and Instructions fields. ## Optional features | Feature | Config options | Notes | | ----------------- | ----------------------------------------- | ----------------------------------------------------------- | | Memory | Cognis, Lyzr Memory, or Bedrock AgentCore | Cognis is recommended for new agents | | Knowledge Base | Select one or more KBs | Classic, Graph, or Semantic | | Tools | Pre-built, custom, or MCP tools | Choose shared or per-user auth | | Skills | Built-in or uploaded skills | Adds reusable multi-step logic | | Responsible AI | Select a guardrail policy | Policies are created in the Responsible AI section | | Global Context | Select a context document | Injects org-wide instructions without per-agent duplication | | Structured Output | Define a JSON schema | Forces machine-readable output | | Data Query | Select a Semantic Model | Enables natural-language-to-SQL queries | | Scheduler | Configure a time trigger | Use for recurring agent runs | | Webhook | Configure an event trigger | Use for event-driven runs | ## Test your agent in the Playground The Playground lets you send messages, upload files, and iterate on instructions before deployment. Cover the following scenarios before going to production: * The primary use case with a typical user input * Ambiguous or underspecified inputs to check graceful handling * Requests the agent should decline, such as unsafe or out-of-scope queries * Tool calls: verify the agent selects the correct tool and passes valid arguments * Knowledge retrieval: verify the agent returns grounded, cited answers from the connected KB Screenshot of the Agent Playground showing an HR Support Agent with suggested prompts and a chat input. ## Save and versions Every save creates a new version snapshot. You can review and restore previous versions from the **Version History** panel, accessible via the history icon in the top-right of the agent builder. Screenshot of the Version History panel showing version timestamps, a Current badge, and Today/This Week/All Time filter tabs. ## Deploy your agent Once you are satisfied with the Playground results, select **Deploy** in the top navigation. The Deploy tab confirms the agent is live and gives you everything you need to integrate it. Screenshot of the Deploy tab showing the three-step integration guide: Copy the cURL, Drop it in, Go live, with the Agent API tab and cURL command visible below. The Deploy tab provides three tabs for integration: * **Agent API:** The primary cURL command for calling your agent. Copy it and paste it into your app, site, or backend using the request format shown. * **Agent JSON:** The full agent configuration as JSON, for importing or version-controlling the agent definition. * **How to use:** Inline guidance on passing user input and rendering the response. The three-step integration flow is: copy the cURL from the **Agent API** tab, drop it into your application code, then pass user input and render the response. To publish the agent to the Lyzr App Store without writing integration code, select **Publish** from the banner on the Deploy tab. ## Update an agent Select the agent from the **Agents** list to open its configuration. Modify any field and select **Update** to apply the changes. Re-run tests in the Playground to confirm the updates produce the intended behavior. ## Tags and metadata You can annotate an agent with free-form tags and metadata to organize it and make it searchable. Open the agent's **...** menu in the Agent Registry and select **Tags & metadata**. * **Custom tags** are labels you add one at a time. Type a tag and press Enter to add it. Tags appear on the agent's card in the Agent Registry and make the agent searchable, which helps you find a specific agent in an organization that runs many of them. * **Custom metadata** is a free-form field for any notes or structured metadata you want to attach to the agent. Select **Save** to apply the tags and metadata. The Tags and metadata dialog showing a Custom tags input and a Custom metadata text area. ## Deactivate an agent You can deactivate a productionized agent to take it out of service without deleting it. Open the agent's **...** menu in the Agent Registry and select **Deactivate**. While an agent is deactivated, any user who queries it receives a message that the agent is inactive and cannot respond. Reactivate the agent from the same menu to restore normal behavior. The agent card actions menu showing the Deactivate option alongside Edit, Tags & metadata, Share, Clone agent, and other actions. ## Next steps * [Connect a Knowledge Base](../knowledgebase/studiokb) * [Configure tools](../tools/overview) * [Set up Responsible AI guardrails](../responsible-safe-ai/Responsible) * [Evaluate your agent](../agent%20eval/agentsimulation) # Skills Source: https://docs.lyzr.ai/enterprise/agent-studio/connect/skills Upload and manage reusable skill packages in Lyzr Studio. Skills in Studio is where you upload, manage, and share reusable skill packages across your workspace. Once uploaded, a skill is available to any agent in the workspace through the Agent Builder. If you want to understand what skills are and how they work conceptually, see [Skills](../../get-started/concepts/skills). ## Upload a skill Skills are packaged as a zip file or a GitHub repository. Each skill must contain a `SKILL.md` file at the root that defines its interface and behavior. 1. Go to **Skills** in the Studio sidebar and select **Create New**. 2. Choose how to add the skill: * **Upload zip**: drag and drop or select a `.zip` file from your computer. * **GitHub repo**: paste the repository URL and branch name. 3. Lyzr validates the `SKILL.md` and displays the skill name, description, and parameters. 4. Save. The skill is now available workspace-wide. ## Lyzr built-in skill library Lyzr provides a library of pre-built skills covering common patterns: web search, summarization, data extraction, code execution, and more. These appear in the skill selector without requiring you to upload anything. ## Attach a skill to an agent 1. Open the agent in the Agent Builder. 2. Scroll to the **Skills** section and select **Add**. 3. Choose from your uploaded skills or from the built-in skill library. 4. Add any required skill instructions that tell the agent when and how to use this skill. 5. Save the agent. ## Update or remove a skill To update a skill, re-upload a new version of the zip or push to the connected GitHub branch and trigger a refresh in Studio. All agents using the skill pick up the updated version automatically. To remove a skill from an agent, open the agent in the Agent Builder, find the skill under the **Skills** section, and remove it. Removing a skill from an agent does not delete it from the workspace. ## Next steps * [Tools](../connections/tools) * [Global Context](../agent%20features/global%20context) # Data Connectors Source: https://docs.lyzr.ai/enterprise/agent-studio/connections/data-connectors Connect SQL and NoSQL databases to your agents for real-time data access and natural language querying. Lyzr connects with leading SQL and NoSQL data sources, enabling your agents to access and analyze real data in real time. To connect a database to an agent, you create a **Semantic Model**, which holds only the relevant subset of your database required for that agent. This scoping ensures optimal performance while giving the agent the context it needs to understand your data schema. Once connected, your agent can convert natural language questions into database queries (SQL or equivalent) and return accurate insights on demand. Agents built on top of a Semantic Model are called **Data Query Agents** or **Text-to-SQL Agents**.