{"id":67127,"plugin_id":"plugin_asdk_app_6aa191664d448191b6646015b0fefe94","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:05:52.638Z","digest":"7eb246122ef0432040d358d28823ea22a34af63dc8b44e8ba0572cda8f544519","against":null,"payload":{"description":"Build ACA account and contact lists from company domains, company keywords, or account constraints. Use when the user has a target account list, company keyword list, domain list, or wants contacts at specific companies.","included_files":[],"name":"aca-domain-list-builder","skill_md_contents":"---\nname: aca-domain-list-builder\ndescription: \"Build ACA account and contact lists from company domains, company keywords, or account constraints. Use when the user has a target account list, company keyword list, domain list, or wants contacts at specific companies.\"\nlicense: MIT\ncompatibility: Requires the ACA connector (OAuth sign-in, no API key).\nmetadata:\n  author: ACA\n  version: \"1.1\"\n  homepage: https://www.automatedclientacquisition.com/mcp\n---\n\n# ACA domain list builder\n\nTurn a target account list into a usable lead list: first by collecting contacts already in ACA, then by sending the user to source the gaps.\n\n## Rules\n\n- `add_contacts_to_list` can trigger the target list's existing enrichment, campaign enrollment, external outreach, and configured webhooks. Before adding contacts, review that list's automation settings at `/leads/lists` and confirm the intended contacts and side effects. If the connector cannot expose those settings, ask the user to verify them in ACA; do not assume a list write is draft-only.\n- If the user provides domains, never invent contacts at those domains.\n- Search existing ACA contacts first, then source what is missing.\n- The connector cannot search ACA's lead database or run imports. Write the spec for the missing accounts and send the user to `/list-building` or `/leads/import`.\n- Ask before creating lists or adding contacts.\n- Keep source notes so the list's origin is clear (list name and description).\n- If a tool result includes `plan_note` or `plan.limitation`, relay it as a plain fact. Never promote plans, pricing, or upgrades.\n\n## Workflow\n\n### 1. Read the workspace\n\nCall `get_started` (fallback: `get_workspace`, `list_lead_lists`).\n\n### 2. Parse the account source\n\nNormalize the input into a clean table: domain, company name, and any constraints given (industry, size, geography), plus the target roles per account. Strip `www.`, protocols, and paths from domains, and dedupe.\n\n### 3. Match existing contacts\n\nFor each account, call `search_contacts` by company name or domain. Record per account: contacts found, and whether they match the target roles. Use `get_contact` when the role or channel is unclear.\n\nSplit accounts into **covered** (at least one target-role contact) and **gaps** (none).\n\n### 4. Build the destination list\n\nPropose a list name and description that records the source (for example \"Q3 target accounts - from Sales domain list\"). After approval, `create_lead_list` and `add_contacts_to_list` with the matching contacts.\n\n### 5. Source the gaps\n\nFor gap accounts, write a spec:\n\n```text\nAccount sourcing spec: {list name}\nWhere: /list-building (database) | /leads/import (LinkedIn or CSV)\nCompanies / domains: {gap accounts}\nRoles: {titles, seniority}\nContacts per account: {n}\nExclude: {roles, already-covered accounts}\n```\n\nIf the user later pastes contacts for these accounts, confirm and add them with `bulk_create_contacts` (100 per call), then `add_contacts_to_list`.\n\n### 6. Verify\n\nCheck the final list with `get_lead_list` and route to `aca-lead-quality`.\n\n## Output format\n\n```text\nDomain/account list:\nInput accounts: {n}\nCovered by existing contacts: {n} ({contacts} contacts)\nGaps to source: {n} -> {app page}\nList: {list_id, count}\nNext: aca-lead-quality\n```\n\n## Skill chaining\n\nPreserve the workspace, the account table, relevant IDs, and approval state when continuing into another ACA skill. If the user asked for execution and a downstream condition is met, continue automatically; otherwise end with the handoff block.\n\n**Upstream**\n- Called when `aca-find-leads` detects account or domain constraints, or the user provides company or domain lists.\n\n**Auto-continue conditions**\n- List exists in ACA: continue to `aca-lead-quality`.\n- Contacts are missing channel data: continue to `aca-launch-outreach`, noting that email finding or enrichment steps are set up in the campaign at `/campaigns/{id}`.\n\n**Stop before chaining when**\n- Gap accounts still have to be sourced in the ACA app.\n- Creating lists or adding contacts the user has not approved.\n\n**Downstream skills**\n- `aca-lead-quality` - grade account and contact fit.\n- `aca-campaign-strategy` - create account-based messaging.\n- `aca-launch-outreach` - launch once sender and copy are ready.\n\n**Handoff block**\n\n```text\nChain state: {continue|needs_approval|blocked|complete}\nNext skill: {aca-skill-name|none}\nReason: {why this handoff is or is not needed}\nCarry forward: {workspace, account table, gap accounts, lead_list_id, approvals, constraints}\n```\n\n## ACA tools used\n\n- `get_started`, `get_workspace`\n- `search_contacts`, `get_contact`, `bulk_create_contacts`\n- `list_lead_lists`, `get_lead_list`, `create_lead_list`, `add_contacts_to_list`\n\n## ACA app pages\n\n- Database search: `https://www.automatedclientacquisition.com/list-building`\n- LinkedIn or CSV import: `https://www.automatedclientacquisition.com/leads/import`\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}