Zum Inhalt springen
NeuSo funktioniert es

Entwickler

Die FirstSales Developer API, CLI und der MCP-Server, für Menschen und Agenten, die bauen.

Prüfe E-Mail-Adressen, DNS-Einträge und Cold-E-Mail-Texte aus deinem eigenen Code, ohne Schlüssel. Gib deinem KI-Agenten dieselben Checks als MCP-Tools. Wenn du dein eigenes Konto brauchst, nutze die authentifizierte Developer API, die firstsales CLI oder den App-MCP-Server.

$1 für 3 Tage · Jederzeit kündbar · Kein Vertrag

  • 01

    Achtzehn öffentliche Operationen, ohne Schlüssel

  • 02

    Zwölf MCP-Tools für jeden MCP-Client

  • 03

    OpenAPI-3.1-Spec in JSON und YAML

  • 04

    Developer API und CLI für dein eigenes Konto

Warum es das gibt

Outreach-Checks braucht man schnell und baut sie nur langsam gut.

Die meisten Teams bauen dieselben kleinen Checks immer wieder: Ist die Adresse echt, ist die Domain eingerichtet, sieht diese E-Mail nach Spam aus. Jeder davon dauert länger, als er aussieht.

DNS-Checks haben viele Sonderfälle

SPF, DKIM und DMARC haben jeweils ihr eigenes Format, eigene Selectoren und eigene Abfrageregeln. Ein schnelles Skript klappt bei deiner Domain und scheitert bei der nächsten.

Agenten lesen Seiten, wenn sie nicht aufrufen können

Ein KI-Agent ohne passendes Tool liest Webseiten und rät. Das ist langsam, bricht bei jeder Seitenänderung und liefert Antworten, denen du nicht trauen kannst.

Kontodaten stecken in der App fest

Wenn Kontakte nur im Browser hinzugefügt und Kampagnen nur dort gelesen werden können, wird jeder Import, jeder Bericht und jeder Sync zur Handarbeit für jemanden im Team.

Sechs Zugänge,danach getrennt, ob du ein Konto brauchst.

Die öffentlichen Zugänge beantworten Fragen zu Zustellbarkeit und Texten für alle, ohne Schlüssel. Die Konto-Zugänge arbeiten in deinem eigenen FirstSales-Workspace: Kontakte, Kampagnen, Deals und mehr.

  • Öffentlich, ohne Schlüssel

    Öffentliche REST-API

    Achtzehn Operationen für E-Mail-Checks, DNS- und Domain-Abfragen, Text-Bewertung und Tutorials, beschrieben in einem OpenAPI-3.1-Dokument.

    /openapi.json öffnen
  • Öffentlich, ohne Schlüssel

    Öffentlicher MCP-Server

    Zwölf derselben Checks als MCP-Tools über Streamable HTTP, damit ein Agent sie direkt aufruft, statt Seiten auszulesen.

    MCP-Manifest öffnen
  • Öffentlich, ohne Schlüssel

    Markdown für Agenten

    Eine Inhaltskarte unter /llms.txt und eine saubere Markdown-Kopie der Seiten für LLMs und Crawler, die Text statt HTML wollen.

    /llms.txt öffnen
  • Dein Konto

    Developer API

    Die authentifizierte API für deinen eigenen Workspace. Sie deckt Konto-Abläufe ab und ist getrennt von der öffentlichen Diagnose-API dieser Website.

    Developer-API-Doku lesen
  • Dein Konto

    firstsales CLI

    Das npm-Paket @firstsales.io/cli installiert ein Programm namens firstsales, damit du Konto-Abläufe aus dem Terminal oder einem Skript startest.

    CLI-Referenz lesen
  • Dein Konto

    App-MCP-Server

    Ein per OAuth geschützter MCP-Server für Aktionen in der App und Kontodaten, damit ein Agent mit deiner Erlaubnis in deinem FirstSales-Konto arbeitet.

    App-MCP-Leitfaden lesen

Verbinde den öffentlichen MCP-Server

