You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
0.9.0 - 2026-08-17
Added
graph_get_file_bytes downloads a file as base64-encoded bytes in a contentBytes field,
capped at 4MB, the same shape graph_get_mail_attachment already used. graph_get_file_content
only ever hands back a downloadUrl for a binary file, so a host without an HTTP fetch tool
could not read a PDF at all.
Changed
graph_get_file_content, graph_get_file_bytes, graph_list_files, and graph_search_files
take an optional drive_id, so they reach SharePoint document libraries and other people's
OneDrive instead of only /me/drive. A Teams channel file or a shared attachment previously
returned 404, because a driveItem ID only resolves under the drive that owns it.
graph_get_channel_files_folder, graph_list_shared_files, and graph_resolve_share_link
now say how to carry parentReference.driveId into the file tools, and that Teams chat
attachments never appear in sharedWithMe. The channel-folder description previously steered
callers straight into the 404 above.
Removed docs/superpowers/ from version control and ignored it. Those six plan and design
documents were point-in-time internal notes totalling 240KB, referenced by nothing in the
build, tests, or runtime, and already contradicted by later releases. They remain in git
history.
Install documentation now uses the GitHub marketplace for Codex as well as Claude Code. codex plugin marketplace add accepts owner/repo[@ref] and Git URLs, so requiring a local
clone was never necessary; both host sections keep the local path as the plugin-development
route. Verified by installing 0.8.1 into a clean CODEX_HOME from JustStas/Graph-MCP.
The Codex plugin manifest now states what the plugin can do beyond reading — send and delete
mail, cancel meetings, edit and delete Teams messages, change presence and automatic replies,
and create, move, and delete files — so the consent prompt is not misleading. The previous
wording dated from the 44-tool release.
The bundled plugin README said "exactly 44 tools" and now says 126.
Fixed
graph_resolve_share_link and graph_get_file_content now really return a download URL.
Graph drops @microsoft.graph.downloadUrl from any response that carries an explicit $select, and naming the annotation in that $select does not bring it back — the annotation
hangs off the content stream property, so content.downloadUrl is what selects it. graph_get_file_content had asked for the annotation by name since 0.7.0, which means its
binary branch returned downloadUrl: null for every PDF, image, and Office document it was
ever pointed at, while still telling the caller to use that URL. Verified against a live
tenant: both tools previously returned no URL, and both now return one.
The release helper now retries the post-publish registry readback six times with exponential
backoff, capped at 30 seconds, instead of three times one second apart. npm's registry is
eventually consistent, so a successful publish routinely became visible after the old
three-second budget expired — the 0.8.1 release reported failure even though the package had
published correctly, and 0.7.0 needed three attempts for the same reason.