{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_s4p43prw43q6","handle":"keos-microsoft365-mcp","url":"https://wellknown.network/agents/keos-microsoft365-mcp","links":{"self":"https://wellknown.network/agents/keos-microsoft365-mcp/record.json","html":"https://wellknown.network/agents/keos-microsoft365-mcp","markdown":"https://wellknown.network/agents/keos-microsoft365-mcp/record.md","api":"https://wellknown.network/api/v1/agents/keos-microsoft365-mcp","status":"https://wellknown.network/api/v1/agents/keos-microsoft365-mcp/status","claim":"https://wellknown.network/agents/keos-microsoft365-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/keos-microsoft365-mcp/claim.json","badge":"https://wellknown.network/agents/keos-microsoft365-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/keos-microsoft365-mcp/history","tools":"https://wellknown.network/api/v1/agents/keos-microsoft365-mcp/tools"},"ard":{"identifier":"urn:air::server:keos-microsoft365-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"keos-microsoft365-mcp","summary":"Stateless Microsoft 365 (Graph) MCP server: SharePoint, OneDrive, Mail, Calendar, Users, Groups, plus Office/PDF text extraction.","description":"# Microsoft 365 MCP Server\n\nAn [MCP](https://modelcontextprotocol.io) server that exposes Microsoft 365\noperations as tools, backed by Microsoft Graph — SharePoint, OneDrive, Mail,\nCalendar, Users & Directory, and Groups — plus text extraction from Office/PDF\ndocuments and mail attachments.\n\nIt is **stateless** and **does not do any OAuth**: your application already holds\na valid Microsoft Graph access token, and it supplies that token with each\nrequest. No re-authentication, no token exchange, no gateway.\n\n## Why this exists\n\nIf you already obtained a Microsoft Graph delegated access token\n(`aud = https://graph.microsoft.com`) via a 3LO flow in your app, you cannot feed\nthat token into an On-Behalf-Of (OBO) exchange — Entra requires the OBO assertion\nto target a middle-tier app, not Graph itself. This server avoids the problem\nentirely by calling Graph directly with the token you already have.\n\n## Install & run with uvx\n\nThe server ships as a `uvx`-runnable package. [`uv`](https://docs.astral.sh/uv/)\nbuilds and runs it in an isolated environment on demand — no manual `pip install`.\n\nOnce published to an index you can run it by name:\n\n```bash\nuvx keos-microsoft365-mcp\n```\n\n## Providing the access token\n\nThe token is resolved per request in this order:\n\n1. **Explicit argument** — pass `access_token` in the tool call arguments.\n2. **Bearer header** — when running over HTTP, send `Authorization: Bearer <token>`.\n3. **Environment** — `GRAPH_ACCESS_TOKEN` (or the legacy `SHAREPOINT_ACCESS_TOKEN`).\n\nThe token must be a Microsoft Graph delegated access token\n(`aud = https://graph.microsoft.com`). Grant the scopes for the tools you use:\n\n| Area | Delegated scopes |\n|------|------------------|\n| SharePoint / OneDrive / Groups files | `Sites.Read.All` / `Sites.ReadWrite.All`, `Files.Read.All` / `Files.ReadWrite.All`, `Group.Read.All` |\n| Mail | `Mail.Read`, `Mail.ReadWrite`, `Mail.Send` |\n| Calendar | `Calendars.ReadWrite` |\n| Users & Directory | `User.Read.All`, `Directory.…","publisher":null,"homepage":"https://github.com/KaarProducts/keos-mcp","repository":"https://github.com/KaarProducts/keos-mcp","version":"0.1.1","license":"MIT","protocols":["mcp"],"tags":["mcp","microsoft-graph","microsoft365","onedrive","outlook","sharepoint"],"pricing":null,"endpoints":[{"url":"pypi:keos-microsoft365-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":1,"provenance":"declared"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.997,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":0.802,"provenance":"derived"}],"categories":["dev","knowledge","productivity","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"keos-microsoft365-mcp","registry":"pypi","observedAt":"2026-10-28T08:28:03.405Z","publishedAt":"2026-09-25T08:18:33.662627Z","latestVersion":"0.1.1"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"keos-microsoft365-mcp","url":"https://pypi.org/project/keos-microsoft365-mcp/","firstSeenAt":"2026-09-28T00:24:06.723Z","fetchedAt":"2026-10-28T08:26:27.038Z","normalizedAt":"2026-10-28T08:26:27.038Z"}]},"firstSeenAt":"2026-09-28T00:24:06.723Z","updatedAt":"2026-10-28T08:28:03.405Z"}