Skip to content

feat: adds da-foodbank-friend sample#122

Open
leeford wants to merge 1 commit intopnp:mainfrom
leeford:da-foodbank-friend
Open

feat: adds da-foodbank-friend sample#122
leeford wants to merge 1 commit intopnp:mainfrom
leeford:da-foodbank-friend

Conversation

@leeford
Copy link
Copy Markdown
Contributor

@leeford leeford commented Mar 25, 2026

  • Adds a new sample called da-foodbank-friend

Copilot AI review requested due to automatic review settings March 25, 2026 13:06
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-friend sample 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.md sample 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.

Comment on lines +32 to +33
- 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
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
- 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

Copilot uses AI. Check for mistakes.
"startDateTime",
"endDateTime",
"attendeeEmails",
"isOnlineMeeting"
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
"isOnlineMeeting"
"isOnlineMeeting",
"location",
"body"

Copilot uses AI. Check for mistakes.
homepage:
type: string
format: uri
description: Food bank's homepage URL
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
description: Food bank's homepage URL
description: Food bank's homepage URL
example: https://www.givefood.org.uk/
components:
schemas: {}

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants