Drie weken geleden was mijn inbox een zooitje. 180 ongelezen mails, nieuwsbrieven die ik nooit open, klantvragen die tussen Intercom-notificaties verdwenen. Ik overwoog Fyxer, de AI-assistent die drafts schrijft en mails sorteert. Dertig dollar per maand voor iets wat ik met Claude Code en een half uurtje setup zelf kan bouwen voelde scheef. Dus bouwde ik mijn eigen variant.
Het basisrecept vond ik in een post van Rafael Mendiola: praat met de Gmail API via een eigen tool, laat Claude Code die aanroepen. Mendiola maakte er een triage-hulpje van voor eenmalige schoonmaak. Wij (mijn bedrijven Unicorn Media en consultancywerk bij Digital Impact) hebben het doorgetrokken naar een volwaardige dagelijkse inbox-agent.
Wat de agent doet
Elk uur, zeven dagen per week, start er in de achtergrond van mijn Mac een Claude-proces. Je merkt er niets van op je scherm: geen Claude-venster dat opent, geen pop-up, geen melding. Het hele ding draait onzichtbaar door, zoals een cron-taak. Claude krijgt via de commandline één vaste opdracht mee en voert die zelfstandig uit. Per mail maakt hij een van vier keuzes:
- Archiveren, als de mail is afgehandeld of ruis (nieuwsbrieven, LinkedIn-notificaties, security-alerts)
- Draft klaarzetten, als het een bekend type aanvraag is waar ik een template voor heb (blogplaatsings-aanvragen, factuur-reminders, klantvragen met terugkerende vorm)
- Ster geven, als de afzender op mijn VIP-lijst staat en er actie nodig is
- Laten staan, als het een echte to-do is die ik zelf moet beoordelen
Om 09:00 's ochtends draait een tweede script. Dat stuurt me twee mails: een rapport van wat de inbox-agent de afgelopen uren deed (x mails verwerkt, y gearchiveerd, z drafts klaar), en een to-do-lijst uit wat er nog open staat, gesorteerd op prioriteit met kleurcodes voor urgent, normaal en laag.
De basis, Gmail API plus een MCP-server
Mendiola bouwde een CLI die Claude Code aanroept via de Bash-tool. Ik koos voor een MCP-server. Het verschil zit in de toollaag: een CLI is een los executable dat Claude aanroept als shell-commando, een MCP-server registreert zich als gestructureerde toolset bij Claude zelf. Voor een dagelijkse, lang-lopende agent is dat sneller (geen shell-overhead per call) en de conversatie-context blijft consistenter.
Onder water roept de MCP-server dezelfde Gmail API-endpoints aan: messages.list, messages.modify, drafts.create, messages.send. Alleen de manier waarop Claude die tools krijgt verschilt.
Google Cloud OAuth, vijf minuten klikken
De OAuth-setup ziet er intimiderend uit maar is in vijf minuten klaar. In het Google Cloud-console maak je een project, activeer je de Gmail API, en configureer je drie dingen onder Google Auth Platform: Branding, Audience en Data Access.
Belangrijk: pak niet meer scopes dan je nodig hebt. Ik gebruik gmail.readonly om de inbox te lezen, gmail.modify voor archiveren en labels, en gmail.send voor de dagelijkse briefing-mail. Per scope die je niet activeert wordt de blast-radius kleiner als je token ooit lekt.
Die credentials.json plus een later gegenereerde token.json staan in je projectmap (gitignored). De MCP-server gebruikt ze om elk verzoek naar de Gmail API te authenticeren.
Onze tweaks bovenop het basisrecept
LaunchAgent-cron elk uur
Op mijn Mac draait een LaunchAgent die elk uur een headless Claude-proces start, op Sonnet 4.6 (Opus slurpt zonder reden tokens voor een simpele classificatie-taak). Zelf bouwen? Een LaunchAgent is de macOS-variant van cron: een plist-bestand in ~/Library/LaunchAgents/ dat launchd op schema uitvoert.
Maak ~/Library/LaunchAgents/com.gmail-organizer.inbox-check.plist aan met deze inhoud:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.gmail-organizer.inbox-check</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/jouwnaam/Documents/Gmail Organizer/bin/inbox-check.sh</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>StandardErrorPath</key>
<string>/tmp/gmail-inbox-check.log</string>
</dict>
</plist>
StartInterval: 3600 betekent elke 3600 seconden, dus een keer per uur. Wil je een exact tijdstip (bijvoorbeeld 09:00 voor de dagelijkse briefing), dan gebruik je StartCalendarInterval met Hour- en Minute-keys in plaats van een interval.
Het shell-script dat de agent aanroept is compact:
#!/bin/bash export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" cd "$HOME/Documents/Gmail Organizer" claude -p " Je bent de inbox-checker. Haal de laatste 50 inbox-mails op. Voor elke mail: archiveren (ruis), draft aanmaken (bekende aanvraag), ster geven (VIP-afzender) of laten staan (echte to-do). Lees CLAUDE.md voor alle regels. Log een overzicht in logs/daily-report.txt. " --model claude-sonnet-4-6 \ --allowed-tools "mcp__gmail-organizer__*,Bash" \ --dangerously-skip-permissions 2>&1 >> logs/inbox-check.log
Drie flags om op te letten:
--model claude-sonnet-4-6: voor triage-taken is Sonnet 4.6 ruim voldoende. Opus werkt ook, maar kost ongeveer vijf keer zoveel tokens voor hetzelfde resultaat. Voor deze workload een no-brainer.--allowed-tools "mcp__gmail-organizer__*,Bash": Claude mag alleen de Gmail MCP-tools en Bash gebruiken. Geen WebFetch, geen filesystem-toegang buiten het project. Principle of least privilege.--dangerously-skip-permissions: in headless mode accepteert Claude elke tool-call automatisch. Zonder deze vlag hangt het proces op een bevestigingsprompt die niemand ziet.
Laden en verifiëren:
launchctl load -w ~/Library/LaunchAgents/com.gmail-organizer.inbox-check.plist launchctl list | grep gmail-organizer
Eerste run is meteen na het laden. Vanaf dan elke 3600 seconden. De Claude-kosten blijven laag doordat de context kort is: 20-50 mails per run, geen boekwerk aan instructies.
Ochtendbriefing om 09:00
Een tweede LaunchAgent draait elke paar minuten vanaf 09:00, maar stopt meteen als hij via een lockfile in /tmp ziet dat er vandaag al een briefing is verstuurd. Hij genereert twee HTML-mails: (1) het rapport van wat de inbox-agent vandaag deed, (2) een to-do-lijst uit wat er nog open staat. Beide komen binnen in mijn eigen inbox, via MailerSend als SMTP-relay.
Schrijfstijl en klantcontext in CLAUDE.md
De MCP-server leeft in een Node-project met een CLAUDE.md die Claude altijd leest voordat hij beslissingen neemt. Daarin staan harde regels: welke afzenders altijd een ster krijgen (mijn grootste klanten), wie nooit gearchiveerd mag worden (persoonlijke contacten), en dat Claude altijd moet antwoorden in de taal van de afzender. Mijn e-mail-aliassen staan er ook in, zodat drafts automatisch vanaf het juiste afzenderadres per bedrijf uitgaan.
Die context is het verschil tussen een generieke triage-bot en iets dat werkelijk persoonlijk werkt. Als je je eerste AI-agent bouwt, stop hier een uur in. Die tijd verdient zich in de eerste week terug.
De rekensom, hoe gratis is dit echt
De infrastructuur: Google Cloud gratis (binnen Gmail API-quota, dat ruim zit voor persoonlijk gebruik), MCP-server gratis (eigen Node-project met de open-source MCP SDK), hosting op mijn eigen Mac gratis. De enige kosten zijn mijn Claude Code-subscription, die ik toch al had voor dagelijks development-werk.
Fyxer rekent ongeveer 30 dollar per maand voor inbox-management. SaneBox 7 tot 36 dollar afhankelijk van het plan. Een eigen agent bovenop Claude Code pakt die functie er 'gratis' bij en is tegelijk extensible. Ik kan volgende week een tweede MCP-server koppelen voor mijn agenda, of Asana, zonder een nieuw abonnement.
Wanneer dit niet past
Als je organisatie een AVG-gevoelige inbox heeft, let op. Deze setup stuurt mail-inhoud als context naar de Claude-API van Anthropic. Voor een privé-inbox is dat een persoonlijke afweging. Voor een bedrijfs-inbox met klantgegevens wil je een DPIA of een enterprise-plan met zero-retention in plaats van de standaard consumer-subscription.
Je moet ook comfortabel zijn met terminal-werk, OAuth-config en basic Node. Niks ingewikkelds, maar als de gedachte aan npm install je al doet zuchten: koop Fyxer.
Wat ik eruit haal
Het netto-effect is niet dat ik geen mails meer lees. Ik lees nog steeds alles. Maar de agent pakt 60 tot 70 procent van de ruis er 's nachts of tussendoor al uit, en de ochtendbriefing geeft me een prioriteits-gesorteerde lijst voordat ik überhaupt Gmail open. In drukke weken bespaart dat me makkelijk een uur per dag, voor de kosten van een subscription die ik toch al had.
Het grotere punt: voor iedereen die als consultant, ondernemer of developer dagelijks met AI werkt is 2026 het jaar om te stoppen met wachten op SaaS-oplossingen voor kleine productiviteitsproblemen. De tools zijn er, de documentatie is er, en de marge tussen 'een abonnement kopen' en 'zelf iets specifieks bouwen' is door Claude Code dramatisch kleiner geworden.