{
  "schemaVersion": "1.0",
  "item": {
    "slug": "fastmail-suite",
    "name": "Fastmail Suite",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/TassieDaddy/fastmail-suite",
    "canonicalUrl": "https://clawhub.ai/TassieDaddy/fastmail-suite",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/fastmail-suite",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fastmail-suite",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/calendar_caldav.py",
      "scripts/contacts.py",
      "scripts/fastmail.py",
      "scripts/jmap_client.py",
      "scripts/mail.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-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/fastmail-suite"
    },
    "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/fastmail-suite",
    "agentPageUrl": "https://openagent3.xyz/skills/fastmail-suite/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fastmail-suite/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fastmail-suite/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": "Fastmail Suite",
        "body": "Use the bundled scripts (stdlib-only) to interact with Fastmail safely."
      },
      {
        "title": "Quick start",
        "body": "Set credentials/tokens:\n\n# JMAP token (Mail + Contacts scopes)\nexport FASTMAIL_TOKEN='…'\n\n# CalDAV app password (calendar)\nexport FASTMAIL_CALDAV_USER='you@yourdomain'\nexport FASTMAIL_CALDAV_PASS='app-password'\n\n# Optional: redact output (default is 1)\nexport FASTMAIL_REDACT=1\n\nVerify setup:\n\npython3 skills/fastmail-suite/scripts/suite.py status"
      },
      {
        "title": "Status / onboarding checks",
        "body": "python3 skills/fastmail-suite/scripts/suite.py status\n\nExpected style:\n\nMail (JMAP): OK / MISSING TOKEN / AUTH FAILED\nCalendar (CalDAV): OK / MISSING APP PASSWORD / AUTH FAILED\nContacts (JMAP): OK / MISSING TOKEN / AUTH FAILED"
      },
      {
        "title": "Inbox triage",
        "body": "python3 skills/fastmail-suite/scripts/suite.py triage today\npython3 skills/fastmail-suite/scripts/suite.py triage last-7d\n\nTriage summarizes:\n\ntop senders,\naction-needed subject patterns (invoice, bill, payment, due, confirm, action required, reminder, ...),\nhighlights for friends.tas.edu.au and bill/payment-like items."
      },
      {
        "title": "Search",
        "body": "python3 skills/fastmail-suite/scripts/suite.py search \"from:billing@ subject:invoice last:7d\"\npython3 skills/fastmail-suite/scripts/suite.py search \"has:attachment before:2026-02-01 tax\"\npython3 skills/fastmail-suite/scripts/suite.py search \"after:2026-02-01 reminder\"\n\nSupported query tokens:\n\nfrom:foo\nsubject:bar\nhas:attachment\nlast:7d (and other Nd forms)\nbefore:YYYY-MM-DD\nafter:YYYY-MM-DD\nBare words → subject/body text search"
      },
      {
        "title": "Thread summary",
        "body": "python3 skills/fastmail-suite/scripts/suite.py thread <email-id>\npython3 skills/fastmail-suite/scripts/suite.py thread <thread-id>\npython3 skills/fastmail-suite/scripts/suite.py thread \"school invoice\"\n\nShows concise thread summary:\n\nparticipants,\nrough timeline,\nlatest 1–2 messages with short plain-text summary."
      },
      {
        "title": "Email (JMAP)",
        "body": "python3 skills/fastmail-suite/scripts/fastmail.py mail inbox --limit 20\npython3 skills/fastmail-suite/scripts/fastmail.py mail search \"invoice\" --limit 10\npython3 skills/fastmail-suite/scripts/fastmail.py mail read <email-id>"
      },
      {
        "title": "Contacts (JMAP)",
        "body": "python3 skills/fastmail-suite/scripts/fastmail.py contacts list --limit 20\npython3 skills/fastmail-suite/scripts/fastmail.py contacts search \"alice\" --limit 5\npython3 skills/fastmail-suite/scripts/fastmail.py contacts get <contact-id>"
      },
      {
        "title": "Calendar (CalDAV)",
        "body": "python3 skills/fastmail-suite/scripts/fastmail.py calendar calendars\npython3 skills/fastmail-suite/scripts/fastmail.py calendar upcoming --days 7"
      },
      {
        "title": "Security & Credentials (important)",
        "body": "Fastmail Suite works with real Fastmail credentials, so the design is intentionally conservative."
      },
      {
        "title": "Required",
        "body": "FASTMAIL_TOKEN — Fastmail JMAP API token (Mail + Contacts scopes). Best practice is to use a read-only token for normal usage."
      },
      {
        "title": "Optional but supported",
        "body": "FASTMAIL_TOKEN_SEND — separate JMAP token with Email Submission scope for sending mail. Only used if you explicitly enable writes.\nFASTMAIL_CALDAV_USER / FASTMAIL_CALDAV_PASS — Fastmail app password for calendar (CalDAV).\nFASTMAIL_REDACT — controls redaction of output (default 1 = redacted).\nFASTMAIL_ENABLE_WRITES — when set to 1, enables write operations (send/move/update). Omit or set to 0 to keep read-only."
      },
      {
        "title": "Safety model",
        "body": "Redaction is ON by default\nOutput is redacted unless you pass --raw where supported. FASTMAIL_REDACT=1 is the default.\n\n\nWrites are OFF by default\nThe skill will not send/move/update anything unless FASTMAIL_ENABLE_WRITES=1 and you have provided appropriate tokens (for example FASTMAIL_TOKEN_SEND for sending mail).\n\n\nSeparation of roles\nYou can keep a strict separation:\n\nEmail reading: FASTMAIL_TOKEN\nEmail sending: FASTMAIL_TOKEN_SEND (optional, only when writes are enabled)\nCalendar: FASTMAIL_CALDAV_USER + FASTMAIL_CALDAV_PASS (Fastmail app password)\n\n\n\nRead-only mode is fully supported\nYou can run the entire suite (status, triage, search, thread, contacts, calendar read) with a read-only JMAP token + calendar app password, without ever enabling writes."
      },
      {
        "title": "v0.1.1",
        "body": "Contacts commands (list, search, get) tested against real Fastmail accounts.\nsuite.py status now probes Contacts via JMAP and reports Contacts (JMAP) health."
      },
      {
        "title": "v0.2",
        "body": "Added scripts/suite.py with onboarding status checks for JMAP + CalDAV.\nAdded mail workflows:\n\ntriage today\ntriage last-7d\nsearch <query> with token parser (from:, subject:, has:attachment, last:, before:, after:)\nthread <id-or-snippet> conversation summary\n\n\nAdded wrapper passthrough in scripts/fastmail.py for suite ....\nAdded quick-start and usage examples for status/triage/search/thread."
      }
    ],
    "body": "Fastmail Suite\n\nUse the bundled scripts (stdlib-only) to interact with Fastmail safely.\n\nQuick start\n\nSet credentials/tokens:\n\n# JMAP token (Mail + Contacts scopes)\nexport FASTMAIL_TOKEN='…'\n\n# CalDAV app password (calendar)\nexport FASTMAIL_CALDAV_USER='you@yourdomain'\nexport FASTMAIL_CALDAV_PASS='app-password'\n\n# Optional: redact output (default is 1)\nexport FASTMAIL_REDACT=1\n\n\nVerify setup:\n\npython3 skills/fastmail-suite/scripts/suite.py status\n\nSuite CLI (v0.2)\nStatus / onboarding checks\npython3 skills/fastmail-suite/scripts/suite.py status\n\n\nExpected style:\n\nMail (JMAP): OK / MISSING TOKEN / AUTH FAILED\nCalendar (CalDAV): OK / MISSING APP PASSWORD / AUTH FAILED\nContacts (JMAP): OK / MISSING TOKEN / AUTH FAILED\nInbox triage\npython3 skills/fastmail-suite/scripts/suite.py triage today\npython3 skills/fastmail-suite/scripts/suite.py triage last-7d\n\n\nTriage summarizes:\n\ntop senders,\naction-needed subject patterns (invoice, bill, payment, due, confirm, action required, reminder, ...),\nhighlights for friends.tas.edu.au and bill/payment-like items.\nSearch\npython3 skills/fastmail-suite/scripts/suite.py search \"from:billing@ subject:invoice last:7d\"\npython3 skills/fastmail-suite/scripts/suite.py search \"has:attachment before:2026-02-01 tax\"\npython3 skills/fastmail-suite/scripts/suite.py search \"after:2026-02-01 reminder\"\n\n\nSupported query tokens:\n\nfrom:foo\nsubject:bar\nhas:attachment\nlast:7d (and other Nd forms)\nbefore:YYYY-MM-DD\nafter:YYYY-MM-DD\nBare words → subject/body text search\nThread summary\npython3 skills/fastmail-suite/scripts/suite.py thread <email-id>\npython3 skills/fastmail-suite/scripts/suite.py thread <thread-id>\npython3 skills/fastmail-suite/scripts/suite.py thread \"school invoice\"\n\n\nShows concise thread summary:\n\nparticipants,\nrough timeline,\nlatest 1–2 messages with short plain-text summary.\nOther existing scripts\nEmail (JMAP)\npython3 skills/fastmail-suite/scripts/fastmail.py mail inbox --limit 20\npython3 skills/fastmail-suite/scripts/fastmail.py mail search \"invoice\" --limit 10\npython3 skills/fastmail-suite/scripts/fastmail.py mail read <email-id>\n\nContacts (JMAP)\npython3 skills/fastmail-suite/scripts/fastmail.py contacts list --limit 20\npython3 skills/fastmail-suite/scripts/fastmail.py contacts search \"alice\" --limit 5\npython3 skills/fastmail-suite/scripts/fastmail.py contacts get <contact-id>\n\nCalendar (CalDAV)\npython3 skills/fastmail-suite/scripts/fastmail.py calendar calendars\npython3 skills/fastmail-suite/scripts/fastmail.py calendar upcoming --days 7\n\nSecurity & Credentials (important)\n\nFastmail Suite works with real Fastmail credentials, so the design is intentionally conservative.\n\nRequired\nFASTMAIL_TOKEN — Fastmail JMAP API token (Mail + Contacts scopes). Best practice is to use a read-only token for normal usage.\nOptional but supported\nFASTMAIL_TOKEN_SEND — separate JMAP token with Email Submission scope for sending mail. Only used if you explicitly enable writes.\nFASTMAIL_CALDAV_USER / FASTMAIL_CALDAV_PASS — Fastmail app password for calendar (CalDAV).\nFASTMAIL_REDACT — controls redaction of output (default 1 = redacted).\nFASTMAIL_ENABLE_WRITES — when set to 1, enables write operations (send/move/update). Omit or set to 0 to keep read-only.\nSafety model\n\nRedaction is ON by default\nOutput is redacted unless you pass --raw where supported. FASTMAIL_REDACT=1 is the default.\n\nWrites are OFF by default\nThe skill will not send/move/update anything unless FASTMAIL_ENABLE_WRITES=1 and you have provided appropriate tokens (for example FASTMAIL_TOKEN_SEND for sending mail).\n\nSeparation of roles\nYou can keep a strict separation:\n\nEmail reading: FASTMAIL_TOKEN\nEmail sending: FASTMAIL_TOKEN_SEND (optional, only when writes are enabled)\nCalendar: FASTMAIL_CALDAV_USER + FASTMAIL_CALDAV_PASS (Fastmail app password)\n\nRead-only mode is fully supported\nYou can run the entire suite (status, triage, search, thread, contacts, calendar read) with a read-only JMAP token + calendar app password, without ever enabling writes.\n\nChangelog\nv0.1.1\nContacts commands (list, search, get) tested against real Fastmail accounts.\nsuite.py status now probes Contacts via JMAP and reports Contacts (JMAP) health.\nv0.2\nAdded scripts/suite.py with onboarding status checks for JMAP + CalDAV.\nAdded mail workflows:\ntriage today\ntriage last-7d\nsearch <query> with token parser (from:, subject:, has:attachment, last:, before:, after:)\nthread <id-or-snippet> conversation summary\nAdded wrapper passthrough in scripts/fastmail.py for suite ....\nAdded quick-start and usage examples for status/triage/search/thread."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TassieDaddy/fastmail-suite",
    "publisherUrl": "https://clawhub.ai/TassieDaddy/fastmail-suite",
    "owner": "TassieDaddy",
    "version": "0.1.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/fastmail-suite",
    "downloadUrl": "https://openagent3.xyz/downloads/fastmail-suite",
    "agentUrl": "https://openagent3.xyz/skills/fastmail-suite/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fastmail-suite/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fastmail-suite/agent.md"
  }
}