Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.csitte/mailwarden

NPM · MAILWARDEN · SCANNED AUG 3

Native Gmail MCP server: search, labels, archive, trash, attachments, and snooze.

Available components

+5 this week 29 Trust /100
Trust breakdown (6 categories)

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 →

Install

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

# add to Claude Code
claude mcp add csitte-mailwarden -- npx -y mailwarden
# add to Codex CLI
codex mcp add csitte-mailwarden -- npx -y mailwarden
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "csitte-mailwarden": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mailwarden"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add csitte-mailwarden --command npx --arg -y --arg mailwarden
# ~/.hermes/config.yaml
mcp_servers:
  csitte-mailwarden:
    command: "npx"
    args: ["-y", "mailwarden"]
// mcp.json
{
  "mcpServers": {
    "csitte-mailwarden": {
      "command": "npx",
      "args": [
        "-y",
        "mailwarden"
      ]
    }
  }
}
Changelog

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.

Diagnostics

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.

MCP tools — 15 exposed · ~1,300 tokens

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.

Tool Tokens
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.

NameTypeReqDescription
threadIdstringyes
NameTypeReqDescription
okbooleanyes

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.

NameTypeReqDescription
addarray
maxMessagesinteger
querystringyes
removearray
NameTypeReqDescription
cappedbooleanyes
failedarrayyes
matchedMessagesnumberyes
modifiedMessagesnumberyes
modifiedThreadCountnumberyes
modifiedThreadsarrayyes

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.

NameTypeReqDescription
attachmentIdstringyes
destPathstringyes
messageIdstringyes
NameTypeReqDescription
savedstringyes

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).

NameTypeReqDescription
fullboolean
threadIdstringyes
NameTypeReqDescription
messagesarrayyes
threadIdstringyes

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.

NameTypeReqDescription
labelsarrayyes

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.

NameTypeReqDescription
snoozedarrayyes

No examples provided.

mark_read ~36

Mark a thread as read. SIDE EFFECTS: removes UNREAD; reversible via mark_unread.

NameTypeReqDescription
threadIdstringyes
NameTypeReqDescription
okbooleanyes

No examples provided.

mark_unread ~36

Mark a thread as unread. SIDE EFFECTS: adds UNREAD; reversible via mark_read.

NameTypeReqDescription
threadIdstringyes
NameTypeReqDescription
okbooleanyes

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.

NameTypeReqDescription
addarray
removearray
threadIdstringyes
NameTypeReqDescription
okbooleanyes

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.

NameTypeReqDescription
maxResultsinteger
pageTokenstring
querystringyes
NameTypeReqDescription
nextPageTokenstring
threadsarrayyes

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.

NameTypeReqDescription
threadIdstringyes
untilstringyes
NameTypeReqDescription
snoozedUntilstringyes
threadIdstringyes

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.

NameTypeReqDescription
datestringyes
errorsarrayyes
failedCountnumberyes
wokenarrayyes
wokenCountnumberyes

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.

NameTypeReqDescription
threadIdstringyes
NameTypeReqDescription
okbooleanyes

No examples provided.

unsnooze ~44

Cancel a snooze: return the thread to the inbox now. SIDE EFFECTS: removes the snooze label, restores INBOX.

NameTypeReqDescription
threadIdstringyes
NameTypeReqDescription
threadIdstringyes
unsnoozedbooleanyes

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.

NameTypeReqDescription
threadIdstringyes
NameTypeReqDescription
okbooleanyes

No examples provided.