Teams Agent Configuration
The Tursio agent works with its default settings as soon as it is installed. This page covers the settings you can change afterwards: which MCP server and model it uses, how much detail it shows while working, limits for scheduled questions, how the app appears in Teams, and how the agent is instructed to answer.
Installing for the first time?
The architecture, security model, prerequisites, and deployment steps are covered in Deploy the MCP Server → Microsoft Teams. If the setup script's preflight check fails, see the Teams Agent Preflight FAQ.
Overview
| What | Where you change it | When it applies |
|---|---|---|
| MCP server, API keys, model, plan size | The setup script, at install time | immediately; re-run the script to change |
| App name, description, icon, suggested prompts | appPackage/manifest.json in your installation package |
after republishing and admin approval |
| Display detail, timeouts, scheduling limits | Azure portal → your App Service → Environment variables | after a short restart |
| The agent's instructions | instructions.txt in your installation package |
after redeploying |
Most deployments only ever touch the first three.
Install-time settings
The setup script asks for these and remembers your answers, so re-running it and pressing Enter keeps the current values.
| Setting | Notes |
|---|---|
| Tursio MCP server URL | Your Tursio MCP server address, e.g. https://mcp.yourcompany.com/mcp. |
| Tursio API key | From the Tursio portal, under Settings → API Agent. |
| AI provider and key | Azure OpenAI or standard OpenAI. Azure also requires your endpoint URL. |
| Model | Your Azure OpenAI deployment name, or a standard OpenAI model id. Defaults to gpt-5.2. |
| App name suffix | Added to the name shown in Teams — a suffix of Dev gives "Tursio Dev". Leave blank for plain "Tursio". Useful for running a pilot app alongside a production one. |
| Azure resource suffix | Names your Azure resources (acme produces botacme). Lower-case letters and digits only. Choose this once — changing it later and reinstalling creates a second, separate deployment rather than renaming the first. |
To change any of them, re-run the setup script and choose "Redeploy to existing resource group". This updates your deployment in place without recreating Azure resources.
Hosting size. The Azure App Service plan defaults to B2, which suits most deployments. If you expect heavy use, raise the plan size before installing. Run a single instance — the agent tracks schedule timing and conversation history itself, so scaling out to multiple instances is not supported.
The Teams app listing
Edit appPackage/manifest.json in your installation package, then republish.
| Field | Notes |
|---|---|
name.short, name.full |
What users see and search for in Teams. |
description.short, description.full |
The listing text in the Teams app store. |
icons.color, icons.outline |
Replace the two image files in the same folder to use your own branding: a 192×192 color icon and a 32×32 transparent outline icon. |
bots[0].commandLists[].commands |
The suggested prompts offered to users in a new chat. This is the most valuable change you can make here: replacing the generic examples with questions specific to your data — "Top 10 customers by revenue this quarter" — tells new users what the agent can answer. Up to 10 prompts. |
bots[0].scopes |
Where the agent may be used: personal (one-to-one chat), team, groupChat, and copilot for Microsoft 365 Copilot. Remove any you do not want to offer. |
version |
Increase this every time you republish (for example 1.0.4 → 1.0.5). Teams rejects an update that reuses a version number. |
To publish the change, re-run the setup script and choose to redeploy. A Teams administrator then approves the update in the Teams admin center, under Manage apps. Users receive the new listing without reinstalling.
Runtime settings
These live in Azure as application settings and all have working defaults, so a new deployment needs none of them. Set one only when you want to change what it controls.
To change one: Azure portal → your App Service → Settings → Environment variables → App settings → + Add → Save. Saving restarts the app, so expect a few seconds of unavailability. If a value is invalid the app will not restart — see Troubleshooting.
Detail shown while the agent works
| Setting | Default | Effect |
|---|---|---|
SHOW_TOOL_PROGRESS |
true |
Shows live progress as the agent works, and attaches a collapsed "Show Tursio's work" panel under each answer listing the steps taken and how long each took. Set to false for a plainer experience. |
SHOW_REASONING |
false |
Also includes a summary of the model's reasoning in that panel. Adds noticeable delay and cost, and requires a model that supports reasoning. |
REASONING_EFFORT |
model default | none / low / medium / high / xhigh. Only has an effect when SHOW_REASONING is true. Left unset, current models often produce no summary at all, so set medium if you want reasoning shown consistently. |
Timeouts
| Setting | Default | Effect |
|---|---|---|
MCP_REQUEST_TIMEOUT_SECONDS |
180 |
How long the agent waits for one request to your Tursio server. Raise this if your database has slow queries and users see timeouts on questions that legitimately take longer. |
BACKGROUND_RUN_TIMEOUT_SECONDS |
900 (15 min) |
Overall limit for one question. Past this the agent stops and asks the user to narrow the question. Multiples of 60 read best, because the message quotes the limit in whole minutes. |
About long answers
Teams does not allow a reply to keep updating indefinitely, so a question still running after about 90 seconds gets a "⏳ Still working on this — I'll post the result here when it's ready" notice, and the finished answer arrives as a follow-up message in the same chat. This is normal, and it is what allows long questions to complete rather than fail.
Scheduled questions
Users can ask the agent to run a question on a schedule, such as "every weekday at 8am".
| Setting | Default | Effect |
|---|---|---|
SCHEDULE_TIMEZONE |
America/Los_Angeles |
Timezone used when a user gives a time without naming one ("every day at 9am"). Worth setting on every deployment — otherwise schedules run on US Pacific time. Use a standard zone name such as America/New_York, Europe/London, or Asia/Kolkata. A user who names a zone ("9am ET") always gets that zone. |
SCHEDULE_MAX_CONCURRENT_RUNS |
4 |
How many scheduled questions may run at the same moment. Round times like "9am daily" make simultaneous runs common, and each one costs an AI call plus a database query, so this keeps the deployment inside your AI provider's rate limit. Lower it if you see rate-limit errors; raise it only if your quota is generous. |
Schedules are stored durably and survive restarts and updates. A recurring schedule that fails repeatedly is paused automatically so it stops posting errors.
Changing the connection or model without reinstalling
MCP_SERVER_URL, TURSIO_API_KEY, OPENAI_MODEL_NAME, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, and OPENAI_API_KEY can also be updated here — handy after rotating a key. Make the same change in the setup script next time you run it, or your older answer will be restored.
The agent's instructions
instructions.txt in your installation package is the agent's brief: its persona, its formatting rules, and how it uses your Tursio data. It is plain text and you may edit it.
Test your edits
This is the most powerful customization available and also the easiest to get wrong, because it affects answer quality directly. Keep a copy of the original, change one thing at a time, and test with real questions afterwards.
Apply an edit by re-running the setup script and choosing to redeploy.
Good candidates for editing:
- Tone and persona — the opening sentence.
- Your vocabulary — a short glossary of your own terms, e.g. "active accounts" means accounts with a balance greater than zero.
- Formatting preferences — how strongly the agent prefers tables over charts, and how detailed its written summary should be.
- House rules — for example, always state the date range an answer covers.
Leave these parts alone unless Tursio advises otherwise — they are not style, they are wiring:
- The order in which the agent uses its tools. It stops working correctly without this.
- The list of chart types. The agent can only draw horizontal bar, vertical bar, line, and pie charts, plus tables; naming any other type causes failures.
- The instruction not to show SQL in answers, if you want queries kept out of view.
- The scheduling paragraph, which is what makes the agent describe a schedule and wait for confirmation instead of creating one silently.
Troubleshooting
| Symptom | Cause | What to do |
|---|---|---|
| The app does not restart after a settings change | An invalid value is rejected at startup by design, rather than causing odd behavior later | Open Log stream on the App Service to see which setting is at fault, then correct it. Usual causes: text in a numeric setting, an unrecognized REASONING_EFFORT value, or an empty Tursio API key. |
| Every question fails, but the app is running | The Tursio server URL is wrong or unreachable | Confirm the URL ends in /mcp and is reachable from Azure. |
| Timeouts on questions that should just be slow | The query exceeds the request timeout | Raise MCP_REQUEST_TIMEOUT_SECONDS. |
SHOW_REASONING is on but no reasoning appears |
The model returned no summary. Reasoning summaries need a capable model, and standard OpenAI additionally requires a verified organization | Set REASONING_EFFORT=medium and confirm your model and account support reasoning summaries. |
| Rate-limit errors when several schedules run together | More concurrent runs than your AI quota allows | Lower SCHEDULE_MAX_CONCURRENT_RUNS. |
| Suggested prompts unchanged after editing the manifest | The version number was not increased, or the update is not approved yet | Increase version, republish, and have an administrator approve it. |
| No messages reach the agent just after installing | Normal Teams propagation delay | Wait 5–10 minutes. Do not reinstall or delete the bot registration. |
Failures during installation, before the agent is deployed, are covered separately in the Teams Agent Preflight FAQ.