{
  "schemaVersion": "1.0",
  "item": {
    "slug": "imap-email",
    "name": "IMAP Email Reader",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/mvarrieur/imap-email",
    "canonicalUrl": "https://clawhub.ai/mvarrieur/imap-email",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/imap-email",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=imap-email",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "package-lock.json",
      "package.json",
      "scripts/imap.js",
      "setup.sh",
      "skill.json"
    ],
    "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-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/imap-email"
    },
    "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/imap-email",
    "agentPageUrl": "https://openagent3.xyz/skills/imap-email/agent",
    "manifestUrl": "https://openagent3.xyz/skills/imap-email/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/imap-email/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": "IMAP Email Reader",
        "body": "Read, search, and manage email via IMAP protocol. Supports ProtonMail Bridge, Gmail IMAP, and any standard IMAP server."
      },
      {
        "title": "Quick Start",
        "body": "Check for new emails:\n\nnode skills/imap-email/scripts/imap.js check\n\nFetch specific email:\n\nnode skills/imap-email/scripts/imap.js fetch <uid>\n\nMark as read:\n\nnode skills/imap-email/scripts/imap.js mark-read <uid>\n\nSearch mailbox:\n\nnode skills/imap-email/scripts/imap.js search --from \"sender@example.com\" --unseen"
      },
      {
        "title": "Configuration",
        "body": "Quick setup (ProtonMail Bridge):\n\ncd skills/imap-email\n./setup.sh\n\nThe setup helper will prompt for Bridge credentials and test the connection.\n\nManual setup:\n\nCopy .env.example to .env in the skill folder\nFill in your IMAP credentials\nThe .env file is automatically ignored by git\n\nEnvironment variables:\n\nIMAP_HOST=127.0.0.1          # Server hostname\nIMAP_PORT=1143               # Server port\nIMAP_USER=your@email.com\nIMAP_PASS=your_password\nIMAP_TLS=false               # Use TLS/SSL connection\nIMAP_REJECT_UNAUTHORIZED=false  # Set to false for self-signed certs (optional)\nIMAP_MAILBOX=INBOX           # Default mailbox\n\n⚠️ Security: Never commit your .env file! It's already in .gitignore to prevent accidents.\n\nProtonMail Bridge setup:\n\nInstall and run ProtonMail Bridge\nUse 127.0.0.1:1143 for IMAP\nPassword is generated by Bridge (not your ProtonMail password)\nTLS: Use false (Bridge uses STARTTLS)\nREJECT_UNAUTHORIZED: Set to false (Bridge uses self-signed cert)\n\nGmail IMAP setup:\n\nHost: imap.gmail.com\nPort: 993\nTLS: true\nEnable \"Less secure app access\" or use App Password\nREJECT_UNAUTHORIZED: Omit or set to true (default)"
      },
      {
        "title": "check",
        "body": "Check for unread/new emails in mailbox.\n\nnode scripts/imap.js check [--limit 10] [--mailbox INBOX] [--recent 2h]\n\nOptions:\n\n--limit <n>: Max results (default: 10)\n--mailbox <name>: Mailbox to check (default: INBOX)\n--recent <time>: Only show emails from last X time (e.g., 30m, 2h, 7d)\n\nReturns JSON array of messages with:\n\nuid, from, subject, date, snippet, flags"
      },
      {
        "title": "fetch",
        "body": "Fetch full email content by UID.\n\nnode scripts/imap.js fetch <uid> [--mailbox INBOX]\n\nReturns JSON with full body (text + HTML)."
      },
      {
        "title": "search",
        "body": "Search emails with filters.\n\nnode scripts/imap.js search [options]\n\nOptions:\n  --unseen           Only unread messages\n  --seen             Only read messages\n  --from <email>     From address contains\n  --subject <text>   Subject contains\n  --recent <time>    From last X time (e.g., 30m, 2h, 7d)\n  --since <date>     After date (YYYY-MM-DD)\n  --before <date>    Before date (YYYY-MM-DD)\n  --limit <n>        Max results (default: 20)\n  --mailbox <name>   Mailbox to search (default: INBOX)\n\nTime format examples:\n\n30m = last 30 minutes\n2h = last 2 hours\n7d = last 7 days"
      },
      {
        "title": "mark-read / mark-unread",
        "body": "Mark message(s) as read or unread.\n\nnode scripts/imap.js mark-read <uid> [uid2 uid3...]\nnode scripts/imap.js mark-unread <uid> [uid2 uid3...]"
      },
      {
        "title": "list-mailboxes",
        "body": "List all available mailboxes/folders.\n\nnode scripts/imap.js list-mailboxes"
      },
      {
        "title": "Cron Integration",
        "body": "Set up periodic email checking with Clawdbot cron:\n\n# Check email every 15 minutes, deliver to iMessage\nclawdbot cron add \\\n  --name \"email-check\" \\\n  --cron \"*/15 * * * *\" \\\n  --session isolated \\\n  --message \"Check for new ProtonMail emails and summarize them\" \\\n  --deliver \\\n  --channel imessage \\\n  --to \"+15085600825\"\n\nInside the isolated session, the agent can run:\n\nnode /Users/mike/clawd/skills/imap-email/scripts/imap.js check --limit 5"
      },
      {
        "title": "Workflow Examples",
        "body": "Morning email digest:\n\nRun check --limit 10 --recent 12h\nSummarize unread emails from overnight\nDeliver summary to preferred channel\n\nCheck recent emails from specific sender:\n\nRun search --from \"important@company.com\" --recent 24h\nFetch full content if needed\nMark as read after processing\n\nHourly urgent email check:\n\nRun search --recent 1h --unseen\nFilter for important keywords\nExtract action items\nDeliver notification if urgent\n\nWeekly digest:\n\nRun search --recent 7d --limit 20\nSummarize activity\nGenerate weekly report"
      },
      {
        "title": "Dependencies",
        "body": "Required packages: imap-simple, mailparser, dotenv\n\nInstallation:\n\ncd skills/imap-email\nnpm install\n\nThis will install all dependencies listed in package.json."
      },
      {
        "title": "Security Notes",
        "body": "Store credentials in .env (add to .gitignore)\nProtonMail Bridge password is NOT your account password\nBridge must be running for ProtonMail IMAP access\nConsider using app-specific passwords for Gmail"
      },
      {
        "title": "Troubleshooting",
        "body": "Connection timeout:\n\nVerify IMAP server is running and accessible\nCheck host/port configuration\nTest with: telnet <host> <port>\n\nAuthentication failed:\n\nVerify username (usually full email address)\nCheck password is correct\nFor ProtonMail Bridge: use Bridge-generated password, not account password\nFor Gmail: use App Password if 2FA is enabled\n\nTLS/SSL errors:\n\nMatch IMAP_TLS setting to server requirements (true for SSL, false for STARTTLS)\nFor self-signed certs (e.g., ProtonMail Bridge): set IMAP_REJECT_UNAUTHORIZED=false\nCheck port matches TLS setting (993 for SSL, 143 for STARTTLS)\n\nEmpty results:\n\nVerify mailbox name (case-sensitive)\nCheck search criteria\nList mailboxes with list-mailboxes"
      }
    ],
    "body": "IMAP Email Reader\n\nRead, search, and manage email via IMAP protocol. Supports ProtonMail Bridge, Gmail IMAP, and any standard IMAP server.\n\nQuick Start\n\nCheck for new emails:\n\nnode skills/imap-email/scripts/imap.js check\n\n\nFetch specific email:\n\nnode skills/imap-email/scripts/imap.js fetch <uid>\n\n\nMark as read:\n\nnode skills/imap-email/scripts/imap.js mark-read <uid>\n\n\nSearch mailbox:\n\nnode skills/imap-email/scripts/imap.js search --from \"sender@example.com\" --unseen\n\nConfiguration\n\nQuick setup (ProtonMail Bridge):\n\ncd skills/imap-email\n./setup.sh\n\n\nThe setup helper will prompt for Bridge credentials and test the connection.\n\nManual setup:\n\nCopy .env.example to .env in the skill folder\nFill in your IMAP credentials\nThe .env file is automatically ignored by git\n\nEnvironment variables:\n\nIMAP_HOST=127.0.0.1          # Server hostname\nIMAP_PORT=1143               # Server port\nIMAP_USER=your@email.com\nIMAP_PASS=your_password\nIMAP_TLS=false               # Use TLS/SSL connection\nIMAP_REJECT_UNAUTHORIZED=false  # Set to false for self-signed certs (optional)\nIMAP_MAILBOX=INBOX           # Default mailbox\n\n\n⚠️ Security: Never commit your .env file! It's already in .gitignore to prevent accidents.\n\nProtonMail Bridge setup:\n\nInstall and run ProtonMail Bridge\nUse 127.0.0.1:1143 for IMAP\nPassword is generated by Bridge (not your ProtonMail password)\nTLS: Use false (Bridge uses STARTTLS)\nREJECT_UNAUTHORIZED: Set to false (Bridge uses self-signed cert)\n\nGmail IMAP setup:\n\nHost: imap.gmail.com\nPort: 993\nTLS: true\nEnable \"Less secure app access\" or use App Password\nREJECT_UNAUTHORIZED: Omit or set to true (default)\nCommands\ncheck\n\nCheck for unread/new emails in mailbox.\n\nnode scripts/imap.js check [--limit 10] [--mailbox INBOX] [--recent 2h]\n\n\nOptions:\n\n--limit <n>: Max results (default: 10)\n--mailbox <name>: Mailbox to check (default: INBOX)\n--recent <time>: Only show emails from last X time (e.g., 30m, 2h, 7d)\n\nReturns JSON array of messages with:\n\nuid, from, subject, date, snippet, flags\nfetch\n\nFetch full email content by UID.\n\nnode scripts/imap.js fetch <uid> [--mailbox INBOX]\n\n\nReturns JSON with full body (text + HTML).\n\nsearch\n\nSearch emails with filters.\n\nnode scripts/imap.js search [options]\n\nOptions:\n  --unseen           Only unread messages\n  --seen             Only read messages\n  --from <email>     From address contains\n  --subject <text>   Subject contains\n  --recent <time>    From last X time (e.g., 30m, 2h, 7d)\n  --since <date>     After date (YYYY-MM-DD)\n  --before <date>    Before date (YYYY-MM-DD)\n  --limit <n>        Max results (default: 20)\n  --mailbox <name>   Mailbox to search (default: INBOX)\n\n\nTime format examples:\n\n30m = last 30 minutes\n2h = last 2 hours\n7d = last 7 days\nmark-read / mark-unread\n\nMark message(s) as read or unread.\n\nnode scripts/imap.js mark-read <uid> [uid2 uid3...]\nnode scripts/imap.js mark-unread <uid> [uid2 uid3...]\n\nlist-mailboxes\n\nList all available mailboxes/folders.\n\nnode scripts/imap.js list-mailboxes\n\nCron Integration\n\nSet up periodic email checking with Clawdbot cron:\n\n# Check email every 15 minutes, deliver to iMessage\nclawdbot cron add \\\n  --name \"email-check\" \\\n  --cron \"*/15 * * * *\" \\\n  --session isolated \\\n  --message \"Check for new ProtonMail emails and summarize them\" \\\n  --deliver \\\n  --channel imessage \\\n  --to \"+15085600825\"\n\n\nInside the isolated session, the agent can run:\n\nnode /Users/mike/clawd/skills/imap-email/scripts/imap.js check --limit 5\n\nWorkflow Examples\n\nMorning email digest:\n\nRun check --limit 10 --recent 12h\nSummarize unread emails from overnight\nDeliver summary to preferred channel\n\nCheck recent emails from specific sender:\n\nRun search --from \"important@company.com\" --recent 24h\nFetch full content if needed\nMark as read after processing\n\nHourly urgent email check:\n\nRun search --recent 1h --unseen\nFilter for important keywords\nExtract action items\nDeliver notification if urgent\n\nWeekly digest:\n\nRun search --recent 7d --limit 20\nSummarize activity\nGenerate weekly report\nDependencies\n\nRequired packages: imap-simple, mailparser, dotenv\n\nInstallation:\n\ncd skills/imap-email\nnpm install\n\n\nThis will install all dependencies listed in package.json.\n\nSecurity Notes\nStore credentials in .env (add to .gitignore)\nProtonMail Bridge password is NOT your account password\nBridge must be running for ProtonMail IMAP access\nConsider using app-specific passwords for Gmail\nTroubleshooting\n\nConnection timeout:\n\nVerify IMAP server is running and accessible\nCheck host/port configuration\nTest with: telnet <host> <port>\n\nAuthentication failed:\n\nVerify username (usually full email address)\nCheck password is correct\nFor ProtonMail Bridge: use Bridge-generated password, not account password\nFor Gmail: use App Password if 2FA is enabled\n\nTLS/SSL errors:\n\nMatch IMAP_TLS setting to server requirements (true for SSL, false for STARTTLS)\nFor self-signed certs (e.g., ProtonMail Bridge): set IMAP_REJECT_UNAUTHORIZED=false\nCheck port matches TLS setting (993 for SSL, 143 for STARTTLS)\n\nEmpty results:\n\nVerify mailbox name (case-sensitive)\nCheck search criteria\nList mailboxes with list-mailboxes"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mvarrieur/imap-email",
    "publisherUrl": "https://clawhub.ai/mvarrieur/imap-email",
    "owner": "mvarrieur",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/imap-email",
    "downloadUrl": "https://openagent3.xyz/downloads/imap-email",
    "agentUrl": "https://openagent3.xyz/skills/imap-email/agent",
    "manifestUrl": "https://openagent3.xyz/skills/imap-email/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/imap-email/agent.md"
  }
}