- 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
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
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
- Compose email:
send_email("Subject", "Body content", ["recipient@example.com"]) - For complex emails with attachments, use
create_draft()first, thensend_draft()
Organize inbox
- List folders:
list_folders()to see available folders - Create new folder:
create_folder("Project Alpha") - Move messages:
move_messages(["msg-id-1", "msg-id-2"], "new-folder-id")
Process meeting invitation
- Check invitation:
get_message(message_id)to view details - Accept:
accept_event(event_id, response_comment="I'll attend") - Or decline:
decline_event(event_id, response_comment="Cannot make it")
Search for old emails
- Use
search_mail("project deadline", top=50)for broad search - Use
list_messages(folder_id="sent-items")to check sent folder - Combine with filters:
search_mail("report", folder_id="archive")
Create recurring meeting
- Use
create_event()with appropriatestart_timeandend_time - Set up multiple events or use calendar-specific recurrence features
Manage project correspondence
- Create project folder:
create_folder("Q4 Project") - Search for related emails:
search_mail("Q4 Project") - Move relevant emails:
move_messages(message_ids, "project-folder-id") - Track contacts:
create_contact("John", "Doe", ["john@partner.com"])
IDs and Discovery
Outlook Graph API uses resource IDs. When operations require IDs:
- Messages: Start with
list_messages()to get message IDs - Folders: Use
list_folders()to discover folder IDs - Events: Use
list_events()to get event IDs - 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.