{"id":"67c0a22d-a725-4af9-8d91-6737a726bce1","entityType":"agent","slug":"clawhub-534422530-laosi-email-helper","name":"Email Helper Pro","canonicalUrl":"https://www.xpersona.co/agent/clawhub-534422530-laosi-email-helper","canonicalPath":"/agent/clawhub-534422530-laosi-email-helper","generatedAt":"2026-10-11T17:45:54.121Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T14:00:58.047Z","emptyReason":null},"description":"邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Skill: Email Helper Pro Owner: 534422530 Summary: 邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Tags: communication:2.0.0, email:2.0.0, imap:2.0.0, latest:2.0.0, pro:2.0.0, smtp:2.0.0 Version history: v2.0.0 | 2026-05-29T23:31:24.317Z | auto - Added hub.json to support platform integration. - Marked the skill as \"premium\" with a badge in SKILL.md. - Updated version to 2.0.0 and improved skill metadata. - Minor text an","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s170k9770tgh0506hw0dwtb6pd83kwyq:laosi-email-helper","sourceUrl":"https://clawhub.ai/534422530/laosi-email-helper","homepage":"https://clawhub.ai/534422530/skills/laosi-email-helper","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/534422530/laosi-email-helper","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/534422530/skills/laosi-email-helper","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Skill: Email Helper Pro Owner: 534422530 Summary: 邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Tags: communication:"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:00:58.047Z","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-11T14:00:58.047Z","emptyReason":null},"stars":null,"forks":null,"downloads":1053,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:00:57.991Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T14:00:58.047Z","lastCrawledAt":"2026-10-11T14:00:57.991Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T14:00:57.991Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-05-29T23:31:24.317Z","changelog":"- Added hub.json to support platform integration. - Marked the skill as \"premium\" with a badge in SKILL.md. - Updated version to 2.0.0 and improved skill metadata. - Minor text and formatting changes (SKILL.md) to align with the new release. - No new user-facing features; functionality remains as in the previous version.","fileCount":4,"zipByteSize":4653},{"version":"1.0.0","createdAt":"2026-05-29T01:25:39.434Z","changelog":"- Initial release of the Email Helper skill. - Compose, send (SMTP), and manage drafts with template support. - Read inbox emails via IMAP. - Features auto-archiving, draft persistence, and email search. - Provides ready-to-use templates for common scenarios (weekly report, meeting invite, follow-up). - Designed for productivity and automation of email tasks.","fileCount":3,"zipByteSize":4309}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170k9770tgh0506hw0dwtb6pd83kwyq:laosi-email-helper","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-534422530-laosi-email-helper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/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-11T17:45:54.121Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-534422530-laosi-email-helper/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":"high","updatedAt":"2026-10-11T14:00:58.047Z","emptyReason":null},"readme":"Skill: Email Helper Pro\n\nOwner: 534422530\n\nSummary: 邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档\n\nTags: communication:2.0.0, email:2.0.0, imap:2.0.0, latest:2.0.0, pro:2.0.0, smtp:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-05-29T23:31:24.317Z | auto\n\n- Added hub.json to support platform integration.\n- Marked the skill as \"premium\" with a badge in SKILL.md.\n- Updated version to 2.0.0 and improved skill metadata.\n- Minor text and formatting changes (SKILL.md) to align with the new release.\n- No new user-facing features; functionality remains as in the previous version.\n\nv1.0.0 | 2026-05-29T01:25:39.434Z | auto\n\n- Initial release of the Email Helper skill.\n- Compose, send (SMTP), and manage drafts with template support.\n- Read inbox emails via IMAP.\n- Features auto-archiving, draft persistence, and email search.\n- Provides ready-to-use templates for common scenarios (weekly report, meeting invite, follow-up).\n- Designed for productivity and automation of email tasks.\n\nArchive index:\n\nArchive v2.0.0: 4 files, 4653 bytes\n\nFiles: hub.json (579b), skill-card.md (1965b), SKILL.md (6884b), _meta.json (137b)\n\nFile v2.0.0:SKILL.md\n\n---\nbadge: premium\nname: email-helper\nversion: 2.0.0\ndescription: 邮件助手 - 编写/发�?管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归�?tags: [email, communication, smtp, imap, productivity]\nauthor: laosi\nsource: original\n---\n\n# Email Helper - 邮件助手\n\n> 激活词: 邮件 / 发邮�?/ email\n\n## 功能\n\n- 编写邮件草稿（支持模板）\n- 通过SMTP发送邮�?- 通过IMAP读取收件�?- 邮件归档和搜�?- 草稿本地持久�?\n## Python 实现\n\n```python\nimport os, json, smtplib, imaplib, email\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom datetime import datetime\nfrom typing import List, Optional\n\nDRAFT_FILE = os.path.join(os.path.dirname(__file__), \"email_drafts.json\")\n\nclass EmailHelper:\n    def __init__(self):\n        os.makedirs(os.path.dirname(DRAFT_FILE), exist_ok=True)\n        self.drafts = self._load_drafts()\n    \n    def _load_drafts(self) -> list:\n        if os.path.exists(DRAFT_FILE):\n            with open(DRAFT_FILE, encoding=\"utf-8\") as f:\n                return json.load(f)\n        return []\n    \n    def _save_drafts(self):\n        with open(DRAFT_FILE, \"w\", encoding=\"utf-8\") as f:\n            json.dump(self.drafts, f, ensure_ascii=False, indent=2)\n    \n    def create_draft(self, to_addr: str, subject: str, body: str,\n                     cc: str = \"\", bcc: str = \"\") -> dict:\n        \"\"\"创建邮件草稿\"\"\"\n        draft = {\n            \"id\": len(self.drafts) + 1,\n            \"to\": to_addr,\n            \"cc\": cc,\n            \"bcc\": bcc,\n            \"subject\": subject,\n            \"body\": body,\n            \"status\": \"draft\",\n            \"created\": datetime.now().isoformat(),\n        }\n        self.drafts.append(draft)\n        self._save_drafts()\n        return draft\n    \n    def build_mime(self, draft_id: int) -> Optional[MIMEMultipart]:\n        \"\"\"将草稿构建为MIME消息\"\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return None\n        \n        msg = MIMEMultipart()\n        msg[\"From\"] = draft.get(\"from_addr\", \"sender@example.com\")\n        msg[\"To\"] = draft[\"to\"]\n        if draft.get(\"cc\"):\n            msg[\"Cc\"] = draft[\"cc\"]\n        msg[\"Subject\"] = draft[\"subject\"]\n        msg.attach(MIMEText(draft[\"body\"], \"plain\", \"utf-8\"))\n        return msg\n    \n    def send(self, draft_id: int, smtp_host: str, smtp_port: int,\n             username: str, password: str, use_tls: bool = True) -> dict:\n        \"\"\"通过SMTP发送草�?\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return {\"error\": f\"Draft #{draft_id} not found\"}\n        \n        msg = self.build_mime(draft_id)\n        if not msg:\n            return {\"error\": \"Failed to build MIME message\"}\n        \n        try:\n            server = smtplib.SMTP(smtp_host, smtp_port, timeout=10)\n            if use_tls:\n                server.starttls()\n            server.login(username, password)\n            server.send_message(msg)\n            server.quit()\n            \n            draft[\"status\"] = \"sent\"\n            draft[\"sent_at\"] = datetime.now().isoformat()\n            self._save_drafts()\n            return {\"success\": True, \"to\": draft[\"to\"], \"subject\": draft[\"subject\"]}\n        except Exception as e:\n            return {\"error\": str(e)}\n    \n    def inbox(self, imap_host: str, username: str, password: str,\n              limit: int = 10) -> List[dict]:\n        \"\"\"读取收件�?\"\"\n        try:\n            conn = imaplib.IMAP4_SSL(imap_host)\n            conn.login(username, password)\n            conn.select(\"INBOX\")\n            \n            _, data = conn.search(None, \"ALL\")\n            ids = data[0].split()[-limit:]  # 最近的N�?            messages = []\n            \n            for mid in ids:\n                _, msg_data = conn.fetch(mid, \"(RFC822)\")\n                raw = email.message_from_bytes(msg_data[0][1])\n                messages.append({\n                    \"from\": raw[\"From\"],\n                    \"subject\": raw[\"Subject\"],\n                    \"date\": raw[\"Date\"],\n                    \"body\": self._get_text(raw)[:200],\n                })\n            \n            conn.logout()\n            return messages\n        except Exception as e:\n            return [{\"error\": str(e)}]\n    \n    def _get_text(self, msg) -> str:\n        \"\"\"从邮件对象提取正�?\"\"\n        if msg.is_multipart():\n            for part in msg.walk():\n                if part.get_content_type() == \"text/plain\":\n                    return part.get_payload(decode=True).decode(\"utf-8\", errors=\"ignore\")\n        return msg.get_payload(decode=True).decode(\"utf-8\", errors=\"ignore\") if msg.get_payload(decode=True) else \"\"\n    \n    def list_drafts(self, status: str = None) -> list:\n        \"\"\"列出草稿\"\"\"\n        if status:\n            return [d for d in self.drafts if d[\"status\"] == status]\n        return self.drafts\n    \n    def delete_draft(self, draft_id: int) -> bool:\n        \"\"\"删除草稿\"\"\"\n        before = len(self.drafts)\n        self.drafts = [d for d in self.drafts if d[\"id\"] != draft_id]\n        if len(self.drafts) < before:\n            self._save_drafts()\n            return True\n        return False\n\n# 使用示例\neh = EmailHelper()\n\n# 创建草稿\ndraft = eh.create_draft(\n    to_addr=\"team@company.com\",\n    subject=\"Weekly Update - May 28\",\n    body=\"Hi team,\\n\\nThis week's update:\\n1. Feature A completed\\n2. Bug fixes deployed\\n\\nBest,\\nLaosi\"\n)\nprint(f\"Draft #{draft['id']}: {draft['subject']}\")\n\n# 列出所有草�?for d in eh.list_drafts():\n    print(f\"  [{d['status']}] #{d['id']}: {d['subject']} -> {d['to']}\")\n\n# 实际发送（需要配置SMTP�?# result = eh.send(1, \"smtp.gmail.com\", 587, \"user@gmail.com\", \"app_password\")\n# print(f\"Send result: {result}\")\n```\n\n## 邮件模板\n\n```python\nTEMPLATES = {\n    \"weekly_report\": {\n        \"subject\": \"Weekly Report - {date}\",\n        \"body\": \"Hi {name},\\n\\n{content}\\n\\nBest,\\n{sender}\"\n    },\n    \"meeting_invite\": {\n        \"subject\": \"Meeting: {topic} - {date}\",\n        \"body\": \"Hi {name},\\n\\nYou're invited to {topic} at {time}.\\n\\nAgenda:\\n{agenda}\\n\\nRegards,\\n{sender}\"\n    },\n    \"follow_up\": {\n        \"subject\": \"Re: {topic}\",\n        \"body\": \"Hi {name},\\n\\nFollowing up on {topic}. Any updates?\\n\\nBest,\\n{sender}\"\n    }\n}\n```\n\n## 使用场景\n\n1. **周报自动发�?*: 集成数据分析结果，自动生成并发送周�?2. **告警通知**: 系统异常时自动发邮件给值班人员\n3. **批量邀�?*: 会议邀�?活动通知批量发�?4. **邮件归档**: 按项�?关键词自动分类归档邮�?\n## 配置\n\n```yaml\nsmtp:\n  host: smtp.gmail.com\n  port: 587\n  use_tls: true\nimap:\n  host: imap.gmail.com\nsender:\n  name: AI Assistant\n  email: ai@example.com\n```\n\n## 依赖\n\n- Python 3.8+\n- 标准库（smtplib, imaplib, email�?\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71pk44ca87scz3pstt90r66n80xhaa\",\n  \"slug\": \"laosi-email-helper\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1780097484317\n}\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nEmail Helper Pro helps agents draft, template, send, read, search, and archive email using SMTP and IMAP with local draft persistence.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[534422530](https://clawhub.ai/user/534422530)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nEmployees, developers, and external agents can use this skill to prepare email drafts, apply common message templates, send messages through SMTP, inspect recent inbox messages through IMAP, and keep draft records locally.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can access mailboxes and send email.\n\nMitigation: Use only scoped or app-specific credentials and require explicit confirmation before any send or inbox-read action.\n\nRisk: Message drafts may be persisted locally in plaintext.\n\nMitigation: Avoid sensitive draft content unless local storage controls are acceptable, and remove drafts that should not remain on disk.\n\nRisk: SMTP login can be used without TLS.\n\nMitigation: Keep TLS enabled and do not submit real credentials over non-TLS SMTP connections.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/534422530/skills/laosi-email-helper)\n- [Publisher profile](https://clawhub.ai/user/534422530)\n\n## Skill Output:\n\n**Output Type(s):** [text, code, configuration, guidance]\n\n**Output Format:** [Markdown with Python and YAML code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include email draft content, SMTP/IMAP configuration examples, and mailbox operation guidance.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release metadata, frontmatter, and hub.json)\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\nFile v2.0.0:hub.json\n\n{\r\n    \"description\":  \"Premium version with full implementation, examples, and enterprise support\",\r\n    \"minOpenClawVersion\":  \"1.2.0\",\r\n    \"version\":  \"2.0.0\",\r\n    \"tags\":  [\r\n                 \"email\",\r\n                 \"smtp\",\r\n                 \"imap\",\r\n                 \"communication\",\r\n                 \"pro\"\r\n             ],\r\n    \"author\":  \"laosi\",\r\n    \"name\":  \"email-helper\",\r\n    \"pricing\":  {\r\n                    \"price\":  2900,\r\n                    \"model\":  \"one-time\"\r\n                },\r\n    \"license\":  \"MIT\",\r\n    \"displayName\":  \"Email Helper Pro\"\r\n}\n\nArchive v1.0.0: 3 files, 4309 bytes\n\nFiles: skill-card.md (2189b), SKILL.md (6890b), _meta.json (137b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: email-helper\nversion: 1.0.0\ndescription: 邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档\ntags: [email, communication, smtp, imap, productivity]\nauthor: laosi\nsource: original\n---\n\n# Email Helper - 邮件助手\n\n> 激活词: 邮件 / 发邮件 / email\n\n## 功能\n\n- 编写邮件草稿（支持模板）\n- 通过SMTP发送邮件\n- 通过IMAP读取收件箱\n- 邮件归档和搜索\n- 草稿本地持久化\n\n## Python 实现\n\n```python\nimport os, json, smtplib, imaplib, email\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom datetime import datetime\nfrom typing import List, Optional\n\nDRAFT_FILE = os.path.join(os.path.dirname(__file__), \"email_drafts.json\")\n\nclass EmailHelper:\n    def __init__(self):\n        os.makedirs(os.path.dirname(DRAFT_FILE), exist_ok=True)\n        self.drafts = self._load_drafts()\n    \n    def _load_drafts(self) -> list:\n        if os.path.exists(DRAFT_FILE):\n            with open(DRAFT_FILE, encoding=\"utf-8\") as f:\n                return json.load(f)\n        return []\n    \n    def _save_drafts(self):\n        with open(DRAFT_FILE, \"w\", encoding=\"utf-8\") as f:\n            json.dump(self.drafts, f, ensure_ascii=False, indent=2)\n    \n    def create_draft(self, to_addr: str, subject: str, body: str,\n                     cc: str = \"\", bcc: str = \"\") -> dict:\n        \"\"\"创建邮件草稿\"\"\"\n        draft = {\n            \"id\": len(self.drafts) + 1,\n            \"to\": to_addr,\n            \"cc\": cc,\n            \"bcc\": bcc,\n            \"subject\": subject,\n            \"body\": body,\n            \"status\": \"draft\",\n            \"created\": datetime.now().isoformat(),\n        }\n        self.drafts.append(draft)\n        self._save_drafts()\n        return draft\n    \n    def build_mime(self, draft_id: int) -> Optional[MIMEMultipart]:\n        \"\"\"将草稿构建为MIME消息\"\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return None\n        \n        msg = MIMEMultipart()\n        msg[\"From\"] = draft.get(\"from_addr\", \"sender@example.com\")\n        msg[\"To\"] = draft[\"to\"]\n        if draft.get(\"cc\"):\n            msg[\"Cc\"] = draft[\"cc\"]\n        msg[\"Subject\"] = draft[\"subject\"]\n        msg.attach(MIMEText(draft[\"body\"], \"plain\", \"utf-8\"))\n        return msg\n    \n    def send(self, draft_id: int, smtp_host: str, smtp_port: int,\n             username: str, password: str, use_tls: bool = True) -> dict:\n        \"\"\"通过SMTP发送草稿\"\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return {\"error\": f\"Draft #{draft_id} not found\"}\n        \n        msg = self.build_mime(draft_id)\n        if not msg:\n            return {\"error\": \"Failed to build MIME message\"}\n        \n        try:\n            server = smtplib.SMTP(smtp_host, smtp_port, timeout=10)\n            if use_tls:\n                server.starttls()\n            server.login(username, password)\n            server.send_message(msg)\n            server.quit()\n            \n            draft[\"status\"] = \"sent\"\n            draft[\"sent_at\"] = datetime.now().isoformat()\n            self._save_drafts()\n            return {\"success\": True, \"to\": draft[\"to\"], \"subject\": draft[\"subject\"]}\n        except Exception as e:\n            return {\"error\": str(e)}\n    \n    def inbox(self, imap_host: str, username: str, password: str,\n              limit: int = 10) -> List[dict]:\n        \"\"\"读取收件箱\"\"\"\n        try:\n            conn = imaplib.IMAP4_SSL(imap_host)\n            conn.login(username, password)\n            conn.select(\"INBOX\")\n            \n            _, data = conn.search(None, \"ALL\")\n            ids = data[0].split()[-limit:]  # 最近的N封\n            messages = []\n            \n            for mid in ids:\n                _, msg_data = conn.fetch(mid, \"(RFC822)\")\n                raw = email.message_from_bytes(msg_data[0][1])\n                messages.append({\n                    \"from\": raw[\"From\"],\n                    \"subject\": raw[\"Subject\"],\n                    \"date\": raw[\"Date\"],\n                    \"body\": self._get_text(raw)[:200],\n                })\n            \n            conn.logout()\n            return messages\n        except Exception as e:\n            return [{\"error\": str(e)}]\n    \n    def _get_text(self, msg) -> str:\n        \"\"\"从邮件对象提取正文\"\"\"\n        if msg.is_multipart():\n            for part in msg.walk():\n                if part.get_content_type() == \"text/plain\":\n                    return part.get_payload(decode=True).decode(\"utf-8\", errors=\"ignore\")\n        return msg.get_payload(decode=True).decode(\"utf-8\", errors=\"ignore\") if msg.get_payload(decode=True) else \"\"\n    \n    def list_drafts(self, status: str = None) -> list:\n        \"\"\"列出草稿\"\"\"\n        if status:\n            return [d for d in self.drafts if d[\"status\"] == status]\n        return self.drafts\n    \n    def delete_draft(self, draft_id: int) -> bool:\n        \"\"\"删除草稿\"\"\"\n        before = len(self.drafts)\n        self.drafts = [d for d in self.drafts if d[\"id\"] != draft_id]\n        if len(self.drafts) < before:\n            self._save_drafts()\n            return True\n        return False\n\n# 使用示例\neh = EmailHelper()\n\n# 创建草稿\ndraft = eh.create_draft(\n    to_addr=\"team@company.com\",\n    subject=\"Weekly Update - May 28\",\n    body=\"Hi team,\\n\\nThis week's update:\\n1. Feature A completed\\n2. Bug fixes deployed\\n\\nBest,\\nLaosi\"\n)\nprint(f\"Draft #{draft['id']}: {draft['subject']}\")\n\n# 列出所有草稿\nfor d in eh.list_drafts():\n    print(f\"  [{d['status']}] #{d['id']}: {d['subject']} -> {d['to']}\")\n\n# 实际发送（需要配置SMTP）\n# result = eh.send(1, \"smtp.gmail.com\", 587, \"user@gmail.com\", \"app_password\")\n# print(f\"Send result: {result}\")\n```\n\n## 邮件模板\n\n```python\nTEMPLATES = {\n    \"weekly_report\": {\n        \"subject\": \"Weekly Report - {date}\",\n        \"body\": \"Hi {name},\\n\\n{content}\\n\\nBest,\\n{sender}\"\n    },\n    \"meeting_invite\": {\n        \"subject\": \"Meeting: {topic} - {date}\",\n        \"body\": \"Hi {name},\\n\\nYou're invited to {topic} at {time}.\\n\\nAgenda:\\n{agenda}\\n\\nRegards,\\n{sender}\"\n    },\n    \"follow_up\": {\n        \"subject\": \"Re: {topic}\",\n        \"body\": \"Hi {name},\\n\\nFollowing up on {topic}. Any updates?\\n\\nBest,\\n{sender}\"\n    }\n}\n```\n\n## 使用场景\n\n1. **周报自动发送**: 集成数据分析结果，自动生成并发送周报\n2. **告警通知**: 系统异常时自动发邮件给值班人员\n3. **批量邀请**: 会议邀请/活动通知批量发送\n4. **邮件归档**: 按项目/关键词自动分类归档邮件\n\n## 配置\n\n```yaml\nsmtp:\n  host: smtp.gmail.com\n  port: 587\n  use_tls: true\nimap:\n  host: imap.gmail.com\nsender:\n  name: AI Assistant\n  email: ai@example.com\n```\n\n## 依赖\n\n- Python 3.8+\n- 标准库（smtplib, imaplib, email）\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71pk44ca87scz3pstt90r66n80xhaa\",\n  \"slug\": \"laosi-email-helper\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1780017939434\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nEmail Helper Pro helps agents draft, send, read, search, and persist email workflows using SMTP, IMAP, reusable templates, and local draft storage. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[534422530](https://clawhub.ai/user/534422530) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nEmployees, external users, developers, and automation agents use this skill to create email drafts, send SMTP messages, inspect recent IMAP inbox messages, search or archive email-related content, and reuse templates for reports, meeting invites, follow-ups, alerts, and batch notifications. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can access mailboxes, send email, and handle private email content. <br>\nMitigation: Use app-specific or scoped email credentials, review recipients and message bodies before sending, and limit mailbox access to accounts appropriate for the workflow. <br>\nRisk: Saved drafts may persist private email content on disk. <br>\nMitigation: Store drafts only in approved locations, review retention expectations, and delete drafts that are no longer needed. <br>\n\n\n## Reference(s): <br>\n- [Email Helper Pro ClawHub release](https://clawhub.ai/534422530/laosi-email-helper) <br>\n- [Publisher profile](https://clawhub.ai/user/534422530) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown with Python code examples, YAML configuration, and structured email draft or inbox data] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce local draft files containing email recipients, subjects, message bodies, and send status.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: frontmatter and server release metadata) <br>\n\n## Ethical Considerations: <br>\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. <br>","readmeExcerpt":"Skill: Email Helper Pro Owner: 534422530 Summary: 邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Tags: communication:2.0.0, email:2.0.0, imap:2.0.0, latest:2.0.0, pro:2.0.0, smtp:2.0.0 Version history: v2.0.0 | 2026-05-29T23:31:24.317Z | auto - Added hub.json to support platform integration. - Marked the skill as \"premium\" with a badge in SKILL.md. - Updated version to 2.0.0 and improved skill metadata. - Minor text an","codeSnippets":[],"executableExamples":[{"language":"python","snippet":"import os, json, smtplib, imaplib, email\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom datetime import datetime\nfrom typing import List, Optional\n\nDRAFT_FILE = os.path.join(os.path.dirname(__file__), \"email_drafts.json\")\n\nclass EmailHelper:\n    def __init__(self):\n        os.makedirs(os.path.dirname(DRAFT_FILE), exist_ok=True)\n        self.drafts = self._load_drafts()\n    \n    def _load_drafts(self) -> list:\n        if os.path.exists(DRAFT_FILE):\n            with open(DRAFT_FILE, encoding=\"utf-8\") as f:\n                return json.load(f)\n        return []\n    \n    def _save_drafts(self):\n        with open(DRAFT_FILE, \"w\", encoding=\"utf-8\") as f:\n            json.dump(self.drafts, f, ensure_ascii=False, indent=2)\n    \n    def create_draft(self, to_addr: str, subject: str, body: str,\n                     cc: str = \"\", bcc: str = \"\") -> dict:\n        \"\"\"创建邮件草稿\"\"\"\n        draft = {\n            \"id\": len(self.drafts) + 1,\n            \"to\": to_addr,\n            \"cc\": cc,\n            \"bcc\": bcc,\n            \"subject\": subject,\n            \"body\": body,\n            \"status\": \"draft\",\n            \"created\": datetime.now().isoformat(),\n        }\n        self.drafts.append(draft)\n        self._save_drafts()\n        return draft\n    \n    def build_mime(self, draft_id: int) -> Optional[MIMEMultipart]:\n        \"\"\"将草稿构建为MIME消息\"\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return None\n        \n        msg = MIMEMultipart()\n        msg[\"From\"] = draft.get(\"from_addr\", \"sender@example.com\")\n        msg[\"To\"] = draft[\"to\"]\n        if draft.get(\"cc\"):\n            msg[\"Cc\"] = draft[\"cc\"]\n        msg[\"Subject\"] = draft[\"subject\"]\n        msg.attach(MIMEText(draft[\"body\"], \"plain\", \"utf-8\"))\n        return msg\n    \n    def send(self, draft_id: int, smtp_host: str, smtp_port: int,\n             username: str, password: str, use_tls: bool = True) -> dict:\n        \"\"\"通过SMTP发送草�?\"\"\n  "},{"language":"python","snippet":"TEMPLATES = {\n    \"weekly_report\": {\n        \"subject\": \"Weekly Report - {date}\",\n        \"body\": \"Hi {name},\\n\\n{content}\\n\\nBest,\\n{sender}\"\n    },\n    \"meeting_invite\": {\n        \"subject\": \"Meeting: {topic} - {date}\",\n        \"body\": \"Hi {name},\\n\\nYou're invited to {topic} at {time}.\\n\\nAgenda:\\n{agenda}\\n\\nRegards,\\n{sender}\"\n    },\n    \"follow_up\": {\n        \"subject\": \"Re: {topic}\",\n        \"body\": \"Hi {name},\\n\\nFollowing up on {topic}. Any updates?\\n\\nBest,\\n{sender}\"\n    }\n}"},{"language":"yaml","snippet":"smtp:\n  host: smtp.gmail.com\n  port: 587\n  use_tls: true\nimap:\n  host: imap.gmail.com\nsender:\n  name: AI Assistant\n  email: ai@example.com"},{"language":"python","snippet":"import os, json, smtplib, imaplib, email\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom datetime import datetime\nfrom typing import List, Optional\n\nDRAFT_FILE = os.path.join(os.path.dirname(__file__), \"email_drafts.json\")\n\nclass EmailHelper:\n    def __init__(self):\n        os.makedirs(os.path.dirname(DRAFT_FILE), exist_ok=True)\n        self.drafts = self._load_drafts()\n    \n    def _load_drafts(self) -> list:\n        if os.path.exists(DRAFT_FILE):\n            with open(DRAFT_FILE, encoding=\"utf-8\") as f:\n                return json.load(f)\n        return []\n    \n    def _save_drafts(self):\n        with open(DRAFT_FILE, \"w\", encoding=\"utf-8\") as f:\n            json.dump(self.drafts, f, ensure_ascii=False, indent=2)\n    \n    def create_draft(self, to_addr: str, subject: str, body: str,\n                     cc: str = \"\", bcc: str = \"\") -> dict:\n        \"\"\"创建邮件草稿\"\"\"\n        draft = {\n            \"id\": len(self.drafts) + 1,\n            \"to\": to_addr,\n            \"cc\": cc,\n            \"bcc\": bcc,\n            \"subject\": subject,\n            \"body\": body,\n            \"status\": \"draft\",\n            \"created\": datetime.now().isoformat(),\n        }\n        self.drafts.append(draft)\n        self._save_drafts()\n        return draft\n    \n    def build_mime(self, draft_id: int) -> Optional[MIMEMultipart]:\n        \"\"\"将草稿构建为MIME消息\"\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return None\n        \n        msg = MIMEMultipart()\n        msg[\"From\"] = draft.get(\"from_addr\", \"sender@example.com\")\n        msg[\"To\"] = draft[\"to\"]\n        if draft.get(\"cc\"):\n            msg[\"Cc\"] = draft[\"cc\"]\n        msg[\"Subject\"] = draft[\"subject\"]\n        msg.attach(MIMEText(draft[\"body\"], \"plain\", \"utf-8\"))\n        return msg\n    \n    def send(self, draft_id: int, smtp_host: str, smtp_port: int,\n             username: str, password: str, use_tls: bool = True) -> dict:\n        \"\"\"通过SMTP发送草稿\"\"\"\n  "},{"language":"python","snippet":"TEMPLATES = {\n    \"weekly_report\": {\n        \"subject\": \"Weekly Report - {date}\",\n        \"body\": \"Hi {name},\\n\\n{content}\\n\\nBest,\\n{sender}\"\n    },\n    \"meeting_invite\": {\n        \"subject\": \"Meeting: {topic} - {date}\",\n        \"body\": \"Hi {name},\\n\\nYou're invited to {topic} at {time}.\\n\\nAgenda:\\n{agenda}\\n\\nRegards,\\n{sender}\"\n    },\n    \"follow_up\": {\n        \"subject\": \"Re: {topic}\",\n        \"body\": \"Hi {name},\\n\\nFollowing up on {topic}. Any updates?\\n\\nBest,\\n{sender}\"\n    }\n}"},{"language":"yaml","snippet":"smtp:\n  host: smtp.gmail.com\n  port: 587\n  use_tls: true\nimap:\n  host: imap.gmail.com\nsender:\n  name: AI Assistant\n  email: ai@example.com"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nbadge: premium\nname: email-helper\nversion: 2.0.0\ndescription: 邮件助手 - 编写/发�?管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归�?tags: [email, communication, smtp, imap, productivity]\nauthor: laosi\nsource: original\n---\n\n# Email Helper - 邮件助手\n\n> 激活词: 邮件 / 发邮�?/ email\n\n## 功能\n\n- 编写邮件草稿（支持模板）\n- 通过SMTP发送邮�?- 通过IMAP读取收件�?- 邮件归档和搜�?- 草稿本地持久�?\n## Python 实现\n\n```python\nimport os, json, smtplib, imaplib, email\nfrom email.mime.text import MIMEText\nfrom email.mime.multipart import MIMEMultipart\nfrom datetime import datetime\nfrom typing import List, Optional\n\nDRAFT_FILE = os.path.join(os.path.dirname(__file__), \"email_drafts.json\")\n\nclass EmailHelper:\n    def __init__(self):\n        os.makedirs(os.path.dirname(DRAFT_FILE), exist_ok=True)\n        self.drafts = self._load_drafts()\n    \n    def _load_drafts(self) -> list:\n        if os.path.exists(DRAFT_FILE):\n            with open(DRAFT_FILE, encoding=\"utf-8\") as f:\n                return json.load(f)\n        return []\n    \n    def _save_drafts(self):\n        with open(DRAFT_FILE, \"w\", encoding=\"utf-8\") as f:\n            json.dump(self.drafts, f, ensure_ascii=False, indent=2)\n    \n    def create_draft(self, to_addr: str, subject: str, body: str,\n                     cc: str = \"\", bcc: str = \"\") -> dict:\n        \"\"\"创建邮件草稿\"\"\"\n        draft = {\n            \"id\": len(self.drafts) + 1,\n            \"to\": to_addr,\n            \"cc\": cc,\n            \"bcc\": bcc,\n            \"subject\": subject,\n            \"body\": body,\n            \"status\": \"draft\",\n            \"created\": datetime.now().isoformat(),\n        }\n        self.drafts.append(draft)\n        self._save_drafts()\n        return draft\n    \n    def build_mime(self, draft_id: int) -> Optional[MIMEMultipart]:\n        \"\"\"将草稿构建为MIME消息\"\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return None\n        \n        msg = MIMEMultipart()\n        msg[\"From\"] = draft.get(\"from_addr\", \"sender@example.com\")\n        msg[\"To\"] = draft[\"to\"]\n        if draft.get(\"cc\"):\n            msg[\"Cc\"] = draft[\"cc\"]\n        msg[\"Subject\"] = draft[\"subject\"]\n        msg.attach(MIMEText(draft[\"body\"], \"plain\", \"utf-8\"))\n        return msg\n    \n    def send(self, draft_id: int, smtp_host: str, smtp_port: int,\n             username: str, password: str, use_tls: bool = True) -> dict:\n        \"\"\"通过SMTP发送草�?\"\"\n        draft = next((d for d in self.drafts if d[\"id\"] == draft_id), None)\n        if not draft:\n            return {\"error\": f\"Draft #{draft_id} not found\"}\n        \n        msg = self.build_mime(draft_id)\n        if not msg:\n            return {\"error\": \"Failed to build MIME message\"}\n        \n        try:\n            server = smtplib.SMTP(smtp_host, smtp_port, timeout=10)\n            if use_tls:\n                server.starttls()\n            server.login(username, password)\n            server.send_message(msg)\n            server.quit()\n            \n            draft[\"status\"] = \"sent\"\n            draft[\"sent_at\"] = datetime.now().isoformat()\n     "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71pk44ca87scz3pstt90r66n80xhaa\",\n  \"slug\": \"laosi-email-helper\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1780097484317\n}"},{"path":"skill-card.md","content":"## Description:\n\nEmail Helper Pro helps agents draft, template, send, read, search, and archive email using SMTP and IMAP with local draft persistence.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[534422530](https://clawhub.ai/user/534422530)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nEmployees, developers, and external agents can use this skill to prepare email drafts, apply common message templates, send messages through SMTP, inspect recent inbox messages through IMAP, and keep draft records locally.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can access mailboxes and send email.\n\nMitigation: Use only scoped or app-specific credentials and require explicit confirmation before any send or inbox-read action.\n\nRisk: Message drafts may be persisted locally in plaintext.\n\nMitigation: Avoid sensitive draft content unless local storage controls are acceptable, and remove drafts that should not remain on disk.\n\nRisk: SMTP login can be used without TLS.\n\nMitigation: Keep TLS enabled and do not submit real credentials over non-TLS SMTP connections.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/534422530/skills/laosi-email-helper)\n- [Publisher profile](https://clawhub.ai/user/534422530)\n\n## Skill Output:\n\n**Output Type(s):** [text, code, configuration, guidance]\n\n**Output Format:** [Markdown with Python and YAML code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include email draft content, SMTP/IMAP configuration examples, and mailbox operation guidance.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release metadata, frontmatter, and hub.json)\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."},{"path":"hub.json","content":"{\r\n    \"description\":  \"Premium version with full implementation, examples, and enterprise support\",\r\n    \"minOpenClawVersion\":  \"1.2.0\",\r\n    \"version\":  \"2.0.0\",\r\n    \"tags\":  [\r\n                 \"email\",\r\n                 \"smtp\",\r\n                 \"imap\",\r\n                 \"communication\",\r\n                 \"pro\"\r\n             ],\r\n    \"author\":  \"laosi\",\r\n    \"name\":  \"email-helper\",\r\n    \"pricing\":  {\r\n                    \"price\":  2900,\r\n                    \"model\":  \"one-time\"\r\n                },\r\n    \"license\":  \"MIT\",\r\n    \"displayName\":  \"Email Helper Pro\"\r\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Skill: Email Helper Pro Owner: 534422530 Summary: 邮件助手 - 编写/发送/管理邮件，支持SMTP发信和IMAP收信，多模板草稿，自动归档 Tags: communication:2.0.0, email:2.0.0, imap:2.0.0, latest:2.0.0, pro:2.0.0, smtp:2.0.0 Version history: v2.0.0 | 2026-05-29T23:31:24.317Z | auto - Added hub.json to support platform integration. - Marked the skill as \"premium\" with a badge in SKILL.md. - Updated version to 2.0.0 and improved skill metadata. - Minor text an","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1091,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:00:58.047Z","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-11T14:00:58.047Z","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-11T17:45:54.121Z","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"}]}}}