Search the user's emails by free text (subjects, senders, bodies,
attachment text). Natural language works, and so do Boolean OR-lists,
quoted "exact phrases" and Gmail-style operators (from:, to:, subject:,
newer_than:3d, older_than:, has:attachment) — pass the query however it
reads most naturally. Optional filters: sender (name or address fragment),
start_date/end_date (YYYY-MM-DD), last_x_days, email_type ('received' or
'sent'), and folder — 'cleanbox' (genuine personal correspondence),
'other' (promotional/newsletters/ads), or 'all'. BY DEFAULT search covers
EVERYTHING unfiltered; only pass folder to restrict it. personal_or_ad is
a deprecated alias for folder ('personal'=cleanbox, 'advertising'=other).
Returns matching emails with ids for use in get_email / get_action_links.
PAGINATION: results are a page — total_count is how many matches exist in
all; to get more, re-call with offset=<results so far> (limit caps at 50
per page). Covers Mailopoly's indexed history only — for older mail
beyond the indexed window (the response's indexed_history_start), use
deep_search_emails.