Spaced-Repetition Schedule & Exam Plan
learning_optimizerRebuilds each learner's memory of each item from a review log (who answered what, when, how well) and returns: today's review list per learner, most-at-risk first; chance of remembering each item now, in 7 and 30 days; the next review date for a retention target; a day-by-day plan to an exam date within a daily limit, with the daily effort needed if the limit is too low; items that keep slipping; questions most learners miss; neglected topics; and how much daily work 85/90/95% retention costs. Memory models: FSRS-6 (matches py-fsrs 6.3.2 exactly), a per-learner personalised version, half-life regression and SM-2 — the schedule is chosen by measured accuracy on the most recent answers. Output starts with plain decision cards (REVIEW TODAY, CATCH UP, STUDY MORE, ON TRACK FOR EXAM, SHORTER GAPS, TRY ANOTHER WAY, REWRITE ITEM, REVISE TOPIC, PROTECT PRIVACY ...). Up to 2,000 review rows; larger logs: learning_get_engine.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"reviews": "<reviews>"
},
"name": "learning_optimizer"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Today's date (YYYY-MM-DD). Defaults to the latest review. | |
| items | No | Optional item bank: item_id (+ topic), including items not studied yet. | |
| reviews | Yes | One row per answer: learner_id (anonymous code), item_id, timestamp, grade. Optional: topic, duration_seconds. Always the full history. | |
| learners | No | Only these learner codes (others ignored). | |
| exam_date | No | Exam date YYYY-MM-DD, to get a day-by-day plan. | |
| scheduler | No | auto = the model measured most accurate on recent answers. | auto |
| exam_target | No | Chance of remembering each item on exam day to aim for. | |
| grade_scale | No | auto | |
| leech_lapses | No | Times forgotten before an item counts as 'keeps slipping'. | |
| max_items_listed | No | ||
| min_test_reviews | No | ||
| target_retention | No | Chance of remembering to schedule for (0.85-0.95 typical). | |
| new_items_per_day | No | ||
| daily_review_limit | No | Most items a learner can do per day (reviews + new). | |
| seconds_per_review | No | Override time per review (seconds). | |
| include_item_states | No | List every learner-item state (auto: up to 2,000). | auto |
| max_learners_listed | No | ||
| max_learners_planned | No | ||
| min_reviews_for_pace | No | ||
| maximum_interval_days | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alerts | No | ||
| status | Yes | 1 = ok, 0 = nothing could be scheduled | |
| content | No | ||
| message | No | ||
| learners | No | ||
| metadata | Yes | ||
| decisions | Yes | Plain-language cards, priority order. Relay these first. | |
| assumptions | No | ||
| item_states | No | ||
| model_evaluation | No | ||
| data_quality_report | No |