Füge das in Claude Desktop, Claude Code oder jedem MCP-Client mit Streamable HTTP hinzu. Die Tools erscheinen sofort in deinem Agenten.

{
  "mcpServers": {
    "firstsales": {
      "url": "https://firstsales.io/mcp/"
    }
  }
}
Vom ersten Aufruf zum eigenen Konto

Starte mit einem öffentlichen Aufruf, und verbinde dein Konto, wenn du es brauchst.

Für die öffentliche API und den MCP-Server brauchst du kein Konto. Melde dich nur an, wenn du in deinem eigenen Workspace arbeiten willst.

  1. 01

    Lies die Spec

    Öffne /openapi.json oder /api/openapi.yaml und importiere sie in deinen Client-Generator, API-Explorer oder dein Agenten-Framework. Jede Operation, jedes Feld und jedes Limit steht darin.

  2. 02

    Mach einen öffentlichen Aufruf

    Schick eine E-Mail-Adresse per POST an /api/v1/email/validate oder füge den MCP-Server zu deinem Agenten hinzu. Kein Schlüssel, keine Anmeldung. Lies die RateLimit-Header, um dein Tempo zu steuern.

  3. 03

    Verbinde dein Konto

    Für Kontakte, Kampagnen und Deals in deinem eigenen Workspace nutze die Developer API, die firstsales CLI oder den per OAuth geschützten App-MCP-Server.

Was du bekommst

Klare Verträge, damit dein Code und deine Agenten weiter funktionieren.

Die öffentliche API ist zuerst für Maschinen gebaut: eine Spec, stabile Pfade, ehrliche Limits und klare Fehler.

  • Eine Spec für alles

    Ein einziges OpenAPI-3.1-Dokument beschreibt jede öffentliche Operation, ihren Request-Body, ihre Antwort und ihr Limit. Erzeuge einen Client in deiner Sprache.

  • MCP-Tools für Agenten

    Zwölf Tools über Streamable HTTP, gelistet in einem Manifest unter /.well-known/mcp.json, damit ein Agent sie ohne eigenen Glue-Code findet und aufruft.

  • Versionierte Pfade

    Jeder Endpoint liegt unter /api/v1. Eine inkompatible Änderung kommt unter einem neuen Präfix, und v1 behält seinen Vertrag.

  • Sichtbare Limits

    Jede Antwort trägt RateLimit-Header mit Limit, Rest und Zeitpunkt des Zurücksetzens, damit dein Client bremst, bevor er abgewiesen wird.

  • Klare Fehler

    Über dem Limit bekommst du eine 429 mit Retry-After in Sekunden und einen JSON-Body mit den Feldern error, message und hint, die sagen, was als Nächstes zu tun ist.

  • Dein Konto per Code

    Die Developer API, die firstsales CLI und der App-MCP-Server erreichen deinen eigenen Workspace, also brauchen Importe, Berichte und Syncs keinen Browser.

Wie Entwicklerdie FirstSales-API und den MCP-Server nutzen

