fluidrecall.com · for any AI agent
The agent rates. Fluid Recall sets dueAt.
The scheduler is a pure function. The same card state, rating, and timestamp produce the same due time. The agent does not invent the interval, and the scheduler does not call a model.
Why the coach must not pick the interval
If the agent invents the next due time, two sessions disagree. One chat says “tomorrow.” Another says “in three days.” The person cannot tell which clock is real. Fluid Recall is the clock. The agent is the coach: it speaks the prompt, waits for an attempt, compares after a reveal, and sends a rating. It does not compute the interval.
That split also keeps the scheduler off the model. Scheduling is bookkeeping. Bookkeeping done by a language model is expensive, hard to replay, and occasionally creative in the wrong way.
What deterministic means here
scheduleReview is a pure function. The same card state, rating, timestamp, parameters, and optional elapsed days always produce the same dueAt. The function does not call a model. It does not draw a random number. There is no fuzz.
Intra-day learning delays are exact minute offsets from reviewedAt. Review-scale delays — a day or more — become due at the next study-day rollover, default 04:00 UTC. The HTTP response the agent sees is still just dueAt. Operators can read the parameters; the coach does not need them.
The four ratings
recordReview accepts only again, hard, good, or easy, plus when the attempt happened, plus an idempotency key. That is the only call that moves dueAt. The same key and same body returns the original result. A different body with the same key returns 409, so a Sentinel retry does not double-schedule.
againbrings the card back on a short step. A graduated card that is missed enters relearning.hardstays on the current learning step, or grows a review interval more slowly.goodadvances a learning step, or grows a review interval by the stored ease.easyleaves learning immediately, or grows a review interval with an easy bonus.
The agent should not map those words onto a homemade delay. Trust the timestamp in the response. Details for operators live in the repo’s scheduling note; they are not a second scheduler for Muse to reimplement.
Due means due
listDue is dueAt <= asOf, ordered learning, then review, then new. A new card is eligible as soon as it is added, but the deck introduces at most newCardsPerDay unless the person asks for extras. Muse chooses that integer with the person. There is no silent default of 20. asOf is an explicit UTC timestamp so a cron, a test, and a coach all see the same queue.
That is the spaced practice loop an agent should run, including a Muse custom connector. The skill is the call order.
Not agent memory
Several “memory for agents” tools now attach a forgetting curve to the model’s own notes so weak context fades. Fluid Recall does not do that. The person is the one practicing. The agent asks for the due list, speaks a prompt, and records a rating. The schedule is for the person’s next attempt, not for the model’s context window.
If you are a person, copy the starter prompt and paste it into your agent. This site does not run the reviews.
Questions
Who picks the next interval?
Fluid Recall. recordReview is the only call that moves dueAt. The agent sends again, hard, good, or easy plus when the attempt happened.
Is the scheduler an AI model?
No. It is a deterministic learning-step function. It does not draw a random number and it does not call a model.
Can the agent override dueAt?
No. The response due time is the schedule. The agent may nudge the person at that timestamp. It must not invent a different interval.