Unified Mailbox Ai

v1.1.0

Unified mailbox AI for both Outlook and Gmail. Checks unread emails, summarizes new mail with AI, detects meeting invitations, checks calendar conflicts on b...

0· 181·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for l1tangdingzhen/unified-mailbox-ai.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Unified Mailbox Ai" (l1tangdingzhen/unified-mailbox-ai) from ClawHub.
Skill page: https://clawhub.ai/l1tangdingzhen/unified-mailbox-ai
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: EMAIL_MONITOR_TELEGRAM_USER
Required binaries: python3
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install unified-mailbox-ai

ClawHub CLI

Package manager switcher

npx clawhub@latest install unified-mailbox-ai
Security Scan
Capability signals
Requires OAuth token
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the implementation: Python script uses Microsoft Graph (msal + ms_tokens.json) for Outlook, the gog CLI for Gmail, and sends notifications to a Telegram chat ID (EMAIL_MONITOR_TELEGRAM_USER). Required binaries and env vars are coherent with the stated functionality.
Instruction Scope
SKILL.md and installer instruct the agent to read ms_tokens.json, modify ~/.openclaw/openclaw.json, call gog and outlook-graph scripts, and create cron entries. These actions are within the scope of an automated mailbox monitor, but notable security-relevant behaviors include: (1) the script updates openclaw.json with MS_GRAPH_ACCESS_TOKEN (persisting tokens to a global config); (2) the recommended cron setup uses an empty GOG_KEYRING_PASSWORD and exporting credentials in multiple places. These are expected for the skill but have privacy/operational implications the user should understand.
Install Mechanism
No remote downloads or opaque installers: the repository contains an installer script that copies files into ~/.openclaw, edits openclaw.json, optionally modifies ~/.bashrc and crontab, and can pip-install msal locally. This is a typical install pattern for user-local skills and does not pull arbitrary code at runtime.
Credentials
Requested env vars and files are proportional to function: EMAIL_MONITOR_TELEGRAM_USER (required) is needed to deliver notifications, EMAIL_MONITOR_GMAIL_ACCOUNT and MS_GRAPH_ACCESS_TOKEN (optional) are required for Gmail/Outlook. However, the script writes refreshed MS access tokens back into ~/.openclaw/openclaw.json which centralizes a sensitive token—this is convenient but elevates the blast radius if that file is accessible to other users or processes.
Persistence & Privilege
The installer can register the skill in the agent's skills list, append env exports to ~/.bashrc, and add a cron job — all with interactive prompts. The skill itself writes/reads files under ~/.openclaw (ms_tokens.json, openclaw.json, notified_emails.json). These behaviors are expected but grant the skill persistent presence and access to other OpenClaw configuration files, so users should verify file permissions and consent during installation.
Assessment
This skill appears to do what it claims, but there are a few security-relevant tradeoffs to consider before installing: - Tokens & config: The Python code reads the MSAL token cache (~/.openclaw/ms_tokens.json) and writes a refreshed MS_GRAPH_ACCESS_TOKEN into ~/.openclaw/openclaw.json. That central config file will contain an access token which other local skills or processes that can read that file could use. If you have strict token control requirements, keep an eye on file permissions or avoid writing tokens into shared configs. - Gmail keyring handling: The recommended setup uses GOG_KEYRING_PASSWORD="" and a file-based keyring for non-interactive use. That reduces friction for cron jobs but weakens local credential protection. Consider whether the tradeoff is acceptable for your environment. - Cron & shell injection surface: The installer offers to append exports to ~/.bashrc and install a cron line. Only agree to those steps if you trust the repository and the paths shown; inspect the cron line and .bashrc additions before accepting. - Least privilege: The skill requests broad mail/calendar scopes (Mail.ReadWrite, Calendars.ReadWrite). If you only need read-only notifications, consider adjusting scopes or using tokens with reduced permissions where possible. - Operational hygiene: Run the script manually first (python3 ... check), verify outputs, and review the code locally. Ensure ~/.openclaw/openclaw.json and ~/.openclaw/notified_emails.json have appropriate filesystem permissions (restrict to your user). If you are uncertain about the upstream source, review the full repository on GitHub before installing. If these tradeoffs are acceptable and you trust the source, the package is coherent for its purpose. If you have stricter security requirements, do not enable the installer’s automatic edits (openclaw.json, ~/.bashrc, crontab) until you have manually reviewed and adjusted them.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

📧 Clawdis
Binspython3
EnvEMAIL_MONITOR_TELEGRAM_USER
latestvk9751y7qb6defm624jx7fg9p8x84hfg2
181downloads
0stars
2versions
Updated 2w ago
v1.1.0
MIT-0

Unified Mailbox AI

Unified inbox monitor for Outlook and Gmail with AI summarization and calendar conflict detection. Either or both providers can be enabled — configure only what you need.

Accounts

  • Outlook: requires MS_GRAPH_ACCESS_TOKEN (managed by the outlook-graph skill). If ~/.openclaw/ms_tokens.json is missing, Outlook is skipped.
  • Gmail: requires EMAIL_MONITOR_GMAIL_ACCOUNT env var and the gog CLI authorized. If unset, Gmail is skipped.
  • Telegram: EMAIL_MONITOR_TELEGRAM_USER is always required (the chat ID that receives notifications).

When to Use

  • User asks to check emails (either account or both)
  • Triggered by cron job for automatic monitoring
  • User asks about meeting invitations or calendar conflicts

Credentials

Accounts are pre-configured via environment variables. Do not ask the user for credentials. Just run the scripts directly.


Workflow (manual check)

  1. Run the check command (returns JSON with new unread from configured accounts)
  2. For each new email, summarize sender/subject/content
  3. If it's a meeting invitation, check the configured calendar(s) for conflicts:
    • Outlook calendar: use outlook-graph skill calendar-list
    • Google Calendar: use gog calendar events primary --from <iso> --to <iso> --json
  4. Report findings: conflict status on the same line as the summary

Check new emails

python3 {baseDir}/scripts/unified_mailbox_ai.py check

Mark email as processed (prevents duplicate notifications)

python3 {baseDir}/scripts/unified_mailbox_ai.py mark --id "EMAIL_ID"

For Gmail threads, prefix the ID with gmail: e.g. gmail:19ceb0fc779a8a42

Clear all notified records

python3 {baseDir}/scripts/unified_mailbox_ai.py clear

Auto-notify (used by cron — checks configured accounts, calls AI only if new emails found)

python3 {baseDir}/scripts/unified_mailbox_ai.py auto-notify

Calendar conflict check

Outlook calendar

python3 ~/.openclaw/workspace/skills/outlook-graph/scripts/outlook_graph.py calendar-list --days 7 --top 20

Google Calendar

GOG_KEYRING_PASSWORD="" GOG_ACCOUNT="$EMAIL_MONITOR_GMAIL_ACCOUNT" gog calendar events primary --from <ISO_START> --to <ISO_END> --json --no-input

Output format for each email

- [Outlook/Gmail] From: <name> <email> | Subject: <subject> | <brief summary>
  [If meeting invite] Event: <date/time> | Calendar: ⚠️ Conflict with "<event>" OR ✅ No conflict

Comments

Loading comments...