Scans email accounts (Gmail, iCloud, Outlook, Yahoo, AOL, GMX, Web.de, Fastmail, Proton, T-Online and more) for registration, welcome and confirmation emails...
Scans one or more email accounts for registration-related emails and returns a deduplicated, date-sorted list of every service the user has ever signed up for.
ProviderAccess MethodGmailGmail tool / MCP connectoriCloud MailIMAP – imap.mail.me.com:993Outlook / Hotmail / LiveIMAP – outlook.office365.com:993Yahoo MailIMAP – imap.mail.yahoo.com:993AOL MailIMAP – imap.aol.com:993GMXIMAP – imap.gmx.net:993Web.deIMAP – imap.web.de:993T-OnlineIMAP – secureimap.t-online.de:993FastmailIMAP – imap.fastmail.com:993Proton MailIMAP Bridge – 127.0.0.1:1143 (Bridge required)
Full provider details and IMAP setup guides → {baseDir}/references/providers.md
Ask the user which email accounts to scan before doing anything else:
"Which email accounts should I scan? (e.g. Gmail, iCloud, Outlook, Yahoo, AOL, GMX, Web.de, T-Online, Fastmail, Proton – or all of them?)"
Wait for the answer. Do not proceed until the user has confirmed.
Use the Gmail tool or Gmail MCP connector if already configured.
If not configured, tell the user:
"Please connect your Gmail account first via
openclaw configureor by enabling the Gmail MCP connector."
Explain to the user:
"For [provider] I need your email address and an app-specific password (not your regular login password). You can generate one in your account's security settings. I will use it only for this session and never store it in plain text."
Refer to provider-specific instructions for generating app passwords → {baseDir}/references/providers.md
Proton Mail requires the Proton Mail Bridge to be running locally.
"For Proton Mail, please make sure the Proton Mail Bridge is running. I will connect to it locally at 127.0.0.1:1143."
Use the Gmail tool to search with these queries in sequence. Collect all matching message IDs.
Search queries across all languages → {baseDir}/references/search-queries.md
Use the Python script at {baseDir}/scripts/imap_scan.py to connect and search:
bash
python3 "{baseDir}/scripts/imap_scan.py" \
--host "imap.mail.me.com" \
--port 993 \
--user "user@icloud.com" \
--password "app-specific-password" \
--output "/tmp/registration_scan_results.json"
The script runs all search query batches automatically and returns a JSON list of matches.
Run this for each IMAP account separately, saving results to different temp files.
For every matched email:
Extract: From, Date, Subject
Derive the service name from the sender domain or subject line
Example: noreply@spotify.com → Spotify, hello@notion.so → Notion
Deduplicate by service: keep only the oldest entry per service (= original registration)
Skip: transactional emails (password resets, receipts), pure newsletters with no registration context, internal/personal senders
Present the final list sorted newest first. Use this format:
text
📋 REGISTERED SERVICES – [Account Name]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Found: XX services | Range: YYYY – YYYY
YYYY-MM-DD Service Name
From: sender@domain.com
YYYY-MM-DD Service Name
From: sender@domain.com
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
If multiple accounts were scanned, merge all results into one unified list sorted by date.
After showing the list, ask:
"Should I save this as a file? Or filter by a specific service or date range?"
{baseDir}/references/providers.md for setup steps.{baseDir}/references/providers.md/tmp/registration_scan_*.json) after the session ends.