microsoft-graph

SKILL.md

Microsoft Graph

Interact with Microsoft 365 services via the Graph API.

Environment Variables

  • MS_GRAPH_TOKEN - OAuth2 bearer token (delegated or application)

My profile

curl -s -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  "https://graph.microsoft.com/v1.0/me" | jq '{displayName, mail, jobTitle}'

List emails (Outlook)

curl -s -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  "https://graph.microsoft.com/v1.0/me/messages?\$top=10&\$select=subject,from,receivedDateTime,isRead" | jq '.value[] | {subject, from: .from.emailAddress.address, received: .receivedDateTime, isRead}'

Send email (Outlook)

curl -s -X POST -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  -H "Content-Type: application/json" \
  "https://graph.microsoft.com/v1.0/me/sendMail" \
  -d '{
    "message": {
      "subject": "Hello from ThinkFleetBot",
      "body": {"contentType": "Text", "content": "Message body here"},
      "toRecipients": [{"emailAddress": {"address": "recipient@example.com"}}]
    }
  }'
echo "Email sent"

List calendar events

curl -s -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  "https://graph.microsoft.com/v1.0/me/events?\$top=10&\$select=subject,start,end,location&\$orderby=start/dateTime" | jq '.value[] | {subject, start: .start.dateTime, end: .end.dateTime, location: .location.displayName}'

Create calendar event

curl -s -X POST -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  -H "Content-Type: application/json" \
  "https://graph.microsoft.com/v1.0/me/events" \
  -d '{
    "subject": "Team Standup",
    "start": {"dateTime": "2025-01-15T09:00:00", "timeZone": "UTC"},
    "end": {"dateTime": "2025-01-15T09:30:00", "timeZone": "UTC"},
    "attendees": [{"emailAddress": {"address": "colleague@example.com"}, "type": "required"}]
  }' | jq '{id, subject, webLink}'

Send Teams message

curl -s -X POST -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  -H "Content-Type: application/json" \
  "https://graph.microsoft.com/v1.0/teams/TEAM_ID/channels/CHANNEL_ID/messages" \
  -d '{"body": {"content": "Hello from ThinkFleetBot!"}}' | jq '{id, createdDateTime}'

List Teams channels

curl -s -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  "https://graph.microsoft.com/v1.0/me/joinedTeams" | jq '.value[] | {id, displayName}'

List OneDrive files

curl -s -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  "https://graph.microsoft.com/v1.0/me/drive/root/children" | jq '.value[] | {name, size, lastModifiedDateTime, webUrl}'

Upload file to OneDrive

curl -s -X PUT -H "Authorization: Bearer $MS_GRAPH_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @/tmp/report.pdf \
  "https://graph.microsoft.com/v1.0/me/drive/root:/Documents/report.pdf:/content" | jq '{name, webUrl}'

Notes

  • Tokens expire; use refresh tokens or app-only auth for long-running operations.
  • Delegated tokens act on behalf of a user; application tokens act as the app.
  • Use $select, $filter, $top, $orderby OData query params for efficient queries.
  • Always confirm before sending emails, creating events, or posting messages.
Weekly Installs
1
First Seen
Mar 1, 2026
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1