Skip to main content

The brief is a thread

Each day in your workspace’s own time zone has one Today thread. Its first message is that day’s morning brief, the same brief the email and GET /v1/brief carry. It is listed with your chats as Today · Tue 15 Sep. For a workspace that gets the morning brief, the thread opens at 07:00 your time. Any workspace’s thread also opens the first time that day’s brief is read, in the app or through the API, if it has not opened already. There is only ever one thread for a day: opening the brief again, from any door, takes you back to the same one. At midnight in your time zone the next day’s brief gets a new thread, and yesterday’s stays where it was.

Decisions are answerable in the thread

Each decision in the brief’s What needs you list (at most three) follows the brief as a card with a yes and a no: Each card names the effect class of what a yes does: a call a run stopped to ask about carries the class of that call, a change carries its own, and anything with no recorded class (an outreach email, for one) counts as one that cannot be undone. A yes that cannot be undone says so before you answer: “This can’t be undone after it ships.”, or “This can’t be undone after it’s sent.” for a call that sends something, and only a person approves it: an API key or a connected assistant is refused, as it is in the Inbox. A card with no such line can be undone. See Who can approve what. When a run stops to ask you questions rather than for a yes or a no, that decision has no card. It stays in the brief’s text with a link, and you answer it in the Inbox. The answer is applied to the same item in your Inbox, so the Inbox and the thread never disagree. Answering a card does not start an agent run and costs no credits. A yes given through an API key or a connected assistant is held to the same approval rules as in the Inbox; if they refuse it, the card stays open for a person. A decision already answered somewhere else is refused rather than answered twice, and the refusal says what the answer was, who gave it and when, for example “Already answered: approved by a member of your workspace at 10:12.” It names the kind of credential (a member of your workspace, an API key with its agent name when it has one, or a connected assistant), never which person, and gives the time in your workspace’s time zone, with the date when it was another day.

The Today screen

In the app, Today is the page you land on after you sign in, at /, in the thread view. Today in the rail and in the sidebar opens it. The screen puts what needs you first and the brief below it:
  • When something is holding your work, a card above Needs you says what it is in one sentence and gives the one thing to do: Reconnect a connection, Top up credits, Review the limit, Review automations, or Review in the Inbox. A block that is ours says “Work is paused on our side” and asks nothing of you. The card shows nothing when the work is running, and nothing when the check could not be read, because it never claims something is wrong from a read it does not have. See Loop health.
  • Needs you lists each decision as one row, with the number still open beside the heading. A row has the decision in one sentence, what kind it is (“Change to approve”, “An agent’s question”, “Something only you can do”) and whether a yes can be undone. It has at most three buttons: the yes, the no, and Open when the decision links to its full page. For a change, Open goes to the change’s own review page, /changes/<id>, where Back returns to Today. A change shows its own action as the yes (“Publish”, for example) or Approve, and Decline as the no. Something only you can do shows Done and Not doing it.
  • A decision that takes more than a yes or a no, such as an agent’s questions, is listed under the rows with Open, and you answer it in the Inbox. A change listed there opens its review page instead. A suggestion that has no change to review, such as a pitch to a creator, opens in the Inbox. It counts as still needing you, so the screen never says “Nothing needs you” while one is in the brief.
  • If a yes can’t be undone, the row says so before you answer: “This can’t be undone after it ships.” For a send, it says “This can’t be undone after it’s sent.”
  • A yes or a no is sent when you release the button, not when you first touch it, so a scroll that starts on a button answers nothing. Tapping twice sends one answer.
  • An answered row stays in the list with what you chose (Approved, Declined, Marked done or Not doing it) and leaves the count.
  • If someone answered a decision first, in another tab, in the Inbox or through the API, the row closes on what that first answer was, for example “Already answered: approved by a member of your workspace at 10:12.” Nothing is answered twice.
  • This morning’s brief is the thread’s first message. A link under it opens the whole thread, where every later message and agent run is shown.
  • The reply box at the bottom sends a message into the thread and takes you to it. The agent answers there.
When nothing needs you, the screen says so in one line, with the work the brief leads with and the date of the next check, when one is booked. If the brief could not be read, the screen says that instead and gives you Retry and the Inbox. It never shows “Nothing needs you” when it could not check. If the brief has no thread, its decisions are listed with a link to answer each one in the Inbox, because they can’t be answered on this screen.

Reply to continue it

Reply in the thread to ask about anything in the brief (“why is the pricing page waiting on me?”) and the agent answers there, with the brief as its context. A reply is an ordinary chat turn and is metered like one. Replying to the morning brief email, or to a brief posted to Slack, does not reach the thread. Open the thread in the app, or reply through the API as below.

Ask for it in words

In the Today thread, a chat, or a reply your agents receive from email or Slack (see Reply to act), you can name the work in your own words and the agent does it: How it works, and what it never does:
  • It finds the change first. The agent looks among your workspace’s own changes by page, lane or how recent they are, and gets at most three back. When more than one fits and your words don’t single one out, it asks which one instead of guessing.
  • It acts as you, through the same action as the buttons. Each act is the same one the app, POST /v1/actions and act over MCP take, held to the same approval rules, and recorded on the change’s history as yours, via=thread. What it tells you is that act’s answer.
  • Only in a turn you started. It acts only on what a person asked for in the message that started the run: typed in the app, or a reply a door matched to you. A message you send while a run is already going is answered by the next run, not by that one. A run an automation started, a task handed to a project, a note or an answer an API key or connected assistant added to the thread, or the agent carrying on by itself never approves, undoes or stops anything this way.
  • Nothing that can’t be undone. A yes to work that can’t be undone is never given from a message, and neither is a yes to a change with no recorded effect class, which counts as one that can’t be undone. The agent tells you so and links the change’s card, where you approve it yourself.
  • Never more room or more money. Autonomy is never raised and a budget or cap is never raised from words. That includes setting a cap where none is set yet, and a monthly budget of $0, which means no budget at all. You get the same sentence and link a reply gets (see What a reply can never do). A lower budget or cap is filed as a proposal and waits for your approval.
Depending on your workspace’s approval setting, the agent may ask you to confirm the act before it runs. Through an API key or a connected assistant, take the same actions with act directly.

If the brief is not ready

If that morning’s brief could not be put together, the thread still opens, with one sentence saying so. We try again on our own every fifteen minutes and post the brief into the same thread as soon as it is ready. There is nothing for you to do.

From your own tools

GET /v1/brief (MCP: brief) returns two fields beside the brief, and reading today’s brief this way opens the thread if it has not opened yet:
  • today_thread_id: the thread’s session id. Read it like any session with GET /v1/sessions/{id}, and reply to it with POST /v1/ask, passing it as session.
  • today_thread_uri: the same thread as attensira://{workspace}/thread/{id}.
Both are left out for a past day that never had a thread, and when the thread could not be opened. Answer a decision card with POST /v1/today/{id}/asks/{askId}; each card carries that path as its replyTo. That route is not on api.attensira.com yet; it takes the same key at https://webapp.attensira.com. Over MCP, act with approve or decline on attensira://{workspace}/today_ask/{thread}_{ask} answers the same card, the thread being today_thread_id and the ask id the {askId} in the card’s replyTo.