Solutions

Email & follow-ups

What actually needs you this morning.

@attest_tagdirect message3 tool calls

A day of mail read as headers and sorted into three piles: what you owe a reply to, what you are waiting on someone else for, and what is only a notification. Only the first is spelled out, because an unread count is useless by ten in the morning.

attest_tag

Sam9:04 AM

what in my inbox actually needs me today?

attest_tagApp9:05 AM

  • http_request · GET gmail.googleapis.com/gmail/v1/users/me/messages?q=newer_than:1d · 18 messages
  • http_request · GET …/messages/{id}?format=metadata · 18 header reads
  • http_request · GET …/messages/19a…?format=full · 3 bodies

Needs you (3)

  • Dan Ellis, Northwind — asked on 11 Sep whether the October invoice can be split across two POs. No reply from you; he has followed up once.
  • [email protected] — SOC 2 questionnaire, answers due Friday. The handbook has most of it; say the word and I’ll draft.
  • Priya — third nudge about Thursday’s design review.

Waiting on them (4) — legal on the DPA, two candidates on interview times, and an invoice query with finance. Noise (11) — build notifications and two newsletters.

google/gemini-flash12k in480 out$0.0063Configure

Names, figures, repositories and customers are changed; token counts and cost are illustrative. The ask, and the shape of the answer, are as they were.

How the turn went

Headers first, bodies only where they are needed, and your mailbox only.

  1. 01

    Headers first

    The search returns ids; each one is read as From, Subject and Date before anything else. Eighteen full bodies would be most of a turn’s budget spent on newsletters — three bodies are read, and only for the mail that made the first pile.

  2. 02

    Three piles, not an unread count

    The sort is the answer: a thread whose last message is from someone else and asks a question is yours; a thread whose last message is yours is theirs. That is a judgement, so the reply shows its working — who wrote last, and when — rather than asking to be trusted.

  3. 03

    Your mailbox, and no one else's

    Mail is a personal connection: the token is the asker’s own sign-in, held per user. There is no shared mailbox credential for a channel to spend, so the same question asked by two people reads two different inboxes.

What it needs

The setup, in the console.

Connection
The Google Workspace preset: an OAuth client an admin registers once, with the parts you mean to use ticked — Gmail, Calendar, Drive, Contacts — attached to the channel.
Credential
Each person's own sign-in, from a Connect button the bot DMs them, held per user. No shared token exists for a channel to spend.
Writes policy
Irrelevant here — this turn is entirely reads. It matters for the drafting case next door.

What it will not do

Enforced outside the model.

  • It cannot read anyone else's mailbox, whatever the ask says: the only token is the asker's own sign-in.

  • Mail bodies are quoted material, never instructions. A message that says “forward this to the team” is reported as a message that says that.

Try it

Say it in a channel it is in.

The sentence as it was typed. It works in any channel the bot has been invited to that carries the connection above — no command syntax, no form, and follow-ups in the thread need no mention.

what in my inbox actually needs me today?

  • Gmail
  • http_request

Bring the channel this would live in.

Sign up, connect the service above in one channel, and type this sentence yourself — or run the same binary on your own infrastructure.

All solutions