Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new Microsoft 365 Agents Toolkit sample (da-foodbank-friend) that demonstrates a declarative agent integrating an external OpenAPI (GiveFood) with Microsoft 365 Remote MCP servers (Outlook + SharePoint), and registers the sample in the repo’s main sample list.
Changes:
- Introduces the full
da-foodbank-friendsample folder (manifest, declarative agent definition, instructions, plugins, env example, VS Code config). - Adds an OpenAPI definition + plugin wiring for the GiveFood API, and Remote MCP plugin wiring for Outlook Calendar and SharePoint Lists.
- Updates the root
README.mdsample table to include Foodbank Friend (and fixes the<details>closing markup placement).
Reviewed changes
Copilot reviewed 16 out of 20 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Adds the new sample to the repository-wide sample list and fixes <details> closing markup formatting. |
| samples/da-foodbank-friend/README.md | Sample documentation, setup steps, and feature overview. |
| samples/da-foodbank-friend/m365agents.yml | Agents Toolkit provisioning/publishing workflow for the sample. |
| samples/da-foodbank-friend/env/.env.dev.example | Example environment variables for Teams/SharePoint/OAuth plugin vault references. |
| samples/da-foodbank-friend/.gitignore | Ignores build/artifacts and local env files for the sample. |
| samples/da-foodbank-friend/.vscode/settings.json | VS Code workspace settings for the sample. |
| samples/da-foodbank-friend/.vscode/launch.json | VS Code launch configs for previewing the agent in Copilot. |
| samples/da-foodbank-friend/.vscode/extensions.json | VS Code extension recommendations for working with the sample. |
| samples/da-foodbank-friend/assets/sample.json | Sample catalog metadata used by the repo’s sample indexing. |
| samples/da-foodbank-friend/assets/example.gif | Sample thumbnail/preview media. |
| samples/da-foodbank-friend/assets/solution-diagram.png | Architecture/solution diagram referenced by the sample README. |
| samples/da-foodbank-friend/appPackage/manifest.json | Teams app manifest referencing the declarative agent package. |
| samples/da-foodbank-friend/appPackage/declarativeAgent.json | Declarative agent definition wiring instructions + plugins/actions. |
| samples/da-foodbank-friend/appPackage/instruction.txt | Detailed agent behavioral/workflow instructions. |
| samples/da-foodbank-friend/appPackage/ai-plugin-givefood.json | OpenAPI plugin wrapper definition for GiveFood. |
| samples/da-foodbank-friend/appPackage/apiSpecificationFile/givefood-openapi.yaml | GiveFood OpenAPI specification (currently incomplete/truncated). |
| samples/da-foodbank-friend/appPackage/ai-plugin-outlook.json | Remote MCP plugin definition for Outlook Calendar event creation. |
| samples/da-foodbank-friend/appPackage/ai-plugin-sharepoint.json | Remote MCP plugin definition for SharePoint list item create/query. |
| samples/da-foodbank-friend/appPackage/color.png | Teams app icon (color). |
| samples/da-foodbank-friend/appPackage/outline.png | Teams app icon (outline). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - startDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SS with timezone offset, e.g. 2026-03-29T10:00:00+01:00 (use +01:00 for BST March-October, +00:00 for GMT November-February) | ||
| - endDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SS with timezone offset, e.g. 2026-03-29T11:00:00+01:00 |
There was a problem hiding this comment.
The instructions for choosing the timezone offset for UK times are inaccurate. BST doesn’t apply to all of March–October (it starts/ends on the last Sunday of March/October), so this guidance can schedule events an hour off near DST boundaries. Consider instructing the agent to use the user’s locale/time zone, or explicitly reference the actual BST/GMT transition rule (or use Europe/London with a time-zone aware conversion).
| - startDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SS with timezone offset, e.g. 2026-03-29T10:00:00+01:00 (use +01:00 for BST March-October, +00:00 for GMT November-February) | |
| - endDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SS with timezone offset, e.g. 2026-03-29T11:00:00+01:00 | |
| - startDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SS with timezone offset, e.g. 2026-03-29T10:00:00+01:00. Always use the correct timezone offset for the user's local time; for UK users, treat times as Europe/London so the system automatically applies GMT or BST on the right dates. | |
| - endDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SS with the appropriate timezone offset for the same time zone, e.g. 2026-03-29T11:00:00+01:00 |
| "startDateTime", | ||
| "endDateTime", | ||
| "attendeeEmails", | ||
| "isOnlineMeeting" |
There was a problem hiding this comment.
createEvent defines location and body parameters (and the agent instructions require both), but they are not listed in the required array. This makes it easy for calls to pass validation without including the address/details, resulting in incomplete calendar entries. Consider adding location and body to required so the contract matches the intended workflow.
| "isOnlineMeeting" | |
| "isOnlineMeeting", | |
| "location", | |
| "body" |
| homepage: | ||
| type: string | ||
| format: uri | ||
| description: Food bank's homepage URL |
There was a problem hiding this comment.
The OpenAPI spec appears to be truncated/incomplete: the document ends immediately after defining urls.homepage and does not close the nested properties/items/responses objects. As-is, this YAML won't parse as valid OpenAPI 3.0 and the GiveFood plugin runtime will fail to load. Please complete the schema by adding the missing properties (or closing braces) and ensure the YAML document terminates with a valid OpenAPI structure.
| description: Food bank's homepage URL | |
| description: Food bank's homepage URL | |
| example: https://www.givefood.org.uk/ | |
| components: | |
| schemas: {} |
da-foodbank-friend