Vier Schritte, vom Lesen der Spec bis zum Umgang mit einem Limit. Die Beispiele nutzen Beispieldaten.

  1. Spec

    Importiere die OpenAPI-Spec

    Starte mit der maschinenlesbaren Spec. Sie listet jede öffentliche Operation unter /api/v1 mit Methode, Request-Feldern und Antwortform. Importiere sie in deinen API-Explorer oder Client-Generator und du hast in einer Minute typisierte Aufrufe.

    • OpenAPI 3.1. JSON unter /openapi.json, YAML unter /api/openapi.yaml.
    • Jedes Schema. Request- und Response-Felder für jeden Aufruf.
    • Limits in der Spec. Das Limit jeder Operation unter x-rateLimit.
  2. Request

    Mach deinen ersten Aufruf

    Schick einen JSON-Body an die Operation, die du brauchst. Die E-Mail-Validierung antwortet auch bei einer schlechten Adresse mit 200, lies also das Feld valid statt des Statuscodes. Die Antwort sagt auch, ob die Domain existiert, Mailserver hat oder ein Wegwerf-Postfach ist.

    • JSON rein, JSON raus. Einfache POST-Bodies mit ein oder zwei Feldern.
    • Kein Schlüssel. Öffentliche Operationen gehen ohne Anmeldung.
    • Nützliche Details. MX-Einträge, Freemail- und Wegwerf-Kennzeichen.
  3. MCP

    Gib deinem Agenten dieselben Checks

    Füge den öffentlichen MCP-Server mit einer Zeile Konfiguration zu deinem Agenten hinzu. Dann kann er per Tool-Aufruf eine Adresse validieren, das DKIM einer Domain prüfen oder eine Betreffzeile bewerten, und ein Tutorial lesen, wenn er einen Schritt erklären muss.

    • Streamable HTTP. Eine URL: https://firstsales.io/mcp/.
    • Discovery-Manifest. Tools gelistet unter /.well-known/mcp.json.
    • Zwölf Tools. E-Mail, DNS, Domain, Texte und Tutorials.
  4. Limits

    Steuere dein Tempo über die Header

    Jede Antwort sagt dir, wo du stehst: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset und RateLimit-Policy. Wenn du drüber liegst, hat die 429-Antwort einen Retry-After-Header, also weiß dein Client genau, wie lange er warten muss.

    • Fenster pro IP. Limits werden alle 60 Sekunden zurückgesetzt.
    • IETF-Header-Felder. Drosseln, bevor du abgewiesen wirst.
    • Retry-After bei 429. Wartezeit in Sekunden, plus ein Hinweis.
Endpoint-Referenz

Jede öffentliche Operation, mit Pfad und Limit.

Alle Pfade liegen unter https://firstsales.io/api/v1. Limits gelten pro IP in einem 60-Sekunden-Fenster. Die OpenAPI-Spec enthält das Request- und Response-Schema jeder Operation.

E-Mail-Checks
OperationWas sie machtLimit
POST/api/v1/email/validatePrüft, ob eine Adresse eine echte Domain, Mailserver und ein gültiges Format hat.20/Min.
POST/api/v1/email/disposableBewertet die Domain einer Adresse auf das Risiko eines Wegwerf- oder Temporär-Postfachs.20/Min.
POST/api/v1/email/catchallZeigt, ob eine Domain Mails an jedes Postfach annimmt (Catch-all).20/Min.
DNS-Checks
OperationWas sie machtLimit
POST/api/v1/dns/checkFührt einen DNS-, E-Mail-Authentifizierungs- oder Sicherheits-Check für eine Domain aus.10/Min.
POST/api/v1/dns/dkimSucht und prüft den DKIM-Eintrag einer Domain für einen Selector.10/Min.
POST/api/v1/dns/validateFührt SPF, DKIM, DMARC und MX gemeinsam aus, mit einem Vertrauenswert.10/Min.
POST/api/v1/dns/reverseReverse-DNS-Abfrage (PTR) für eine IPv4-Adresse, mit Vorwärts-Bestätigung.10/Min.
Domain-Abfragen
OperationWas sie machtLimit
POST/api/v1/domain/ageLiefert Registrierungsalter und Ablaufdatum einer Domain über RDAP.10/Min.
POST/api/v1/domain/dns-recordsHolt alle DNS-Eintragstypen einer Domain mit einem Aufruf.10/Min.
POST/api/v1/domain/subdomainsFindet Subdomains über Certificate-Transparency-Logs.5/Min.
Text-Bewertung
OperationWas sie machtLimit
POST/api/v1/analyze/spamBewertet E-Mail-Inhalt auf das Risiko von Spam-Wörtern.30/Min.
POST/api/v1/analyze/subject-lineBewertet eine Cold-E-Mail-Betreffzeile und schlägt eine bessere vor.30/Min.
POST/api/v1/analyze/cold-emailBenotet einen ganzen Cold-E-Mail-Entwurf in acht Dimensionen.Siehe Spec
POST/api/v1/analyze/email-bodyBewertet den Text einer Cold-E-Mail und schlägt Verbesserungen vor.30/Min.
POST/api/v1/analyze/personalizationFindet und bewertet die persönlichen Details in einer Cold-E-Mail.Siehe Spec
Tutorials und Status
OperationWas sie machtLimit
GET/api/v1/public/tutorialsListet alle öffentlichen FirstSales-Tutorials.Siehe Spec
GET/api/v1/public/tutorials/{slug}Liefert den vollen Inhalt eines Tutorials über seinen Slug.Siehe Spec
GET/api/v1/healthPrüft, ob der Dienst läuft.Siehe Spec

