{"id":84075,"plugin_id":"plugin_asdk_app_6ad9f7581a748191be8505e92451386c","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-06T07:27:54.964Z","digest":"9b37b470f7e80955657455dcc606b3c057400b26323732655ecc71f0a624196f","against":null,"payload":{"description":"Verify a list of email addresses with mailfloss before sending a campaign or importing contacts. Counts the addresses, confirms the credit cost, runs one batch verification, and reports which addresses to keep, fix, review or remove.","included_files":[],"name":"verify-before-send","skill_md_contents":"---\nname: verify-before-send\ndescription: Verify a list of email addresses with mailfloss before sending a campaign or importing contacts. Counts the addresses, confirms the credit cost, runs one batch verification, and reports which addresses to keep, fix, review or remove.\n---\n\n# Verify a list before sending\n\nUse this workflow when the user wants to check a list of email addresses before\nthey send to it or import it. For one or two addresses, call `verify_email` for\neach address instead of starting a batch.\n\n1. **Collect the addresses.** Take them from the user's message or attached\n   file. Drop blank entries and exact duplicates, then tell the user how many\n   unique addresses remain.\n2. **Check credits.** Call `get_organization` and compare `credits.total` with\n   the number of addresses. Each address uses 1 credit. If the account doesn't\n   have enough credits, tell the user and stop.\n3. **Confirm.** Tell the user how many addresses will be verified and how many\n   credits the job will use. Start only after the user agrees.\n4. **Start one job.** Call `start_batch_verification` once with all the\n   addresses and keep the returned job `id`. Don't resubmit the same list to\n   retry, because each submission spends credits again.\n5. **Wait for the job.** Call `get_batch_status` with the job id until\n   `processed` is `true`. If it takes a while, report progress as\n   `emailsProcessed` of `numImported`.\n6. **Read every result.** Call `get_batch_results`, passing `next` from each\n   page until a page has no `next`.\n7. **Report the outcome.** Lead with the count in each group, then list the\n   addresses in Fix, Remove and Review:\n   - **Keep:** `status` is `passed`.\n   - **Fix:** the result has a `suggestion`, such as a misspelled domain. Show\n     the suggested address and let the user confirm the correction. Don't\n     change addresses yourself.\n   - **Remove:** `status` is `undeliverable`.\n   - **Review:** `status` is `risky` or `unknown`. Give the `reason` so the user\n     can decide.\n\nIf the user asks for the cleaned list, return the Keep addresses plus any fixes\nthey confirmed, as plain text or CSV.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}