{"id":"ee4b61a6-f4de-4ac6-bc5d-b093ed7755b0","entityType":"agent","slug":"clawhub-komelt-thunderbird","name":"Thunderbird","canonicalUrl":"https://www.xpersona.co/agent/clawhub-komelt-thunderbird","canonicalPath":"/agent/clawhub-komelt-thunderbird","generatedAt":"2026-10-10T23:45:41.458Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:59:54.369Z","emptyReason":null},"description":"Read and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cach...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s174t07mepg1ydqaj7m9s718nd84kj50:thunderbird","sourceUrl":"https://clawhub.ai/komelt/thunderbird","homepage":"https://clawhub.ai/komelt/skills/thunderbird","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/komelt/thunderbird","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/komelt/skills/thunderbird","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Thunderbird technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:59:54.369Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:59:54.369Z","emptyReason":null},"stars":null,"forks":null,"downloads":1259,"packageName":null,"latestVersion":"0.1.1","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:59:54.304Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T20:59:54.369Z","lastCrawledAt":"2026-10-10T20:59:54.304Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T20:59:54.304Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.1","createdAt":"2026-03-12T10:11:53.024Z","changelog":"Thunderbird skill 0.1.1 introduces attachment search and improves profile discovery. - Added support for searching, listing, and saving email attachments (`--has-attachment`, `--attachment-name`, `--list-attachments`, `--save-attachments`) - Updated documentation with new attachment-related options and usage examples - Enhanced profile auto-discovery for both Windows and Linux - Clarified date interpretation for `--since` and `--until` options - Added new guidance on attachment interaction policy in the documentation - New README.md file included","fileCount":6,"zipByteSize":13187},{"version":"0.1.0","createdAt":"2026-03-12T08:36:36.696Z","changelog":"Initial release of the Thunderbird skill, enabling local email search and extraction: - Supports reading and searching local Mozilla Thunderbird mail storage directly from disk. - Allows detection and listing of Thunderbird profiles and accounts. - Provides powerful search: filter by sender, recipient, subject, body, unread status, date range, and folder. - Offers advanced options like sorting, limiting results, excluding noisy matches, and exporting in JSON. - Designed for offline use with read-only access, avoiding UI automation. - Includes detailed usage guidance, workflow recommendations, and interpretation rules in SKILL.md.","fileCount":4,"zipByteSize":9124}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s174t07mepg1ydqaj7m9s718nd84kj50:thunderbird","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s174t07mepg1ydqaj7m9s718nd84kj50:thunderbird` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/komelt/thunderbird before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T23:45:41.456Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-komelt-thunderbird/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:59:54.369Z","emptyReason":null},"readme":"Skill: Thunderbird\n\nOwner: komelt\n\nSummary: Read and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cach...\n\nTags: latest:0.1.1\n\nVersion history:\n\nv0.1.1 | 2026-03-12T10:11:53.024Z | auto\n\nThunderbird skill 0.1.1 introduces attachment search and improves profile discovery.\n\n- Added support for searching, listing, and saving email attachments (`--has-attachment`, `--attachment-name`, `--list-attachments`, `--save-attachments`)\n- Updated documentation with new attachment-related options and usage examples\n- Enhanced profile auto-discovery for both Windows and Linux\n- Clarified date interpretation for `--since` and `--until` options\n- Added new guidance on attachment interaction policy in the documentation\n- New README.md file included\n\nv0.1.0 | 2026-03-12T08:36:36.696Z | auto\n\nInitial release of the Thunderbird skill, enabling local email search and extraction:\n\n- Supports reading and searching local Mozilla Thunderbird mail storage directly from disk.\n- Allows detection and listing of Thunderbird profiles and accounts.\n- Provides powerful search: filter by sender, recipient, subject, body, unread status, date range, and folder.\n- Offers advanced options like sorting, limiting results, excluding noisy matches, and exporting in JSON.\n- Designed for offline use with read-only access, avoiding UI automation.\n- Includes detailed usage guidance, workflow recommendations, and interpretation rules in SKILL.md.\n\nArchive index:\n\nArchive v0.1.1: 6 files, 13187 bytes\n\nFiles: README.md (1693b), references/storage-layout.md (1370b), scripts/search_thunderbird.py (25199b), skill-card.md (2374b), SKILL.md (8516b), _meta.json (130b)\n\nFile v0.1.1:SKILL.md\n\n---\nname: thunderbird\ndescription: Read and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cache, locating messages by sender/recipient/subject/body, checking which account a mailbox belongs to, or answering inbox questions for a specific Thunderbird account such as \"do I have unread mail today?\" or \"search mail for user@example.com\".\n---\n\n# Thunderbird\n\nUse Thunderbird's local profile data as the source of truth for offline mail inspection. Prefer read-only access and search the raw local storage directly rather than relying on UI automation.\n\nRun the bundled script from the skill directory, or use an absolute path resolved from the skill root:\n\n- `python scripts/search_thunderbird.py ...`\n\nIf the current working directory is not the skill directory, resolve `scripts/search_thunderbird.py` relative to this `SKILL.md` location before running it.\n\n## Quick start\n\n1. Detect available profiles:\n   - `python scripts/search_thunderbird.py --list-profiles`\n2. List accounts in one profile:\n   - `python scripts/search_thunderbird.py --profile default-release --list-accounts`\n3. Search one mailbox account directly:\n   - `python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --limit 10`\n4. Narrow content search when needed:\n   - `--subject-only` to search only the subject line\n   - `--body-only` to search only the body/preview text\n   - `--exclude <text>` to remove noisy matches\n5. Return only unread inbox messages when needed:\n   - `python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --unread-only --limit 20`\n6. Extract, filter, or sort more when needed:\n   - `--show-body`\n   - `--unread-only`\n   - `--subject-only`\n   - `--body-only`\n   - `--exclude wordpress`\n   - `--has-attachment`\n   - `--attachment-name invoice`\n   - `--list-attachments`\n   - `--save-attachments ./out`\n   - `--today`\n   - `--yesterday`\n   - `--since 2026-03-11`\n   - `--until 2026-03-12T08:00:00+01:00`\n   - `--sort-by date|from|subject|to`\n   - `--sort-order asc|desc`\n   - `--json`\n\n## Workflow\n\n### 1. Pick the profile\n\nUse `--list-profiles` first if the profile is unknown. The script now checks common Thunderbird profile roots on Windows and Linux automatically. Accept either:\n\n- absolute profile path\n- exact profile directory name\n- unique profile-name fragment\n\nIf multiple profiles match, stop and choose explicitly.\n\n### 2. Pick the account when possible\n\nFor account-specific requests, do not scan every mailbox first.\n\nUse:\n\n- `--list-accounts` to inspect the profile\n- `--account <email-or-fragment>` to restrict work to one Thunderbird account\n- `--folder inbox|sent|archive|drafts|junk|trash|spam` to narrow further\n\nThis is usually both faster and easier than scanning the whole profile.\n\n### 3. Search local storage\n\nUse `scripts/search_thunderbird.py` for most tasks. It scans common Thunderbird storage roots:\n\n- `Mail/`\n- `ImapMail/`\n\nIt supports:\n\n- mbox folders such as `Inbox`, `Sent`, `Archives`\n- Maildir folders containing `cur/` and `new/`\n- common profile discovery on Windows and Linux (`%APPDATA%/Thunderbird/Profiles`, `~/.thunderbird`, `~/.mozilla/thunderbird`)\n\n### 4. Return useful results\n\nBy default, summarize:\n\n- source mailbox path\n- date\n- from\n- to\n- subject\n- body preview\n\nPrefer focused summaries for the user. Use `--show-body` only when the full message text is necessary.\n\n## Common tasks\n\n### List profiles\n\n```powershell\npython scripts/search_thunderbird.py --list-profiles\n```\n\n### List accounts inside a profile\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --list-accounts\n```\n\n### Search one account inbox by keyword\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query contract --limit 20\n```\n\n### Find messages from a sender inside one account\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --from billing@example.com --limit 20\n```\n\n### Find messages by subject fragment and return JSON\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --subject invoice --json --limit 20\n```\n\n### Return only unread inbox messages\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --unread-only --limit 20\n```\n\n### Search only in subject or only in body\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --subject-only --limit 20\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query password --body-only --limit 20\n```\n\n### Exclude noisy matches\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query update --exclude wordpress --limit 20\n```\n\n### Find messages with attachments or save them\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --has-attachment --list-attachments --limit 20\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --attachment-name invoice --save-attachments .\\out --limit 20\n```\n\n### Sort messages by sender or subject\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --sort-by from --sort-order asc --limit 20\n```\n\n### Filter messages by time range\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --since 2026-01-01 --until 2026-01-02T08:00:00+01:00 --sort-by date --sort-order desc --limit 20\n```\n\n### Use day shortcuts\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --yesterday --sort-by date --sort-order desc --limit 20\n```\n\n### Extract full body text for a narrow match\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --query \"reset password\" --show-body --limit 5\n```\n\n## Interpretation rules\n\n- Treat `.msf` files as indexes, not message sources.\n- Prefer the raw mbox file when a mailbox file and `.msf` both exist.\n- Remember that IMAP results reflect cached local messages, not necessarily the full server mailbox.\n- If a message is not found, mention that local Thunderbird storage may not contain it or may not have synced it.\n- When the user names an email address, prefer `--account` before broader searches.\n- `--unread-only` depends on Thunderbird folder indexes (`.msf`) for mbox folders; if unread state is unavailable, say so instead of guessing.\n- `--since` and `--until` accept `YYYY-MM-DD` or ISO-8601 timestamps. Bare `--since` dates are interpreted as UTC midnight, while bare `--until` dates are interpreted as UTC end-of-day.\n- `--today` and `--yesterday` are UTC-based shortcuts and cannot be combined with `--since` or `--until`.\n- `--subject-only` and `--body-only` only change how `--query` is matched; do not combine them with each other.\n- `--has-attachment` filters to messages with attachments; `--attachment-name` filters by attachment filename.\n- `--save-attachments <dir>` writes matching attachments to disk and implicitly enables attachment-aware filtering when needed.\n\n## Attachment interaction policy\n\nWhen the user asks for an attachment, do not save or open it immediately unless they already said what they want done.\n\nDefault follow-up:\n\n- `Should I save it or open it?`\n\nIf the user says **save**:\n\n- ask where to save it if they did not already specify a location\n- then use `--save-attachments <dir>`\n- return the final saved path(s)\n\nIf the user says **open**:\n\n- first extract the attachment to a temporary or user-requested location\n- then open it with the system default app from the CLI\n- prefer the platform default opener instead of inventing app-specific commands\n- mention the file path you opened\n\nIf the attachment is text-like and the user likely wants contents rather than launching an external app, it is also acceptable to read or summarize it directly after asking.\n\n## Reference\n\nRead `references/storage-layout.md` when you need a quick map of Thunderbird's on-disk structure.\n\nFile v0.1.1:README.md\n\n# Thunderbird Skill for OpenClaw\n\nSearch and inspect local Mozilla Thunderbird mail storage directly from disk (mbox and Maildir), with filters for account, folder, sender, recipient, subject, body, unread state, time ranges, and attachments.\n\n## ClawHub\n\n- https://clawhub.ai/KomelT/clawhub-thunderbird-skill\n\n## Features\n\n- Detect Thunderbird profiles on Windows and Linux profile roots\n- List accounts from `prefs.js`\n- Search local mail in `Mail/` and `ImapMail/`\n- Filter by sender, recipient, subject, folder, free-text query, unread status\n- Filter by day or time range (`--today`, `--yesterday`, `--since`, `--until`)\n- Filter and export attachments (`--has-attachment`, `--attachment-name`, `--save-attachments`)\n- Output as table-like text or JSON\n\n## Quick start\n\nRun from the skill directory:\n\n```powershell\npython scripts/search_thunderbird.py --list-profiles\npython scripts/search_thunderbird.py --profile default-release --list-accounts\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --limit 20\n```\n\nSearch by attachment name and save files:\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --attachment-name invoice --save-attachments .\\out --limit 10\n```\n\n## Date filter behavior\n\n- `--since YYYY-MM-DD` starts at `00:00:00` UTC of that date\n- `--until YYYY-MM-DD` ends at `23:59:59.999999` UTC of that date\n- ISO-8601 timestamps are used exactly as provided\n\n## Project files\n\n- `SKILL.md`: skill usage instructions\n- `scripts/search_thunderbird.py`: local Thunderbird search CLI\n- `references/storage-layout.md`: Thunderbird storage reference\n- `LICENSE`: MIT license\n\nFile v0.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn7acy5qc9v8h6ang80wg9n2v982rxtt\",\n  \"slug\": \"thunderbird\",\n  \"version\": \"0.1.1\",\n  \"publishedAt\": 1773310313024\n}\n\nFile v0.1.1:references/storage-layout.md\n\n# Thunderbird storage layout\n\nUse this reference when inspecting local Thunderbird mail storage.\n\n## Common Windows profile location\n\n- `%APPDATA%\\Thunderbird\\Profiles\\<profile>`\n\nDetected examples on this machine can be discovered with:\n\n```powershell\nGet-ChildItem \"$env:APPDATA\\Thunderbird\\Profiles\"\n```\n\n## Common mail storage roots inside a profile\n\n- `Mail/` — local folders and POP accounts, usually mbox-style files\n- `ImapMail/` — IMAP account caches, often also mbox-style files\n\n## Mbox indicators\n\nThunderbird commonly stores folders as mbox files:\n\n- folder file with no extension, e.g. `Inbox`, `Sent`, `Archives`\n- sidecar `.msf` index file, e.g. `Inbox.msf`\n- optional `.sbd/` directory for subfolders\n\nRead the raw folder file as an mbox mailbox. Ignore `.msf` files for message extraction.\n\n## Maildir indicators\n\nSome setups may use Maildir-style storage. Look for directories containing:\n\n- `cur/`\n- `new/`\n- `tmp/`\n\nRead those with Python's `mailbox.Maildir`.\n\n## Practical cautions\n\n- Prefer read-only access.\n- Thunderbird may keep some files open while running; if a mailbox looks inconsistent, retry after Thunderbird sync settles or after closing Thunderbird.\n- Search results are only as current as Thunderbird's locally cached messages.\n- Ignore `.mozmsgs` directories unless specifically extracting Spotlight/Windows search helper data.\n\nFile v0.1.1:skill-card.md\n\n## Description:\n\nRead and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cache, locating messages by sender/recipient/subject/body, checking which account a mailbox belongs to, or answering inbox questions for a specific Thunderbird account such as \"do I have unread mail today?\" or \"search mail for user@example.com\".\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[komelt](https://clawhub.ai/user/komelt)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to inspect local Thunderbird profiles, find messages by account, folder, sender, recipient, subject, body, unread state, date range, or attachment, and summarize or export matching local mail artifacts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can expose sensitive local email content and metadata.\n\nMitigation: Use the narrowest profile, account, folder, query, and date filters possible, and avoid placing full bodies or JSON output in shared logs.\n\nRisk: Saving or opening email attachments can introduce normal email-attachment malware risk.\n\nMitigation: Save attachments only to an intended location and open unknown attachments only when the user accepts that risk.\n\nRisk: IMAP results may omit messages that are not present in Thunderbird's local cache.\n\nMitigation: Tell users when results come from local cache and may not represent the full server mailbox.\n\n## Reference(s):\n\n- [Thunderbird storage layout](references/storage-layout.md)\n- [ClawHub skill page](https://clawhub.ai/komelt/skills/thunderbird)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, guidance, files]\n\n**Output Format:** [Markdown guidance with inline shell commands; CLI results as table-like text or JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May write saved attachment files when the user explicitly requests attachment export.]\n\n## Skill Version(s):\n\n0.1.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.1.0: 4 files, 9124 bytes\n\nFiles: references/storage-layout.md (1370b), scripts/search_thunderbird.py (19584b), SKILL.md (6678b), _meta.json (130b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: thunderbird\ndescription: Read and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cache, locating messages by sender/recipient/subject/body, checking which account a mailbox belongs to, or answering inbox questions for a specific Thunderbird account such as \"do I have unread mail today?\" or \"search mail for user@example.com\".\n---\n\n# Thunderbird\n\nUse Thunderbird's local profile data as the source of truth for offline mail inspection. Prefer read-only access and search the raw local storage directly rather than relying on UI automation.\n\nRun the bundled script from the skill directory, or use an absolute path resolved from the skill root:\n\n- `python scripts/search_thunderbird.py ...`\n\nIf the current working directory is not the skill directory, resolve `scripts/search_thunderbird.py` relative to this `SKILL.md` location before running it.\n\n## Quick start\n\n1. Detect available profiles:\n   - `python scripts/search_thunderbird.py --list-profiles`\n2. List accounts in one profile:\n   - `python scripts/search_thunderbird.py --profile default-release --list-accounts`\n3. Search one mailbox account directly:\n   - `python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --limit 10`\n4. Narrow content search when needed:\n   - `--subject-only` to search only the subject line\n   - `--body-only` to search only the body/preview text\n   - `--exclude <text>` to remove noisy matches\n5. Return only unread inbox messages when needed:\n   - `python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --unread-only --limit 20`\n6. Extract, filter, or sort more when needed:\n   - `--show-body`\n   - `--unread-only`\n   - `--subject-only`\n   - `--body-only`\n   - `--exclude wordpress`\n   - `--today`\n   - `--yesterday`\n   - `--since 2026-03-11`\n   - `--until 2026-03-12T08:00:00+01:00`\n   - `--sort-by date|from|subject|to`\n   - `--sort-order asc|desc`\n   - `--json`\n\n## Workflow\n\n### 1. Pick the profile\n\nUse `--list-profiles` first if the profile is unknown. Accept either:\n\n- absolute profile path\n- exact profile directory name\n- unique profile-name fragment\n\nIf multiple profiles match, stop and choose explicitly.\n\n### 2. Pick the account when possible\n\nFor account-specific requests, do not scan every mailbox first.\n\nUse:\n\n- `--list-accounts` to inspect the profile\n- `--account <email-or-fragment>` to restrict work to one Thunderbird account\n- `--folder inbox|sent|archive|drafts|junk|trash|spam` to narrow further\n\nThis is usually both faster and easier than scanning the whole profile.\n\n### 3. Search local storage\n\nUse `scripts/search_thunderbird.py` for most tasks. It scans common Thunderbird storage roots:\n\n- `Mail/`\n- `ImapMail/`\n\nIt supports:\n\n- mbox folders such as `Inbox`, `Sent`, `Archives`\n- Maildir folders containing `cur/` and `new/`\n\n### 4. Return useful results\n\nBy default, summarize:\n\n- source mailbox path\n- date\n- from\n- to\n- subject\n- body preview\n\nPrefer focused summaries for the user. Use `--show-body` only when the full message text is necessary.\n\n## Common tasks\n\n### List profiles\n\n```powershell\npython scripts/search_thunderbird.py --list-profiles\n```\n\n### List accounts inside a profile\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --list-accounts\n```\n\n### Search one account inbox by keyword\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query contract --limit 20\n```\n\n### Find messages from a sender inside one account\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --from billing@example.com --limit 20\n```\n\n### Find messages by subject fragment and return JSON\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --subject invoice --json --limit 20\n```\n\n### Return only unread inbox messages\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --unread-only --limit 20\n```\n\n### Search only in subject or only in body\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --subject-only --limit 20\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query password --body-only --limit 20\n```\n\n### Exclude noisy matches\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query update --exclude wordpress --limit 20\n```\n\n### Sort messages by sender or subject\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --sort-by from --sort-order asc --limit 20\n```\n\n### Filter messages by time range\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --since 2026-01-01 --until 2026-01-02T08:00:00+01:00 --sort-by date --sort-order desc --limit 20\n```\n\n### Use day shortcuts\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --yesterday --sort-by date --sort-order desc --limit 20\n```\n\n### Extract full body text for a narrow match\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --query \"reset password\" --show-body --limit 5\n```\n\n## Interpretation rules\n\n- Treat `.msf` files as indexes, not message sources.\n- Prefer the raw mbox file when a mailbox file and `.msf` both exist.\n- Remember that IMAP results reflect cached local messages, not necessarily the full server mailbox.\n- If a message is not found, mention that local Thunderbird storage may not contain it or may not have synced it.\n- When the user names an email address, prefer `--account` before broader searches.\n- `--unread-only` depends on Thunderbird folder indexes (`.msf`) for mbox folders; if unread state is unavailable, say so instead of guessing.\n- `--since` and `--until` accept `YYYY-MM-DD` or ISO-8601 timestamps. Bare dates are interpreted as UTC midnight.\n- `--today` and `--yesterday` are UTC-based shortcuts and cannot be combined with `--since` or `--until`.\n- `--subject-only` and `--body-only` only change how `--query` is matched; do not combine them with each other.\n\n## Reference\n\nRead `references/storage-layout.md` when you need a quick map of Thunderbird's on-disk structure.\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7acy5qc9v8h6ang80wg9n2v982rxtt\",\n  \"slug\": \"thunderbird\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1773304596696\n}\n\nFile v0.1.0:references/storage-layout.md\n\n# Thunderbird storage layout\n\nUse this reference when inspecting local Thunderbird mail storage.\n\n## Common Windows profile location\n\n- `%APPDATA%\\Thunderbird\\Profiles\\<profile>`\n\nDetected examples on this machine can be discovered with:\n\n```powershell\nGet-ChildItem \"$env:APPDATA\\Thunderbird\\Profiles\"\n```\n\n## Common mail storage roots inside a profile\n\n- `Mail/` — local folders and POP accounts, usually mbox-style files\n- `ImapMail/` — IMAP account caches, often also mbox-style files\n\n## Mbox indicators\n\nThunderbird commonly stores folders as mbox files:\n\n- folder file with no extension, e.g. `Inbox`, `Sent`, `Archives`\n- sidecar `.msf` index file, e.g. `Inbox.msf`\n- optional `.sbd/` directory for subfolders\n\nRead the raw folder file as an mbox mailbox. Ignore `.msf` files for message extraction.\n\n## Maildir indicators\n\nSome setups may use Maildir-style storage. Look for directories containing:\n\n- `cur/`\n- `new/`\n- `tmp/`\n\nRead those with Python's `mailbox.Maildir`.\n\n## Practical cautions\n\n- Prefer read-only access.\n- Thunderbird may keep some files open while running; if a mailbox looks inconsistent, retry after Thunderbird sync settles or after closing Thunderbird.\n- Search results are only as current as Thunderbird's locally cached messages.\n- Ignore `.mozmsgs` directories unless specifically extracting Spotlight/Windows search helper data.","readmeExcerpt":"Skill: Thunderbird Owner: komelt Summary: Read and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cach... Tags: latest:0.1.1 Version history: v0.1.1 | 2026-03-12T10:11:53.024Z | auto Thunderbird skill 0.1.1 introduces attachment search and improves profile discovery. - Added support for searching, listing, and saving emai","codeSnippets":[],"executableExamples":[{"language":"powershell","snippet":"python scripts/search_thunderbird.py --list-profiles"},{"language":"powershell","snippet":"python scripts/search_thunderbird.py --profile default-release --list-accounts"},{"language":"powershell","snippet":"python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query contract --limit 20"},{"language":"powershell","snippet":"python scripts/search_thunderbird.py --profile default-release --account user@example.com --from billing@example.com --limit 20"},{"language":"powershell","snippet":"python scripts/search_thunderbird.py --profile default-release --account user@example.com --subject invoice --json --limit 20"},{"language":"powershell","snippet":"python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --unread-only --limit 20"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: thunderbird\ndescription: Read and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cache, locating messages by sender/recipient/subject/body, checking which account a mailbox belongs to, or answering inbox questions for a specific Thunderbird account such as \"do I have unread mail today?\" or \"search mail for user@example.com\".\n---\n\n# Thunderbird\n\nUse Thunderbird's local profile data as the source of truth for offline mail inspection. Prefer read-only access and search the raw local storage directly rather than relying on UI automation.\n\nRun the bundled script from the skill directory, or use an absolute path resolved from the skill root:\n\n- `python scripts/search_thunderbird.py ...`\n\nIf the current working directory is not the skill directory, resolve `scripts/search_thunderbird.py` relative to this `SKILL.md` location before running it.\n\n## Quick start\n\n1. Detect available profiles:\n   - `python scripts/search_thunderbird.py --list-profiles`\n2. List accounts in one profile:\n   - `python scripts/search_thunderbird.py --profile default-release --list-accounts`\n3. Search one mailbox account directly:\n   - `python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --limit 10`\n4. Narrow content search when needed:\n   - `--subject-only` to search only the subject line\n   - `--body-only` to search only the body/preview text\n   - `--exclude <text>` to remove noisy matches\n5. Return only unread inbox messages when needed:\n   - `python scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --unread-only --limit 20`\n6. Extract, filter, or sort more when needed:\n   - `--show-body`\n   - `--unread-only`\n   - `--subject-only`\n   - `--body-only`\n   - `--exclude wordpress`\n   - `--has-attachment`\n   - `--attachment-name invoice`\n   - `--list-attachments`\n   - `--save-attachments ./out`\n   - `--today`\n   - `--yesterday`\n   - `--since 2026-03-11`\n   - `--until 2026-03-12T08:00:00+01:00`\n   - `--sort-by date|from|subject|to`\n   - `--sort-order asc|desc`\n   - `--json`\n\n## Workflow\n\n### 1. Pick the profile\n\nUse `--list-profiles` first if the profile is unknown. The script now checks common Thunderbird profile roots on Windows and Linux automatically. Accept either:\n\n- absolute profile path\n- exact profile directory name\n- unique profile-name fragment\n\nIf multiple profiles match, stop and choose explicitly.\n\n### 2. Pick the account when possible\n\nFor account-specific requests, do not scan every mailbox first.\n\nUse:\n\n- `--list-accounts` to inspect the profile\n- `--account <email-or-fragment>` to restrict work to one Thunderbird account\n- `--folder inbox|sent|archive|drafts|junk|trash|spam` to narrow further\n\nThis is usually both faster and easier than scanning the whole profile.\n\n### 3. Search local storage\n\nUse `scripts/search_thunderbird.py` for most tasks. It"},{"path":"README.md","content":"# Thunderbird Skill for OpenClaw\n\nSearch and inspect local Mozilla Thunderbird mail storage directly from disk (mbox and Maildir), with filters for account, folder, sender, recipient, subject, body, unread state, time ranges, and attachments.\n\n## ClawHub\n\n- https://clawhub.ai/KomelT/clawhub-thunderbird-skill\n\n## Features\n\n- Detect Thunderbird profiles on Windows and Linux profile roots\n- List accounts from `prefs.js`\n- Search local mail in `Mail/` and `ImapMail/`\n- Filter by sender, recipient, subject, folder, free-text query, unread status\n- Filter by day or time range (`--today`, `--yesterday`, `--since`, `--until`)\n- Filter and export attachments (`--has-attachment`, `--attachment-name`, `--save-attachments`)\n- Output as table-like text or JSON\n\n## Quick start\n\nRun from the skill directory:\n\n```powershell\npython scripts/search_thunderbird.py --list-profiles\npython scripts/search_thunderbird.py --profile default-release --list-accounts\npython scripts/search_thunderbird.py --profile default-release --account user@example.com --folder inbox --query invoice --limit 20\n```\n\nSearch by attachment name and save files:\n\n```powershell\npython scripts/search_thunderbird.py --profile default-release --attachment-name invoice --save-attachments .\\out --limit 10\n```\n\n## Date filter behavior\n\n- `--since YYYY-MM-DD` starts at `00:00:00` UTC of that date\n- `--until YYYY-MM-DD` ends at `23:59:59.999999` UTC of that date\n- ISO-8601 timestamps are used exactly as provided\n\n## Project files\n\n- `SKILL.md`: skill usage instructions\n- `scripts/search_thunderbird.py`: local Thunderbird search CLI\n- `references/storage-layout.md`: Thunderbird storage reference\n- `LICENSE`: MIT license"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7acy5qc9v8h6ang80wg9n2v982rxtt\",\n  \"slug\": \"thunderbird\",\n  \"version\": \"0.1.1\",\n  \"publishedAt\": 1773310313024\n}"},{"path":"references/storage-layout.md","content":"# Thunderbird storage layout\n\nUse this reference when inspecting local Thunderbird mail storage.\n\n## Common Windows profile location\n\n- `%APPDATA%\\Thunderbird\\Profiles\\<profile>`\n\nDetected examples on this machine can be discovered with:\n\n```powershell\nGet-ChildItem \"$env:APPDATA\\Thunderbird\\Profiles\"\n```\n\n## Common mail storage roots inside a profile\n\n- `Mail/` — local folders and POP accounts, usually mbox-style files\n- `ImapMail/` — IMAP account caches, often also mbox-style files\n\n## Mbox indicators\n\nThunderbird commonly stores folders as mbox files:\n\n- folder file with no extension, e.g. `Inbox`, `Sent`, `Archives`\n- sidecar `.msf` index file, e.g. `Inbox.msf`\n- optional `.sbd/` directory for subfolders\n\nRead the raw folder file as an mbox mailbox. Ignore `.msf` files for message extraction.\n\n## Maildir indicators\n\nSome setups may use Maildir-style storage. Look for directories containing:\n\n- `cur/`\n- `new/`\n- `tmp/`\n\nRead those with Python's `mailbox.Maildir`.\n\n## Practical cautions\n\n- Prefer read-only access.\n- Thunderbird may keep some files open while running; if a mailbox looks inconsistent, retry after Thunderbird sync settles or after closing Thunderbird.\n- Search results are only as current as Thunderbird's locally cached messages.\n- Ignore `.mozmsgs` directories unless specifically extracting Spotlight/Windows search helper data."},{"path":"skill-card.md","content":"## Description:\n\nRead and search local Mozilla Thunderbird mail storage on disk. Use when working with Thunderbird profiles, extracting emails from local folders or IMAP cache, locating messages by sender/recipient/subject/body, checking which account a mailbox belongs to, or answering inbox questions for a specific Thunderbird account such as \"do I have unread mail today?\" or \"search mail for user@example.com\".\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[komelt](https://clawhub.ai/user/komelt)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to inspect local Thunderbird profiles, find messages by account, folder, sender, recipient, subject, body, unread state, date range, or attachment, and summarize or export matching local mail artifacts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can expose sensitive local email content and metadata.\n\nMitigation: Use the narrowest profile, account, folder, query, and date filters possible, and avoid placing full bodies or JSON output in shared logs.\n\nRisk: Saving or opening email attachments can introduce normal email-attachment malware risk.\n\nMitigation: Save attachments only to an intended location and open unknown attachments only when the user accepts that risk.\n\nRisk: IMAP results may omit messages that are not present in Thunderbird's local cache.\n\nMitigation: Tell users when results come from local cache and may not represent the full server mailbox.\n\n## Reference(s):\n\n- [Thunderbird storage layout](references/storage-layout.md)\n- [ClawHub skill page](https://clawhub.ai/komelt/skills/thunderbird)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, guidance, files]\n\n**Output Format:** [Markdown guidance with inline shell commands; CLI results as table-like text or JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May write saved attachment files when the user explicitly requests attachment export.]\n\n## Skill Version(s):\n\n0.1.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1604,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:59:54.369Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:59:54.369Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:45:41.458Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}