Versionen, Abkündigung und Limits,schriftlich, damit dein Code sich darauf verlassen kann.

Das sind dieselben Regeln, die die OpenAPI-Spec unter x-apiVersioning, x-deprecationPolicy und x-rateLimit festlegt. Die Spec verlinkt direkt auf diesen Abschnitt.

Versionen

Die API ist im URL-Pfad versioniert. Die aktuelle Version ist v1, also ist jeder Endpoint unter https://firstsales.io/api/v1/<operation> erreichbar.

Eine inkompatible Änderung kommt unter einem neuen Präfix, und v1 behält seinen Vertrag. Die Form ohne Präfix /api/<operation> ist ein Alias für die aktuelle Version und kann sich ohne Ankündigung ändern, also ruf die Form /api/v1/ auf.

Abkündigungs-Richtlinie

Eine Version wird mindestens 180 Tage nach Ankündigung ihres Nachfolgers unterstützt.

Sobald eine Version abgekündigt ist, tragen ihre Antworten Deprecation: true und einen Sunset-Header mit dem Abschaltdatum (RFC 8594), dazu einen Link-Header zu den Migrationshinweisen. Abschaltungen werden auf dieser Seite angekündigt. Derzeit ist keine Version abgekündigt.

Rate-Limits

Jeder Endpoint ist pro IP in einem 60-Sekunden-Fenster begrenzt: 20 pro Minute für E-Mail-Checks, 10 für DNS- und Domain-Abfragen und 30 für die Text-Bewertung. Jede Antwort trägt die RateLimit-Header-Felder der IETF, damit ein Client sich selbst drosseln kann, bevor er abgewiesen wird.

RateLimit-Limit
Erlaubte Anfragen im aktuellen Fenster
RateLimit-Remaining
Noch verfügbare Anfragen
RateLimit-Reset
Sekunden bis zum Zurücksetzen des Fensters
RateLimit-Policy
Die Richtlinie, als <limit>;w=60

Über dem Limit

Der Endpoint antwortet mit 429, einem Retry-After-Header in Sekunden und einem JSON-Body mit error, message und hint.

HTTP/1.1 429 Too Many Requests
Retry-After: 41
Content-Type: application/json

{ "error": "...", "message": "...", "hint": "..." }
“I've been using FirstSales.io for several months now, and I can confidently say it has revolutionized how I approach lead generation and customer acquisition.”
Paweł StelmachSmall business owner · Trustpilot
Einfacher Leitfaden

So baust du auf der FirstSales-API auf, ohne spätere Überraschungen.

