Skip to main content

Agent-first CLI for Microsoft 365 Outlook on the web endpoints

Project description

m365-owa-cli

m365-owa-cli is a personal, agent-first Python CLI for Microsoft 365 Outlook workflows through Outlook on the web / OWA internal service endpoints.

The current command surface is calendar-focused, but the package name leaves room for mail and tasks if the same OWA-authenticated endpoint strategy proves useful there. Microsoft Graph is intentionally out of scope.

Examples

m365-owa-cli capabilities
m365-owa-cli schema event
m365-owa-cli auth set-token --connection work
m365-owa-cli auth bookmarklet --connection work --raw
m365-owa-cli auth list-connections
m365-owa-cli events list --connection work --day 2026-04-24
m365-owa-cli events delete --connection work --id AAMk... --confirm-event-id AAMk...

Commands emit JSON by default. Use --pretty where supported for local human-readable output.

Configuration

Tokens are stored as plaintext files under:

~/.config/m365-owa-cli/connections/<connection>.token

Tests and automation can override the config root with M365_OWA_CONFIG_DIR.

Manual Token Capture

Generate a local-only bookmarklet helper:

m365-owa-cli auth bookmarklet --connection work --raw

Create a browser bookmark with the generated value as the URL, open Outlook on the web, click the bookmarklet, then refresh or open Calendar. If OWA sends an Authorization: Bearer ... header to /owa/service.svc, the helper displays it for copying into auth set-token.

Releases

New versions are published to PyPI from GitHub Actions when a v* tag is pushed. The workflow uses PyPI trusted publishing against the pypi environment in this repository, so no long-lived PyPI API token is stored in GitHub.

Before the first release, configure a pending trusted publisher on PyPI:

  • PyPI project name: m365-owa-cli
  • Owner: okms
  • Repository: m365-owa-cli
  • Workflow: publish.yml
  • Environment: pypi

Release flow:

# bump version in pyproject.toml, commit
git tag vX.Y.Z
git push origin main --tags

The .github/workflows/publish.yml workflow runs tests, builds the source and wheel distributions, checks them with Twine, and publishes them to PyPI. Tag-less runs can also be triggered manually from the Actions tab.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

m365_owa_cli-0.1.0.tar.gz (43.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

m365_owa_cli-0.1.0-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file m365_owa_cli-0.1.0.tar.gz.

File metadata

  • Download URL: m365_owa_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 43.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for m365_owa_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 44eba8d63361d2c63b0daf6218327a11745f9481fcedf0dfcd97630c236b1388
MD5 0f955960d307a9273151794fcd8c7212
BLAKE2b-256 410415ace5689c91214e84e082ae2c0303f4cb473132a59b991b06247ee7b453

See more details on using hashes here.

File details

Details for the file m365_owa_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: m365_owa_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for m365_owa_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2bffea7909e1355de1d87065c692add54586be4ae2b5af326fad6b096639e4d0
MD5 de555e14150249aaf495183311096945
BLAKE2b-256 03a72933db5ddfad502b8fe3da3573d4de8ea5adb35400b1d6af805b1ee386a9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page