io.github.csitte/mailwarden
NPM · MAILWARDEN · SCANNED AUG 3
Native Gmail MCP server: search, labels, archive, trash, attachments, and snooze.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security31
- Malware scan not yet available for this package.Unverified
- CVE check failed: a known high-severity CVE affects uuid 9.0.1, reached via google-auth-library > gaxios > uuid. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (152 of 154), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to csitte/mailwarden). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability0
- Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Stability & Change Management0
- Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.Unverified
Tool Coverage0
- Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet.Unverified
Capabilities0
- Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet.Unverified
Unverified: 4 categories
Categories scored 0 because our sandbox run of this package has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you. How we score packages →
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · mailwarden
claude mcp add csitte-mailwarden -- npx -y mailwarden
codex mcp add csitte-mailwarden -- npx -y mailwarden
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"csitte-mailwarden": {
"type": "local",
"command": [
"npx",
"-y",
"mailwarden"
],
"enabled": true
}
}
} openclaw mcp add csitte-mailwarden --command npx --arg -y --arg mailwarden
mcp_servers:
csitte-mailwarden:
command: "npx"
args: ["-y", "mailwarden"] {
"mcpServers": {
"csitte-mailwarden": {
"command": "npx",
"args": [
"-y",
"mailwarden"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 −49
- Stability: 0.23 → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Tool coverage: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Package version: 0.2.0 → 0.3.0 functional
- 2 Aug 26 +60
- CVE-2026-41907 affects this package: high ▼ security
- Known CVEs: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Provenance: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- The attested source repository moved: csitte/mailwarden security
- Tool coverage: 100 → unverified ▼ functional
- License: unverified → pass ▲ functional
- Schema quality: unverified → excellent ▲ functional
- Dependency health: unverified → partial ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Stability: unverified → 0.23 ▲ functional
- Licence: MIT functional
- Package version: 0.1.10 → 0.2.0 functional
- 1 Aug 26 +12
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 31 Jul 26 −18
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 24
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- Source repo:
- csitte/mailwarden
- Certificate issuer:
- https://token.actions.githubusercontent.com
- Certificate SAN:
- https://github.com/csitte/mailwarden/.github/workflows/publish.yml@refs/tags/v0.3.0
- Rekor log index:
- 2335679213
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:e66bbff3f7535f1e63a2fb60b9aecfa2f267b6a1c68c954f02cdc43ae20fb8feb0034d33e6928f766a3c090b404f30e903a26a2688280e3a5aa05360e
- Discovery method:
- attestation_endpoint
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
Dependencies 152 packages
152 packages in the resolved dependency tree · 122 deprecated · 46 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
archive ~80
Archive a thread (remove it from the inbox). USE WHEN: inbox triage — the thread is handled and should leave the inbox. DO NOT USE: to delete (use trash) or to defer to a date (use snooze). SIDE EFFECTS: thread leaves the inbox; reversible via modify_labels add INBOX.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | yes | — |
No examples provided.
bulk_modify ~245
Bulk-apply label changes to every message matching a Gmail query, batched at 1000 messages per API request. Returns matched/modified counts, affected thread IDs (capped at 500 — modifiedThreadCount has the true total), and per-chunk failures (partial success is reported, not hidden). If more messages match than maxMessages, only the first maxMessages are processed and 'capped' is true — raise maxMessages or re-run to finish the rest. Note: the query hits Gmail's search index as-is, WITHOUT the live re-verification search performs — for read-state-precise bulk ops, verify with search first. USE WHEN: mass operations — 'archive all newsletters older than 30 days' (query + remove INBOX), bulk labeling, bulk mark-read. DO NOT USE: for a single thread (use modify_labels or the dedicated tools), or with neither add nor remove. SIDE EFFECTS: modifies up to maxMessages messages in one call; label changes are reversible by the inverse call.
| Name | Type | Req | Description |
|---|---|---|---|
| add | array | — | — |
| maxMessages | integer | — | — |
| query | string | yes | — |
| remove | array | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| capped | boolean | yes | — |
| failed | array | yes | — |
| matchedMessages | number | yes | — |
| modifiedMessages | number | yes | — |
| modifiedThreadCount | number | yes | — |
| modifiedThreads | array | yes | — |
No examples provided.
download_attachment ~127
Download an attachment to a local file path. If MAILWARDEN_DOWNLOAD_DIR is set, destPath is resolved inside (and restricted to) that directory. USE WHEN: the user wants an attachment saved to disk (IDs come from get_thread's attachment metadata). SIDE EFFECTS: writes a local file; never overwrites — an existing file gets a numeric suffix (file-1.pdf). The response's 'saved' field is the path actually used. Mailbox unchanged.
| Name | Type | Req | Description |
|---|---|---|---|
| attachmentId | string | yes | — |
| destPath | string | yes | — |
| messageId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| saved | string | yes | — |
No examples provided.
get_thread ~81
Fetch a full thread by ID: headers, plaintext + HTML bodies, and attachment metadata. USE WHEN: reading a thread's content after finding it via search. DO NOT USE: with a message ID — this takes thread IDs. SIDE EFFECTS: none (does not mark as read).
| Name | Type | Req | Description |
|---|---|---|---|
| full | boolean | — | — |
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| messages | array | yes | — |
| threadId | string | yes | — |
No examples provided.
list_labels ~43
List all Gmail labels (system + user). USE WHEN: you need label IDs/names before modify_labels, or to inspect the mailbox structure. SIDE EFFECTS: none.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| labels | array | yes | — |
No examples provided.
list_snoozed ~28
List all snoozed threads with their due dates. SIDE EFFECTS: none.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| snoozed | array | yes | — |
No examples provided.
mark_read ~36
Mark a thread as read. SIDE EFFECTS: removes UNREAD; reversible via mark_unread.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | yes | — |
No examples provided.
mark_unread ~36
Mark a thread as unread. SIDE EFFECTS: adds UNREAD; reversible via mark_read.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | yes | — |
No examples provided.
modify_labels ~98
Add/remove labels on a thread. Archive = remove 'INBOX'; mark read = remove 'UNREAD'. USE WHEN: applying custom labels or label combinations in one call. DO NOT USE: for plain archive/read/unread — the dedicated tools are clearer. SIDE EFFECTS: changes the thread's labels; reversible by the inverse call.
| Name | Type | Req | Description |
|---|---|---|---|
| add | array | — | — |
| remove | array | — | — |
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | yes | — |
No examples provided.
search ~147
Search Gmail with native query syntax (e.g. 'in:inbox from:[email protected] newer_than:7d'). Returns thread summaries; read-state/category predicates are re-verified against each hit's live labels. Paginated: when more results exist, the response carries a nextPageToken — pass it back via pageToken to fetch the next page. USE WHEN: locating threads by sender, subject, date, label, or read state. DO NOT USE: to fetch a thread you already have the ID of (use get_thread). SIDE EFFECTS: none.
| Name | Type | Req | Description |
|---|---|---|---|
| maxResults | integer | — | — |
| pageToken | string | — | — |
| query | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| nextPageToken | string | — | — |
| threads | array | yes | — |
No examples provided.
snooze ~110
Snooze a thread until a date (YYYY-MM-DD): archives it now, resurfaces on/after that date when sweep_snoozed runs. USE WHEN: deferring a thread to a later date instead of leaving it in the inbox. DO NOT USE: for permanent removal (use archive or trash). SIDE EFFECTS: removes INBOX, adds a dated MCP/Snoozed label; reversible via unsnooze.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| until | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| snoozedUntil | string | yes | — |
| threadId | string | yes | — |
No examples provided.
sweep_snoozed ~95
Resurface all snoozed threads whose date is due (<= today), batched at 1000 messages per API request. USE WHEN: the user asks to process due snoozes, or as a scheduled maintenance call. SIDE EFFECTS: due threads return to the inbox marked unread; safe to run repeatedly. failedCount/errors report messages a batch could not wake (their label is kept for the next sweep).
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | — |
| errors | array | yes | — |
| failedCount | number | yes | — |
| woken | array | yes | — |
| wokenCount | number | yes | — |
No examples provided.
trash ~70
Move a thread to Trash. USE WHEN: the thread should be discarded. DO NOT USE: for inbox cleanup of mail worth keeping (use archive). SIDE EFFECTS: thread moves to Trash; recoverable via untrash for ~30 days, then Gmail deletes it permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | yes | — |
No examples provided.
unsnooze ~44
Cancel a snooze: return the thread to the inbox now. SIDE EFFECTS: removes the snooze label, restores INBOX.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| unsnoozed | boolean | yes | — |
No examples provided.
untrash ~60
Restore a thread from Trash. SIDE EFFECTS: removes the TRASH label; user labels are preserved, but INBOX is NOT re-added — use modify_labels (add INBOX) to return it to the inbox.
| Name | Type | Req | Description |
|---|---|---|---|
| threadId | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| ok | boolean | yes | — |
No examples provided.