{
  "schemaVersion": "1.0",
  "item": {
    "slug": "claw-mail",
    "name": "claw-mail",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/borgcube/claw-mail",
    "canonicalUrl": "https://clawhub.ai/borgcube/claw-mail",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/claw-mail",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claw-mail",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "references/REFERENCE.md",
      "references/TEMPLATES.md",
      "references/RULES.md",
      "scripts/draft_mail.py",
      "scripts/move_mail.py",
      "scripts/retry_send.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/claw-mail"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/claw-mail",
    "agentPageUrl": "https://openagent3.xyz/skills/claw-mail/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claw-mail/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claw-mail/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "clawMail Skill",
        "body": "You are an email management agent with multi-account IMAP/SMTP support. You can\nfetch, read, search, process, compose, send, reply, forward, move, and manage\nemails, drafts, and folders across multiple email accounts."
      },
      {
        "title": "Multi-Account Model",
        "body": "Account profiles: Each account has its own IMAP/SMTP credentials, mailboxes,\nfetch limits, archival settings, and processing rules.\nDefault account: One account is designated as the default. Any script invoked\nwithout --account uses the default automatically.\nSMTP fallback: If an account's SMTP server fails, the system automatically\nretries via a configured fallback relay.\nIMAP Outbox: Messages are staged in a temporary Outbox folder before SMTP\ndelivery. If SMTP fails, the message stays in Outbox for retry by the heartbeat.\nPer-account + global rules: Each account has its own rules, plus global rules\nthat apply to all accounts.\nOAuth2: Accounts can use OAuth2 (XOAUTH2) authentication instead of passwords.\nDated-folder archival: archive_mail.py and the heartbeat honor per-account\narchive_root/archive_frequency defaults so messages routed to the archive\naction land in folders such as Archive-202603, Archive-W09, or Archive-20260315."
      },
      {
        "title": "Security",
        "body": "TLS 1.2+: All IMAP and SMTP connections enforce TLS 1.2 or higher.\nHardened ciphers: Only ECDHE+AESGCM, ECDHE+CHACHA20, DHE+AESGCM, and\nDHE+CHACHA20 cipher suites are allowed. Weak ciphers (MD5, RC4, 3DES, DSS)\nare explicitly blocked.\nCertificate verification: Hostname checking and certificate validation are\nalways enabled.\nRFC 5322 compliance: All outgoing emails include required Date, Message-ID,\nand MIME-Version headers automatically.\nSecure credential storage: Passwords in config support 1Password CLI\n(op://vault/item/field), macOS Keychain (keychain://service/account),\nand environment variables (env://VAR_NAME)."
      },
      {
        "title": "Available Scripts",
        "body": "All scripts are in the scripts/ directory. Run with\npython3 scripts/<name>.py from the skill root. Every script accepts\n--account <name> to target a specific account."
      },
      {
        "title": "Core Scripts",
        "body": "ScriptPurposescripts/fetch_mail.pyFetch emails from an IMAP folderscripts/read_mail.pyRead/render an email by Message-ID; save attachments to diskscripts/search_mail.pySearch emails by subject, sender, body, date, flagsscripts/send_mail.pySend rich HTML emails via SMTP (Outbox + fallback); attach filesscripts/compose_mail.pyCompose rich HTML emails from templates; attach filesscripts/reply_mail.pyReply to an email with original-message quotingscripts/forward_mail.pyForward an email inline-quoted or with attachmentsscripts/draft_mail.pySave, list, resume, or send drafts via IMAP Drafts folderscripts/process_mail.pyRun emails through the rule-based processing pipelinescripts/manage_folders.pyList, create, delete, rename, and move IMAP foldersscripts/move_mail.pyMove emails between IMAP folders (batch support)scripts/heartbeat.pyRun a full heartbeat cycle (drains Outbox, fetches, processes)scripts/idle_monitor.pyMonitor a mailbox via IMAP IDLE (push notifications)scripts/retry_send.pyRetry sending messages stuck in the IMAP Outboxscripts/calendar_invite.pyCompose and send iCalendar meeting invitationsscripts/mail_merge.pyBatch personalised sends from template + CSV/JSON datascripts/thread_mail.pyGroup messages into conversation threadsscripts/archive_mail.pyAuto-archive old messages into dated folders (daily/weekly/monthly/yearly)"
      },
      {
        "title": "Library Modules",
        "body": "ModulePurposescripts/lib/imap_client.pyIMAP client with IDLE, search, folder management, TLS 1.2+scripts/lib/smtp_client.pySMTP client with TLS 1.2+, RFC 5322, OAuth2, MIME buildingscripts/lib/composer.pyRich HTML email composer with templates, reply, forwardscripts/lib/processor.pyRule-based processing pipeline with webhook actionsscripts/lib/account_manager.pyMulti-account manager with SMTP fallback and Outboxscripts/lib/outbox.pyIMAP Outbox — temporary folder for reliable deliveryscripts/lib/credential_store.pySecure credential storage (1Password, Keychain, env)scripts/lib/pool.pyConnection pool for IMAP/SMTP reusescripts/lib/send_queue.pyLegacy file-backed send queue (superseded by Outbox)scripts/lib/smime.pyS/MIME signing and encryptionscripts/lib/oauth2.pyOAuth2 (XOAUTH2) token managementscripts/lib/models.pyData models (EmailMessage, EmailAddress, etc.)"
      },
      {
        "title": "Reference Documents",
        "body": "ReferenceWhen to readreferences/REFERENCE.mdAPI overview, all script arguments and output formatsreferences/TEMPLATES.mdAvailable email templates and template variablesreferences/RULES.mdHow to configure processing rulesROADMAP.mdFeature roadmap and progress tracker"
      },
      {
        "title": "Fetching Mail",
        "body": "python3 scripts/fetch_mail.py --config config.yaml\n\npython3 scripts/fetch_mail.py --account personal --unread-only --format cli --config config.yaml"
      },
      {
        "title": "Sending Rich Emails",
        "body": "Messages are staged in a temporary IMAP Outbox folder, sent via SMTP\n(with automatic fallback), then removed from Outbox on success.\n\npython3 scripts/send_mail.py \\\n  --to \"recipient@example.com\" \\\n  --subject \"Weekly Report\" \\\n  --body \"<p>Here are this week's results.</p>\" \\\n  --template default \\\n  --attach report.pdf \\\n  --config config.yaml"
      },
      {
        "title": "Replying and Forwarding",
        "body": "python3 scripts/reply_mail.py --message-id \"<id@example.com>\" --body \"Thanks!\" --config config.yaml\n\npython3 scripts/forward_mail.py --message-id \"<id@example.com>\" --to \"colleague@x.com\" --config config.yaml"
      },
      {
        "title": "Searching Emails",
        "body": "python3 scripts/search_mail.py --subject \"invoice\" --unseen --config config.yaml\n\npython3 scripts/search_mail.py --criteria '(FROM \"alice@x.com\" SINCE 01-Jan-2026)' --config config.yaml"
      },
      {
        "title": "Working with Drafts",
        "body": "python3 scripts/draft_mail.py --action save --to \"user@x.com\" --subject \"WIP\" --body \"...\" --config config.yaml\npython3 scripts/draft_mail.py --action list --format cli --config config.yaml\npython3 scripts/draft_mail.py --action send --message-id \"<draft@x.com>\" --config config.yaml"
      },
      {
        "title": "Outbox & Send Retry",
        "body": "python3 scripts/retry_send.py --config config.yaml\npython3 scripts/retry_send.py --config config.yaml --list"
      },
      {
        "title": "Heartbeat Cycle",
        "body": "The heartbeat drains each account's Outbox, then fetches and processes mail:\n\npython3 scripts/heartbeat.py --config config.yaml\npython3 scripts/heartbeat.py --config config.yaml --account work"
      },
      {
        "title": "Archiving Old Messages",
        "body": "python3 scripts/archive_mail.py --config config.yaml --days 90 --frequency monthly\npython3 scripts/archive_mail.py --config config.yaml --days 30 --frequency daily --archive-root \"Old Mail\" --dry-run --format cli\n\nArchiving honors archive_root / archive_frequency settings (defaults: Archive, monthly). The heartbeat and any rule with the archive action move the message into folders named Archive-202603, Archive-W09, or Archive-20260315 based on the configured cadence."
      },
      {
        "title": "Calendar Invitations",
        "body": "python3 scripts/calendar_invite.py \\\n  --to \"bob@example.com\" --subject \"Standup\" \\\n  --start \"2026-03-01T09:00:00\" --end \"2026-03-01T09:30:00\" \\\n  --location \"Zoom\" --config config.yaml"
      },
      {
        "title": "Mail Merge",
        "body": "python3 scripts/mail_merge.py \\\n  --data contacts.csv --subject \"Hello {{name}}\" \\\n  --body \"<p>Dear {{name}}, your code is {{code}}.</p>\" \\\n  --to-field email --config config.yaml"
      },
      {
        "title": "Configuration",
        "body": "Create a config.yaml from assets/config.example.yaml:\n\ndefault_account: work\n\naccounts:\n  work:\n    label: \"Work\"\n    sender_address: \"alice@company.com\"\n    sender_name: \"Alice Smith\"\n    imap:\n      host: imap.company.com\n      port: 993\n      username: \"alice@company.com\"\n      password: \"op://Work/IMAP/password\"          # 1Password CLI\n      ssl: true\n    smtp:\n      host: smtp.company.com\n      port: 587\n      username: \"alice@company.com\"\n      password: \"op://Work/SMTP/password\"          # 1Password CLI\n      tls: true\n    mailboxes: [INBOX, Projects]\n    fetch_limit: 50\n    rules:\n      - name: flag_urgent\n        sender_pattern: \"boss@company\\\\.com\"\n        actions: [flag, tag]\n        tag: urgent\n\n  personal:\n    label: \"Personal\"\n    sender_address: \"alice@gmail.com\"\n    imap:\n      host: imap.gmail.com\n      password: \"keychain://imap.gmail.com/alice@gmail.com\"  # macOS Keychain\n    smtp:\n      host: smtp.gmail.com\n      password: \"keychain://smtp.gmail.com/alice@gmail.com\"  # macOS Keychain\n\nYou can also define archive_root (e.g., Archive) and archive_frequency (daily, weekly, monthly, yearly) either globally or per- account. These defaults drive both the archive_mail.py script and the heartbeat's handling of the archive rule action so that archived messages consistently live under folders like Archive-202603, Archive-W09, or Archive-20260315."
      },
      {
        "title": "Secure Credential Storage",
        "body": "Passwords in config support four backends:\n\nSchemeBackendExampleop://1Password CLI\"op://Work/IMAP/password\"keychain://macOS Keychain\"keychain://imap.gmail.com/alice\"env://Environment variable\"env://GMAIL_APP_PASSWORD\"(plain text)Literal value\"my-password\" (logs a warning)"
      },
      {
        "title": "OAuth2 Authentication (Gmail, Outlook 365)",
        "body": "For providers that require OAuth2, set auth: oauth2 on the IMAP/SMTP block:\n\nimap:\n  host: imap.gmail.com\n  username: \"user@gmail.com\"\n  auth: oauth2\n  oauth2:\n    client_id: \"your-client-id\"\n    client_secret: \"your-client-secret\"\n    refresh_token: \"your-refresh-token\"\n    token_uri: \"https://oauth2.googleapis.com/token\""
      },
      {
        "title": "Legacy Single-Account Config",
        "body": "Flat imap: / smtp: at root is automatically treated as a single account\nnamed \"default\"."
      }
    ],
    "body": "clawMail Skill\n\nYou are an email management agent with multi-account IMAP/SMTP support. You can fetch, read, search, process, compose, send, reply, forward, move, and manage emails, drafts, and folders across multiple email accounts.\n\nMulti-Account Model\nAccount profiles: Each account has its own IMAP/SMTP credentials, mailboxes, fetch limits, archival settings, and processing rules.\nDefault account: One account is designated as the default. Any script invoked without --account uses the default automatically.\nSMTP fallback: If an account's SMTP server fails, the system automatically retries via a configured fallback relay.\nIMAP Outbox: Messages are staged in a temporary Outbox folder before SMTP delivery. If SMTP fails, the message stays in Outbox for retry by the heartbeat.\nPer-account + global rules: Each account has its own rules, plus global rules that apply to all accounts.\nOAuth2: Accounts can use OAuth2 (XOAUTH2) authentication instead of passwords.\nDated-folder archival: archive_mail.py and the heartbeat honor per-account archive_root/archive_frequency defaults so messages routed to the archive action land in folders such as Archive-202603, Archive-W09, or Archive-20260315.\nSecurity\nTLS 1.2+: All IMAP and SMTP connections enforce TLS 1.2 or higher.\nHardened ciphers: Only ECDHE+AESGCM, ECDHE+CHACHA20, DHE+AESGCM, and DHE+CHACHA20 cipher suites are allowed. Weak ciphers (MD5, RC4, 3DES, DSS) are explicitly blocked.\nCertificate verification: Hostname checking and certificate validation are always enabled.\nRFC 5322 compliance: All outgoing emails include required Date, Message-ID, and MIME-Version headers automatically.\nSecure credential storage: Passwords in config support 1Password CLI (op://vault/item/field), macOS Keychain (keychain://service/account), and environment variables (env://VAR_NAME).\nAvailable Scripts\n\nAll scripts are in the scripts/ directory. Run with python3 scripts/<name>.py from the skill root. Every script accepts --account <name> to target a specific account.\n\nCore Scripts\nScript\tPurpose\nscripts/fetch_mail.py\tFetch emails from an IMAP folder\nscripts/read_mail.py\tRead/render an email by Message-ID; save attachments to disk\nscripts/search_mail.py\tSearch emails by subject, sender, body, date, flags\nscripts/send_mail.py\tSend rich HTML emails via SMTP (Outbox + fallback); attach files\nscripts/compose_mail.py\tCompose rich HTML emails from templates; attach files\nscripts/reply_mail.py\tReply to an email with original-message quoting\nscripts/forward_mail.py\tForward an email inline-quoted or with attachments\nscripts/draft_mail.py\tSave, list, resume, or send drafts via IMAP Drafts folder\nscripts/process_mail.py\tRun emails through the rule-based processing pipeline\nscripts/manage_folders.py\tList, create, delete, rename, and move IMAP folders\nscripts/move_mail.py\tMove emails between IMAP folders (batch support)\nscripts/heartbeat.py\tRun a full heartbeat cycle (drains Outbox, fetches, processes)\nscripts/idle_monitor.py\tMonitor a mailbox via IMAP IDLE (push notifications)\nscripts/retry_send.py\tRetry sending messages stuck in the IMAP Outbox\nscripts/calendar_invite.py\tCompose and send iCalendar meeting invitations\nscripts/mail_merge.py\tBatch personalised sends from template + CSV/JSON data\nscripts/thread_mail.py\tGroup messages into conversation threads\nscripts/archive_mail.py\tAuto-archive old messages into dated folders (daily/weekly/monthly/yearly)\nLibrary Modules\nModule\tPurpose\nscripts/lib/imap_client.py\tIMAP client with IDLE, search, folder management, TLS 1.2+\nscripts/lib/smtp_client.py\tSMTP client with TLS 1.2+, RFC 5322, OAuth2, MIME building\nscripts/lib/composer.py\tRich HTML email composer with templates, reply, forward\nscripts/lib/processor.py\tRule-based processing pipeline with webhook actions\nscripts/lib/account_manager.py\tMulti-account manager with SMTP fallback and Outbox\nscripts/lib/outbox.py\tIMAP Outbox — temporary folder for reliable delivery\nscripts/lib/credential_store.py\tSecure credential storage (1Password, Keychain, env)\nscripts/lib/pool.py\tConnection pool for IMAP/SMTP reuse\nscripts/lib/send_queue.py\tLegacy file-backed send queue (superseded by Outbox)\nscripts/lib/smime.py\tS/MIME signing and encryption\nscripts/lib/oauth2.py\tOAuth2 (XOAUTH2) token management\nscripts/lib/models.py\tData models (EmailMessage, EmailAddress, etc.)\nReference Documents\nReference\tWhen to read\nreferences/REFERENCE.md\tAPI overview, all script arguments and output formats\nreferences/TEMPLATES.md\tAvailable email templates and template variables\nreferences/RULES.md\tHow to configure processing rules\nROADMAP.md\tFeature roadmap and progress tracker\nQuick Start\nFetching Mail\npython3 scripts/fetch_mail.py --config config.yaml\n\npython3 scripts/fetch_mail.py --account personal --unread-only --format cli --config config.yaml\n\nSending Rich Emails\n\nMessages are staged in a temporary IMAP Outbox folder, sent via SMTP (with automatic fallback), then removed from Outbox on success.\n\npython3 scripts/send_mail.py \\\n  --to \"recipient@example.com\" \\\n  --subject \"Weekly Report\" \\\n  --body \"<p>Here are this week's results.</p>\" \\\n  --template default \\\n  --attach report.pdf \\\n  --config config.yaml\n\nReplying and Forwarding\npython3 scripts/reply_mail.py --message-id \"<id@example.com>\" --body \"Thanks!\" --config config.yaml\n\npython3 scripts/forward_mail.py --message-id \"<id@example.com>\" --to \"colleague@x.com\" --config config.yaml\n\nSearching Emails\npython3 scripts/search_mail.py --subject \"invoice\" --unseen --config config.yaml\n\npython3 scripts/search_mail.py --criteria '(FROM \"alice@x.com\" SINCE 01-Jan-2026)' --config config.yaml\n\nWorking with Drafts\npython3 scripts/draft_mail.py --action save --to \"user@x.com\" --subject \"WIP\" --body \"...\" --config config.yaml\npython3 scripts/draft_mail.py --action list --format cli --config config.yaml\npython3 scripts/draft_mail.py --action send --message-id \"<draft@x.com>\" --config config.yaml\n\nOutbox & Send Retry\npython3 scripts/retry_send.py --config config.yaml\npython3 scripts/retry_send.py --config config.yaml --list\n\nHeartbeat Cycle\n\nThe heartbeat drains each account's Outbox, then fetches and processes mail:\n\npython3 scripts/heartbeat.py --config config.yaml\npython3 scripts/heartbeat.py --config config.yaml --account work\n\nArchiving Old Messages\npython3 scripts/archive_mail.py --config config.yaml --days 90 --frequency monthly\npython3 scripts/archive_mail.py --config config.yaml --days 30 --frequency daily --archive-root \"Old Mail\" --dry-run --format cli\n\n\nArchiving honors archive_root / archive_frequency settings (defaults: Archive, monthly). The heartbeat and any rule with the archive action move the message into folders named Archive-202603, Archive-W09, or Archive-20260315 based on the configured cadence.\n\nCalendar Invitations\npython3 scripts/calendar_invite.py \\\n  --to \"bob@example.com\" --subject \"Standup\" \\\n  --start \"2026-03-01T09:00:00\" --end \"2026-03-01T09:30:00\" \\\n  --location \"Zoom\" --config config.yaml\n\nMail Merge\npython3 scripts/mail_merge.py \\\n  --data contacts.csv --subject \"Hello {{name}}\" \\\n  --body \"<p>Dear {{name}}, your code is {{code}}.</p>\" \\\n  --to-field email --config config.yaml\n\nConfiguration\n\nCreate a config.yaml from assets/config.example.yaml:\n\ndefault_account: work\n\naccounts:\n  work:\n    label: \"Work\"\n    sender_address: \"alice@company.com\"\n    sender_name: \"Alice Smith\"\n    imap:\n      host: imap.company.com\n      port: 993\n      username: \"alice@company.com\"\n      password: \"op://Work/IMAP/password\"          # 1Password CLI\n      ssl: true\n    smtp:\n      host: smtp.company.com\n      port: 587\n      username: \"alice@company.com\"\n      password: \"op://Work/SMTP/password\"          # 1Password CLI\n      tls: true\n    mailboxes: [INBOX, Projects]\n    fetch_limit: 50\n    rules:\n      - name: flag_urgent\n        sender_pattern: \"boss@company\\\\.com\"\n        actions: [flag, tag]\n        tag: urgent\n\n  personal:\n    label: \"Personal\"\n    sender_address: \"alice@gmail.com\"\n    imap:\n      host: imap.gmail.com\n      password: \"keychain://imap.gmail.com/alice@gmail.com\"  # macOS Keychain\n    smtp:\n      host: smtp.gmail.com\n      password: \"keychain://smtp.gmail.com/alice@gmail.com\"  # macOS Keychain\n\n\nYou can also define archive_root (e.g., Archive) and archive_frequency (daily, weekly, monthly, yearly) either globally or per- account. These defaults drive both the archive_mail.py script and the heartbeat's handling of the archive rule action so that archived messages consistently live under folders like Archive-202603, Archive-W09, or Archive-20260315.\n\nSecure Credential Storage\n\nPasswords in config support four backends:\n\nScheme\tBackend\tExample\nop://\t1Password CLI\t\"op://Work/IMAP/password\"\nkeychain://\tmacOS Keychain\t\"keychain://imap.gmail.com/alice\"\nenv://\tEnvironment variable\t\"env://GMAIL_APP_PASSWORD\"\n(plain text)\tLiteral value\t\"my-password\" (logs a warning)\nOAuth2 Authentication (Gmail, Outlook 365)\n\nFor providers that require OAuth2, set auth: oauth2 on the IMAP/SMTP block:\n\nimap:\n  host: imap.gmail.com\n  username: \"user@gmail.com\"\n  auth: oauth2\n  oauth2:\n    client_id: \"your-client-id\"\n    client_secret: \"your-client-secret\"\n    refresh_token: \"your-refresh-token\"\n    token_uri: \"https://oauth2.googleapis.com/token\"\n\nLegacy Single-Account Config\n\nFlat imap: / smtp: at root is automatically treated as a single account named \"default\"."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/borgcube/claw-mail",
    "publisherUrl": "https://clawhub.ai/borgcube/claw-mail",
    "owner": "borgcube",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/claw-mail",
    "downloadUrl": "https://openagent3.xyz/downloads/claw-mail",
    "agentUrl": "https://openagent3.xyz/skills/claw-mail/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claw-mail/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claw-mail/agent.md"
  }
}