Files
AGENTS/skills/outlook/SKILL.md
m3tm3re fddc22e55e Add outlook skill with Graph API documentation
- Create skills/outlook/SKILL.md with comprehensive Outlook Graph API documentation
- Document mail CRUD operations: list, get, create, send, reply, forward, update, delete
- Document folder management: list, create, update, delete, move, copy
- Document calendar events: list, get, create, update, delete, accept/decline
- Document contacts: list, get, create, update, delete, folder management
- Include search operations for mail, contacts, and events
- Provide common workflows for email, inbox organization, meeting invitations
- Include IDs and discovery guidance
- Set compatibility to opencode
- Close issue AGENTS-ch2
2026-02-03 18:55:15 +01:00

7.4 KiB

name, description, compatibility
name description compatibility
outlook Outlook Graph API email integration via MCP. Use when: (1) Reading or sending emails, (2) Managing inbox folders and organization, (3) Working with calendar events, (4) Managing contacts, (5) Searching mail content, (6) Managing email rules and filters. Triggers: 'email', 'Outlook', 'inbox', 'calendar', 'contacts', 'folder', 'mail', 'message'. opencode

Outlook Graph API Integration

Integration with Microsoft Outlook via Graph API through MCP. Provides comprehensive access to email, calendar, contacts, and folder management.

Core Operations

Mail Access

List messages: list_messages(folder_id=None, top=25, skip=0) - Returns messages from a folder. Use folder_id to target specific folders (defaults to Inbox).

Get message: get_message(message_id) - Full message details including body, headers, and attachments.

Get message content: get_message_content(message_id) - Retrieve message body (HTML/Text).

List attachments: list_attachments(message_id) - All attachments for a message.

Get attachment: get_attachment(message_id, attachment_id) - Download attachment content.

Mail CRUD

Create draft: create_draft(subject, body, to_recipients, cc_recipients=None, bcc_recipients=None, importance=None, is_html=True) - Create email draft.

Send email: send_email(subject, body, to_recipients, cc_recipients=None, bcc_recipients=None, importance=None, is_html=True) - Send email directly.

Send draft: send_draft(message_id) - Send an existing draft.

Reply to email: reply_to_message(message_id, body, is_html=True) - Reply to sender.

Reply all: reply_all_message(message_id, body, is_html=True) - Reply to sender and all recipients.

Forward email: forward_message(message_id, to_recipients, body=None, is_html=True) - Forward message to new recipients.

Update message: update_message(message_id, subject=None, body=None, importance=None, is_read=None) - Update message properties.

Delete message: delete_message(message_id) - Move to deleted items.

Delete permanently: delete_message_permanently(message_id) - Permanently remove message.

Folder Management

List folders: list_folders() - All accessible folders including custom ones.

Get folder: get_folder(folder_id) - Folder details and metadata.

Create folder: create_folder(name, parent_folder_id=None) - Create new folder.

Update folder: update_folder(folder_id, name=None) - Rename folder.

Delete folder: delete_folder(folder_id) - Remove folder and all contents.

Move messages: move_messages(message_ids, destination_folder_id) - Move messages between folders.

Copy messages: copy_messages(message_ids, destination_folder_id) - Copy messages to another folder.

Calendar Events

List events: list_events(calendar_id=None, top=25, skip=0) - Events from calendar (defaults to primary calendar).

Get event: get_event(event_id) - Full event details including attendees and location.

Create event: create_event(subject, start_time, end_time, body=None, location=None, attendees=None, is_all_day=False) - Create calendar event.

Update event: update_event(event_id, subject=None, start_time=None, end_time=None, body=None, location=None, attendees=None) - Modify event.

Delete event: delete_event(event_id) - Remove event.

Accept event: accept_event(event_id, response_comment=None, send_response=True) - Accept meeting invitation.

Decline event: decline_event(event_id, response_comment=None, send_response=True) - Decline meeting invitation.

Tentatively accept: tentatively_accept_event(event_id, response_comment=None, send_response=True) - Tentatively accept invitation.

List calendars: list_calendars() - All user calendars.

Contacts

List contacts: list_contacts(folder_id=None, top=25, skip=0) - Contacts from folder (defaults to default contacts folder).

Get contact: get_contact(contact_id) - Full contact details.

Create contact: create_contact(given_name, surname, email_addresses, phone_numbers=None, business_address=None) - Create new contact.

Update contact: update_contact(contact_id, given_name=None, surname=None, email_addresses=None, phone_numbers=None, business_address=None) - Modify contact.

Delete contact: delete_contact(contact_id) - Remove contact.

List contact folders: list_contact_folders() - All contact folders.

Create contact folder: create_contact_folder(name) - Create new contact folder.

Search mail: search_mail(query, folder_id=None, top=25) - Search emails by content across folders.

Search contacts: search_contacts(query) - Search contacts by name, email, or other properties.

Search events: search_events(query) - Search calendar events by subject or location.

Common Workflows

Send an email

  1. Compose email: send_email("Subject", "Body content", ["recipient@example.com"])
  2. For complex emails with attachments, use create_draft() first, then send_draft()

Organize inbox

  1. List folders: list_folders() to see available folders
  2. Create new folder: create_folder("Project Alpha")
  3. Move messages: move_messages(["msg-id-1", "msg-id-2"], "new-folder-id")

Process meeting invitation

  1. Check invitation: get_message(message_id) to view details
  2. Accept: accept_event(event_id, response_comment="I'll attend")
  3. Or decline: decline_event(event_id, response_comment="Cannot make it")

Search for old emails

  1. Use search_mail("project deadline", top=50) for broad search
  2. Use list_messages(folder_id="sent-items") to check sent folder
  3. Combine with filters: search_mail("report", folder_id="archive")

Create recurring meeting

  1. Use create_event() with appropriate start_time and end_time
  2. Set up multiple events or use calendar-specific recurrence features

Manage project correspondence

  1. Create project folder: create_folder("Q4 Project")
  2. Search for related emails: search_mail("Q4 Project")
  3. Move relevant emails: move_messages(message_ids, "project-folder-id")
  4. Track contacts: create_contact("John", "Doe", ["john@partner.com"])

IDs and Discovery

Outlook Graph API uses resource IDs. When operations require IDs:

  1. Messages: Start with list_messages() to get message IDs
  2. Folders: Use list_folders() to discover folder IDs
  3. Events: Use list_events() to get event IDs
  4. Contacts: Use list_contacts() to get contact IDs

Most IDs are returned in list operations and can be used directly in CRUD operations.

Important Notes

Email body format: The is_html parameter controls whether email body is HTML (default) or plain text. HTML provides rich formatting but plain text is more universal.

Recipients format: Email addresses should be provided as arrays of strings: ["user1@example.com", "user2@example.com"].

Date/time format: All datetime values should be in ISO 8601 format (e.g., 2024-12-25T14:30:00).

Batch operations: Some operations like move_messages() and copy_messages() accept arrays of IDs for batch processing.

Pagination: List operations support top (max results) and skip (offset) parameters for handling large datasets.

Folder IDs: Common folder IDs include:

  • Inbox (default for most operations)
  • Sent Items
  • Drafts
  • Deleted Items
  • Archive

Use list_folders() to get exact IDs and discover custom folders.