{"id":92579,"plugin_id":"plugin_asdk_app_6acbe2f9466481919bff256ba9af40c3","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-12T06:09:48.941Z","digest":"a9519961f189587c480d6685ce0ad9b39e600b5df93caccea1169c8564129a73","against":null,"payload":{"description":"Manage Saleslumen email via MCP: messages, threads, drafts, labels, accounts, and address discovery. Use when the user wants to read, send, draft, trash, label, or find email in Saleslumen. Do not use for campaigns, workflows, or Apps Script.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":431}],"name":"saleslumen-emails","skill_md_contents":"---\nname: saleslumen-emails\ndescription: >-\n  Manage Saleslumen email via MCP: messages, threads, drafts, labels, accounts,\n  and address discovery. Use when the user wants to read, send, draft, trash,\n  label, or find email in Saleslumen. Do not use for campaigns, workflows, or\n  Apps Script.\n---\n\n# Saleslumen Emails\n\nUse the Saleslumen MCP connector for mailbox work. Keep the conversation natural; call tools to act.\n\n## Concepts\n\nTool arguments are snake_case. Fields inside a message, draft, or label object stay Emails JSON: `accountId`, `threadId`, `labelIds`, `payload`, `raw`, and `scheduleTime`.\n\nA thread is a conversation. A draft wraps an unsent message. Labels categorize messages and threads.\n\nAn account is an org mailbox. `emails_list_accounts` tells you which mailboxes exist. Put the chosen account id in the message `accountId`.\n\n`emails_discover` takes `domain` and `name`. Report what the tool returns; do not invent addresses.\n\n## Workflow\n\n1. Clarify the goal (read, reply, draft, send, label, trash, discover, or account lookup).\n2. Resolve identifiers with list/get before you change anything. Filter lists with `account_ids`, `query`, or `label_ids`.\n3. For replies and forwards, call `emails_generate_quoted_content` with `reply_to_message_id` and `quote_type` (`reply` or `forward`), then draft or send.\n4. When composing, pass a `message` object and a `request_id` UUID. Inside the message set `accountId`, and `payload` or `raw`. Set `scheduleTime` (epoch milliseconds) on that message only if the user asks to schedule. `emails_send_draft` takes the same `request_id`. Reuse it on a retry.\n5. Confirm with the user before send and before permanent delete.\n6. Summarize the result in plain language.\n\n## Tools\n\n| Task | Tools |\n| --- | --- |\n| Messages | `emails_list_messages`, `emails_get_message`, `emails_get_attachment` |\n| Send | `emails_send_message`, `emails_generate_quoted_content` |\n| Message lifecycle | `emails_trash_message`, `emails_untrash_message`, `emails_delete_message`, `emails_modify_message` |\n| Threads | `emails_list_threads`, `emails_get_thread`, `emails_trash_thread`, `emails_untrash_thread`, `emails_modify_thread`, `emails_delete_thread` |\n| Labels | `emails_list_labels`, `emails_get_label`, `emails_create_label`, `emails_update_label`, `emails_delete_label` |\n| Drafts | `emails_list_drafts`, `emails_get_draft`, `emails_create_draft`, `emails_update_draft`, `emails_send_draft`, `emails_delete_draft` |\n| Accounts | `emails_list_accounts`, `emails_get_account`, `emails_create_account`, `emails_update_account`, `emails_delete_account` |\n| Discovery | `emails_discover` |\n\n## Guidance\n\n- `emails_update_label` renames a label. There is no separate patch tool.\n- Prefer trash over permanent delete unless the user asks to purge.\n- Stay in the Emails tools for this skill.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}