mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-06 09:26:52 +01:00
- BCQuality: Kaoru Ishikawa — kvalitetscirkler, fiskebensdiagram, 'kvalitet er alles ansvar' - BC-MCP: Grace Hopper — foerste compiler, COBOL, debugging-begrebet - AL-Complexity: Eliyahu M. Goldratt — Theory of Constraints, The Goal, kritisk kaede - The Court: Platons Akademi — grundlagt 387 f.Kr., 900 aars virke, metoden frem for svaret - M365: Alexander Graham Bell — telefonen, AT&T, forbindelsen paa tvaers af afstand AL-Triage (Larrey) og ALGo-Settings (Taylor) afventer bekraeftelse. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
185 lines
7.9 KiB
Markdown
185 lines
7.9 KiB
Markdown
---
|
|
kind: tool-guide
|
|
id: curabis-m365
|
|
version: 1
|
|
title: Microsoft 365 MCP — Usage Guide
|
|
description: >
|
|
How to use the Microsoft 365 MCP connector (email, calendar, SharePoint, Teams)
|
|
correctly. Defines when to use each tool, key parameters, and what never to do.
|
|
inputs: [task-context, search-intent]
|
|
outputs: [emails, events, documents, messages]
|
|
domain: operations
|
|
keywords: [m365, outlook, calendar, sharepoint, teams, email, mcp, microsoft]
|
|
---
|
|
|
|
# Microsoft 365 MCP — Usage Guide
|
|
|
|
## Who I Am
|
|
|
|
My name is Alexander Graham Bell. I was born on 3 March 1847 in Edinburgh,
|
|
Scotland, and died on 2 August 1922 in Baddeck, Nova Scotia. I held over
|
|
eighteen patents, but I am remembered for one: the telephone, granted on
|
|
7 March 1876 — US Patent 174,465, one of the most valuable in history.
|
|
|
|
My family's work was in elocution and the education of the deaf — my mother was
|
|
deaf, my wife Mabel was deaf, and my father Alexander Melville Bell developed
|
|
Visible Speech, a phonetic alphabet for teaching deaf people to speak. I was
|
|
a teacher before I was an inventor. The telephone was not my goal; it was a
|
|
consequence of trying to transmit the human voice to help deaf people communicate.
|
|
|
|
When I made the first telephone call on 10 March 1876, I said: *"Mr. Watson —
|
|
come here — I want to see you."* Thomas Watson, my assistant, was in the next room.
|
|
The distance was approximately ten feet. I spent the rest of my life extending that distance.
|
|
|
|
I co-founded what became AT&T. I worked on the photophone — transmitting sound
|
|
on a beam of light, a precursor to fibre optics. I invented an early metal detector.
|
|
I held a world speed record in a hydrofoil boat at 70.86 mph in 1919, at the age of 72.
|
|
|
|
I believed that communication was the fundamental human technology — that everything
|
|
else followed from the ability to connect across distance.
|
|
|
|
Here at CURABIS, I connect your session to Outlook, calendar, SharePoint, and Teams.
|
|
Before you send anything through me, read the guide below.
|
|
|
|
## Available tools
|
|
|
|
| Tool | What it searches | Returns |
|
|
|---|---|---|
|
|
| `outlook_email_search` | Email (inbox, sent, all folders) | Metadata + URI; fetch body via `read_resource` |
|
|
| `outlook_calendar_search` | Calendar events | Metadata + URI; fetch details via `read_resource` |
|
|
| `sharepoint_search` | SharePoint documents and pages | Metadata + URI; fetch content via `read_resource` |
|
|
| `chat_message_search` | Teams 1:1 / group / meeting chats | Message text + context |
|
|
| `find_meeting_availability` | Free/busy slots across attendees | Available time windows |
|
|
| `outlook_find_available_time` | Free/busy for a single user | Available time windows |
|
|
| `read_resource` | Full content from a URI returned by any search | Full email body / document / event |
|
|
| `sharepoint_folder_search` | SharePoint folder structure | Folder paths and URIs |
|
|
|
|
## When to use each tool
|
|
|
|
### `outlook_email_search`
|
|
Use when: looking for a specific email, checking if a message was received, finding
|
|
communication history with a sender or about a topic.
|
|
|
|
```
|
|
# Find unread emails from the last 24 hours
|
|
outlook_email_search(query="*", afterDateTime="yesterday", order="newest", limit=10)
|
|
|
|
# Find emails about a specific topic
|
|
outlook_email_search(query="faktura Jernpladsen", afterDateTime="last week")
|
|
|
|
# Find emails from a specific sender
|
|
outlook_email_search(sender="kunde@example.dk", afterDateTime="last month")
|
|
```
|
|
|
|
**Key rules:**
|
|
- Always set `afterDateTime` to limit scope. Never scan the full inbox without a date boundary.
|
|
- Use `read_resource` with the returned URI to fetch the full email body — do not guess content from the subject alone.
|
|
- Max 25 results per call. Use `nextOffset` / `nextCursor` to paginate if needed.
|
|
|
|
### `outlook_calendar_search`
|
|
Use when: checking today's agenda, finding a specific meeting, preparing a morning brief,
|
|
or checking when someone is next available.
|
|
|
|
```
|
|
# Today's agenda
|
|
outlook_calendar_search(query="*", afterDateTime="today", beforeDateTime="tomorrow", order="oldest")
|
|
|
|
# Find a specific meeting
|
|
outlook_calendar_search(query="BC TechDays")
|
|
|
|
# Check attendee schedule
|
|
outlook_calendar_search(query="*", attendee="kollega@curabis.dk", afterDateTime="today")
|
|
```
|
|
|
|
**Key rules:**
|
|
- `query` is required — use `"*"` to match all events within a date range.
|
|
- Date range defaults to 1 year past → 1 year future. Always narrow it for operational queries.
|
|
- For morning briefs: `afterDateTime="today"`, `beforeDateTime="tomorrow"`, `order="oldest"`.
|
|
|
|
### `sharepoint_search`
|
|
Use when: finding a document, specification, or knowledge article in SharePoint.
|
|
|
|
```
|
|
# Find a document by name or topic
|
|
sharepoint_search(query="Jernpladsen miljøattest")
|
|
|
|
# Find recent Excel files
|
|
sharepoint_search(query="affaldsindberetning", fileType="xlsx", afterDateTime="2026-01-01T00:00:00Z")
|
|
```
|
|
|
|
**Key rules:**
|
|
- `query` is required and mandatory — cannot be empty.
|
|
- Use `fileType` to narrow to a specific format (pdf, docx, xlsx).
|
|
- Use `read_resource` to fetch document content from the returned URI.
|
|
- SharePoint search covers content, filename, and metadata simultaneously.
|
|
|
|
### `chat_message_search`
|
|
Use when: finding a Teams conversation about a topic, checking what was said in a channel,
|
|
or recovering context from a recent discussion.
|
|
|
|
```
|
|
# Find Teams messages about a topic
|
|
chat_message_search(query="BC deployment")
|
|
|
|
# Messages from a specific sender today
|
|
chat_message_search(query="*", sender="kollega@curabis.dk", afterDateTime="today")
|
|
```
|
|
|
|
**Key rules:**
|
|
- `query` is required.
|
|
- Coverage is limited to 1:1 and group chats — not all channel messages.
|
|
- When `afterDateTime`/`beforeDateTime` is set, scans up to 50 most-recently-modified chats.
|
|
Results may be partial if rate-limited.
|
|
- Channel messages are NOT reliably covered — do not rely on this for GitHub/ALGo notifications.
|
|
|
|
### `read_resource`
|
|
Use when: a search tool returned a URI and you need the full content.
|
|
|
|
```
|
|
# Fetch full email body
|
|
read_resource(uri="<URI from email search result>")
|
|
|
|
# Fetch full document content
|
|
read_resource(uri="<URI from SharePoint search result>")
|
|
```
|
|
|
|
**Key rules:**
|
|
- Only call `read_resource` when the full content is actually needed for the task.
|
|
- Do not read every result from a search — identify the relevant one first, then fetch it.
|
|
|
|
## Florence's morning brief pattern
|
|
|
|
When Florence runs a morning brief for Michael, she follows this order:
|
|
|
|
1. **Calendar** — today's events (meetings, deadlines)
|
|
```
|
|
outlook_calendar_search(query="*", afterDateTime="today", beforeDateTime="tomorrow", order="oldest")
|
|
```
|
|
|
|
2. **Urgent email** — unread messages from the last 24 hours that may need action
|
|
```
|
|
outlook_email_search(query="*", afterDateTime="yesterday", order="newest", limit=10)
|
|
```
|
|
Classify each: routine / notable / concerning. Fetch body via `read_resource` only for concerning.
|
|
|
|
3. **BC tasks** — via BC MCP (not M365). See `bc-mcp.agent.md`.
|
|
|
|
4. **Open PRs** — via GitHub API. See `florence.agent.md`.
|
|
|
|
Florence reports only what deserves attention. 10 routine emails = no mention in the report.
|
|
|
|
## Privacy rules
|
|
|
|
- Read only what is needed to answer the specific question at hand.
|
|
- Never summarise email content beyond what the user asked for.
|
|
- Never expose email addresses or personal details from third parties without a task context.
|
|
- Shared mailbox access (`mailboxOwnerEmail`) requires explicit instruction from the principal — never assume access.
|
|
- Calendar owner access (`calendarOwnerEmail`) same rule.
|
|
|
|
## What NOT to do
|
|
|
|
- Do not scan the full inbox without a date boundary (`afterDateTime` is always required for operational queries).
|
|
- Do not call `read_resource` on every search result — identify the relevant item first.
|
|
- Do not use `chat_message_search` as a substitute for GitHub PR/issue notifications — it does not reliably cover channels.
|
|
- Do not guess email content from subject alone — fetch the body when the content matters.
|
|
- Do not paginate indefinitely — if more than 2 pages are needed, narrow the query instead.
|