· 7 min read
What's new with Microsoft 365 Declarative Agents with schema v1.4 and v1.5
Microsoft announced a new version of Declarative Agents Schema version 1.4 and 1.5 and this post explores the new changes and what it means for Microsoft 365 Copilot agents capabilities

Introduction
Over the last month, Microsoft announced a new version of Declarative Agents scheme version 1.4 & 1.5 and look to explore the new capabilities and what it means for Microsoft 365 Copilot agents. In summary, new capabilites added talked about include Copilot Fine Tuned Models, new behaviours such as control over model knowledge and suggestions, disclaimers, meetings and parts of files e.g. OneNote.
At the moment, the Microsoft 365 Agents toolkit (v6.0.3) still supports v1.4 at this time, not the latest v1.5 - but this isnt a big thing as we make small tweak to schema. To see the latest capabilities, you will need to update your agent to use this, this is reasonably straight forward, just makes these following changes to the top of the declarativeAgent.json file:
"$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.5/schema.json",
"version": "v1.5",So lets walk through what new features are present in these releases, I do assume you have some familarity with the M365 Agents toolkit, but if you are new to this, consider running through the excellant course on Copilot Dev Camp
Copilot Studio Custom Model
Announced at Microsoft Build, Copilot Fine Tuning Models allows you to tailor models using organisation data like fine-tuning models in AI Foundry but within the low code world.With fine tuning, you can select documents to include domain specific data into the model, allowing responses to be more specific using your organisation knowledge.
For the use of this within M365 Agents Toolkit based declarative agents, you need to get an ID of the fine tuned model and include that in the configuration declarativeAgent.json file. I cannot demo this at this time, I am not part of the EAP program nor have 5,000 Copilot licenses in my own tenant, but you can fine more details of the build session here: Introducing Microsoft 365 Copilot Tuning | Microsoft Blog
Example:
"capabilities": [
{
"name": "ScenarioModels",
"models": [
"861d6ce1-6577-4d3f-b448-ee6644c9b39c",
"d0e70d14-697d-4ff6-92d7-388f070de98a",
"c28a6efd-94ab-4eea-b517-812e24f09b7d"
]
}
]Note: The IDs above are assumed to be GUIDs however they may be in a different format. Visit the Copilot Studio portal for “Copilot Tuning” to find this ID.
To read more on the subject of the model fine tuning: Microsoft Copilot Fine Tuning Models. At the time of writing this blog post the model tuning is under preview and those part of the Early Access Program (EAP).
Behaviours - Discourage Model Knowledge
You now have the option to disable using the models own knowledge, which could contain out of date information and lead to a perceived hallucination giving the user a response they cannot use or action. This can be preferable if your knowledge specific targets something general like PowerShell and you require the most up to date information from a reference source as an example. To set this:
"behavior_overrides": {
"special_instructions": {
"discourage_model_knowledge": true
}
},Right, this will be interesting showing the results of this, so a non-deterministic response will not produce the exact response each time (a challange for testing), but it will be similar.
In the agent, I have this configured for “capabilities”, to use PnP Script samples as a reference.
"capabilities": [
{
"name": "WebSearch",
"sites": [
{
"url": "https://github.com/pnp/script-samples"
}
]
}
],Using the prompt: “Tell me a fun fact about bananas?”, interestingly always gave me a fun fact answer, but when using a prompt like “Is there a PowerShell script for reading the contents of Power Apps?”, we can start to see the difference especially when the prompt topic closely matches the agents purpose (based on observation).
Example with Domain Knowledge (“discourage_model_knowledge”: false)
The PowerShell modules for Power Apps for example, “Microsoft.PowerApps.Administration.PowerShell” have existed since 2019, and most models are trained on newer data so there is a likely hood that some information could be in the model itself. So when I prompt to find a script that reads the contents, I get this returned, see there are no citations implying that it is using its internal knowledge:

…

Example without Domain Knowledge (“discourage_model_knowledge”: true)
Example with the above setting on, without domain knowledge, as you can see the response reconises there is no direct citation (feels new in the response citations), but similar content within the repository (see citations), that could potentially be a match and does not offer suggestions from its own data.

You can start to see the difference in the response output, from observation it will try to use similar data from the source references but not the model knowledge.
Behaviours - Suggestions
Suggestions are ideas of how you can continue the conversation with the agent. These features are enabled by default
"behavior_overrides": {
"suggestions": {
"disabled": true
}
},So with this prompt: “Write a code sample for the following purpose: Find an item in SharePoint”, I get a response and some suggestions at the bottom near the prompt input box:

Personally, I have never use them, I subconsciously filter them out as noise.
Disclaimers
Disclaimers are like any other legal conditions on the app, thie UI has changed a couple of times but this can be set by updating the declarativeAgent.json:
"disclaimer": {
"text": "This declarative agent and its samples are provided as is without warranty of any kind, either express or implied, including any implied warranties of fitness for a particular purpose, merchantability, or non-infringement."
},
and would look like this in overview, in very very small text (10px - my eyesight isn’t as good for reading text this small as it used to be):

And if you click the read more link you are presented with a dialog for readable and full text:

Meetings (v1.5 Only)
You have the ability to reference your meetings in the agent, this is simple to add as a data source (i’ve included the schema change too, to enable this capability):
{
"$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.5/schema.json",
"version": "v1.5",
...
"capabilities": [
{
"name": "Meetings"
}
]
}
For this, I used the M365 Community Calls as a series to reference in my research tenant (which led to another blog post since I keep forgetting how to import an ICS file).
Example: 
This is a great addition, if you are looking for incorporating your meeting schedules in agents focused around your activity.
Parts in SharePoint
This is an interesting option for very specifically using a OneNote page, it is not mentioned in the docs whether sections can be referenced here as well.
So in order to use this option, there are a few bits of data you need. To obtain this, I used the Microsoft Graph Explorer to search for OneNote pages in my own OneDrive for test content.
If you want to explore this yourself or grab the part ID of the item you want to reference, navigate here: https://developer.microsoft.com/graph/graph-explorer?request=me%2Fonenote%2Fpages&method=GET&version=beta&GraphUrl=https://graph.microsoft.com, an example page ID
1-0fd7c7c964754632ab292680a7552667!14-0b171858-50df-4527-911d-57a558183699For other properties such as Site ID, I used search to query the location, using this link: https://developer.microsoft.com/graph/graph-explorer?request=search%2Fquery&method=POST&version=v1.0&GraphUrl=https://graph.microsoft.com&requestBody=…
Once you have the IDs for the agent using a combination of the above Graph Explorer endpoints, you can configure as below:
"capabilities": [
{
"name": "OneDriveAndSharePoint",
"items_by_sharepoint_ids": [
{
"site_id": "f5649d2b-1c0d-4f5b-ae28-0923c37abefa",
"list_id": "7e353c43-9929-43e5-a565-7d67b611b413",
"unique_id": "5442e895-d2fb-50c5-945f-0fd01665a0ad",
"part_id": "1-0fd7c7c964754632ab292680a7552667!14-0b171858-50df-4527-911d-57a558183699",
"part_type": "OneNotePart"
}
]
}
]and when you provision in M365 Agents Toolkit and use the agent, run a query to see the results:

Sweet!
Conclusion
There are some great new additions to the schema, although there are not many examples or detail in the documentation, leaving some folks to figure how to use these new capabilities and what they bring to the experience. There are some features such as the Copilot Fine Tuning look great however many smaller organisations cannot yet try out due to the license requirement, but keep watch as this goes towards Global Aavailability (my guess is at Ignite, following the typical release patterns). Loving the continued innovation and expandsion of data sources! 🥳
If you are looking for more examples of agent capabilities, check out the Copilot Pro Dev Samples repository for inspiration: Copilot Pro Dev Samples | GitHub or Sample Solution Gallery | Microsoft Adoption
Resources
The following resource could be useful for you to learn further:
- Declarative agent schema 1.5 for Microsoft 365 Copilot | Microsoft Learn
- Declarative agent schema 1.4 for Microsoft 365 Copilot | Microsoft Learn
- Copilot Developer Camp
- Use the Microsoft Search API to search OneDrive and SharePoint content | Microsoft Graph Docs
- Use the OneNote REST API | Microsoft Graph Explorer
- Introducing Microsoft 365 Copilot Tuning | Microsoft Tech Community
Remove| Note: include MVP tracking code: ?WT.mc_id=M365-MVP-5003816
Enjoy!