Sieben Gewohnheiten, die Integrationen am Laufen halten, wenn der Traffic wächst und Versionen sich ändern.

  1. 01

    Wähle zuerst den richtigen Zugang

    Wenn du nur Checks ohne Konto brauchst, etwa E-Mail-Validierung, DNS-Checks oder Text-Bewertung, nutze die öffentliche API oder den öffentlichen MCP-Server. Für Kontakte, Kampagnen oder Deals in deinem eigenen Workspace nutze die Developer API, die firstsales CLI oder den App-MCP-Server. Beides zu verwechseln ist der häufigste erste Fehler.

  2. 02

    Ruf immer die Form /api/v1 auf

    Die Form ohne Präfix /api/<operation> ist ein Alias für die aktuelle Version und kann sich ohne Ankündigung ändern. Ruf https://firstsales.io/api/v1/<operation> auf, damit dein Code den v1-Vertrag behält, wenn eine neue Version erscheint.

  3. 03

    Erzeuge deinen Client aus der Spec

    Handgeschriebene Clients veralten. Erzeuge einen aus /openapi.json und erneuere ihn, wenn sich die Spec ändert. So bekommst du die richtigen Feldnamen, die richtigen Typen und das Limit jeder Operation in einem Schritt.

  4. 04

    Lies das Ergebnis, nicht nur den Status

    Manche Checks antworten bei schlechter Eingabe mit 200, weil der Check selbst funktioniert hat. Die E-Mail-Validierung ist so einer: Eine ungültige Adresse liefert 200 mit valid auf false. Entscheide anhand der Felder im Body.

  5. 05

    Drossle anhand der Header

    Lies RateLimit-Remaining und RateLimit-Reset bei jeder Antwort. Werde langsamer, wenn wenig übrig ist, statt auf eine 429 zu warten. E-Mail-Checks erlauben 20 Aufrufe pro Minute, DNS- und Domain-Abfragen 10 und die Text-Bewertung 30.

  6. 06

    Fang 429 ab und warte

    Wenn du das Limit erreichst, warte die Sekunden aus Retry-After, bevor du es erneut versuchst. Das Feld hint im JSON-Body sagt, was du ändern sollst. Wiederhole nicht in einer engen Schleife; das hält das Fenster nur voll.

  7. 07

    Achte auf Abkündigungs-Header

    Eine Version wird mindestens 180 Tage nach Ankündigung ihres Nachfolgers unterstützt. Sobald eine Version abgekündigt ist, tragen Antworten Deprecation: true, einen Sunset-Header mit dem Abschaltdatum und einen Link-Header zu den Migrationshinweisen. Derzeit ist keine Version abgekündigt.

Vorher und nachher

Outreach-Checks von Hand gebaut, und über FirstSales aufgerufen

Dieselben Checks, auf zwei Arten.

Von Hand gebaut

Skripte, die du pflegen musst.

  • Ein Skript pro CheckSPF, DKIM, DMARC und MX einzeln programmiert.
  • Kein gemeinsamer VertragFelder ändern sich mit dem Skript.
  • Agenten lesen Seiten ausLangsam, fragil und schwer zu trauen.
  • Stille FehlerFehler ohne Hinweis auf die Ursache.
  • Limits im BlindflugDienste lehnen ohne Vorwarnung ab.
  • Kontoarbeit von HandImporte und Berichte im Browser.
FirstSales-API

Eine Spec, eine Basis-URL.

  • Achtzehn OperationenE-Mail, DNS, Domain, Texte und Tutorials.
  • OpenAPI-3.1-SpecErzeuge daraus einen typisierten Client.
  • MCP-ToolsAgenten rufen Checks direkt auf.
  • Klare FehlerError, message und hint bei jeder Ablehnung.
  • Sichtbare LimitsRateLimit-Header bei jeder Antwort.
  • Kontozugriff per CodeDeveloper API, CLI und App-MCP-Server.
Auf einen Blick

Entwicklerzugang: selbst bauen oder FirstSales

Was es braucht, Outreach-Checks und Konto-Abläufe aus Code zu steuern, von Hand und mit FirstSales.

Outreach-Checks selbst bauen im Vergleich zur FirstSales-API
Was du bekommstSelbst bauenFirstSales
Adress-ChecksEigene MX-AbfragenAufrufe für Validierung, Wegwerf und Catch-all
SPF, DKIM und DMARCEin Parser pro EintragstypEin Aufruf oder alle zusammen, mit Wert
Text-BewertungWortlisten, die du pflegstSpam, Betreff, Text und ganzer Entwurf
Maschinenlesbarer VertragWas der Code eben tutOpenAPI 3.1 in JSON und YAML
Zugang für AgentenSeiten auslesenÖffentlicher MCP-Server mit zwölf Tools
Rate-LimitsAuf die harte Tour gelerntPro IP, in Headern sichtbar
VersionierungKeine/api/v1 mit 180 Tagen Abkündigungsfrist
Dein Konto per CodeDer BrowserDeveloper API, CLI und App-MCP-Server
Starte deine $1-Testphase
Vor dem Livegang

Zehn Checks für eine FirstSales-Integration

Geh sie durch, bevor deine Integration live geht.

  • Du hast den öffentlichen oder den Konto-Zugang bewusst gewählt
  • Jeder Aufruf nutzt den Pfad /api/v1
  • Dein Client ist aus der aktuellen Spec erzeugt
  • Ergebnisse werden aus dem Body gelesen, nicht nur aus dem Status
  • RateLimit-Header werden geloggt und beachtet
  • 429-Antworten warten auf Retry-After
  • Fehler loggen das Feld hint
  • Deprecation- und Sunset-Header lösen einen Alarm aus
  • Agenten nutzen den MCP-Server, nicht das Auslesen von Seiten
  • Konto-Schlüssel und Tokens bleiben aus deinem Code

Fragen,klar beantwortet.

Deine Frage ist nicht dabei? Schreib uns.

01Brauche ich einen Schlüssel für die FirstSales-API?

Nicht für die öffentliche API und den öffentlichen MCP-Server. Sie decken E-Mail-Checks, DNS- und Domain-Abfragen, Text-Bewertung und Tutorials ab. Dein eigenes Konto brauchst du nur für die Developer API, die firstsales CLI und den App-MCP-Server.

02Wo finde ich die OpenAPI-Spec?

Die öffentliche Spec ist OpenAPI 3.1, unter /openapi.json als JSON und unter /api/openapi.yaml als YAML. Die authentifizierte Developer API hat eine eigene Spec auf developer.firstsales.io.

03Wie verbinde ich den MCP-Server mit Claude?

Füge in der Konfiguration deines MCP-Clients einen Server namens firstsales mit der URL https://firstsales.io/mcp/ hinzu. Er nutzt Streamable HTTP, und die Tools stehen im Manifest unter /.well-known/mcp.json.

04Welche Rate-Limits gelten?

Limits gelten pro IP in einem 60-Sekunden-Fenster: 20 Aufrufe pro Minute für E-Mail-Checks, 10 für DNS- und Domain-Abfragen und 30 für die Text-Bewertung. Das genaue Limit jeder Operation steht in der Spec unter x-rateLimit, und jede Antwort trägt RateLimit-Header.

05Was passiert, wenn ich das Limit überschreite?

Der Endpoint antwortet mit 429, einem Retry-After-Header in Sekunden und einem JSON-Body mit den Feldern error, message und hint. Warte die Retry-After-Zeit ab, bevor du erneut aufrufst.

06Wie ist die API versioniert?

Die Version steht im Pfad. Die aktuelle Version ist v1, also ruf https://firstsales.io/api/v1/<operation> auf. Eine inkompatible Änderung kommt unter einem neuen Präfix, und eine Version wird mindestens 180 Tage nach Ankündigung ihres Nachfolgers unterstützt.

07Wie installiere ich die FirstSales CLI?

Installiere das npm-Paket @firstsales.io/cli. Es fügt ein Programm namens firstsales hinzu. Die CLI-Referenz auf developer.firstsales.io listet jeden Befehl.

08Kann ich FirstSales testen, bevor ich darauf aufbaue?

Ja. Die öffentliche API funktioniert ohne Konto. Um die App und deine Konto-Zugänge zu testen, starte einen Test für $1 für 3 Tage. Tarife beginnen bei $29/Monat mit unbegrenzten Postfächern und Workspaces.

Akquise, die weiterläuft, wenn du offline bist.Leads, E-Mails, Follow-ups und Antworten, erledigt.

Verbinde unbegrenzte Postfächer und lass KI-Agenten Leads finden, jede E-Mail schreiben und nachfassen. Oder sende deine eigenen Vorlagen im manuellen Modus. Ab $29/Monat.

$1 für 3 Tage · Jederzeit kündbar · Kein Vertrag

Mit KI installieren

Dein Coding-Agent richtet die FirstSales CLI und Skills für dich ein.

Prompt für Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.