LightMySky
API

Quickstart

Everything below the graph endpoints is org-scoped by an API key. In this dev build, pnpm seed prints a key and demo learner ids.

# seed the local db, copy the printed key
pnpm seed

# the tutoring loop
curl -H "Authorization: Bearer $KEY" localhost:3000/api/v1/learners/$ID/session/next
curl -X POST -H "Authorization: Bearer $KEY" \
  -d '{"topicId":"$TOPIC","grade":"correct","mode":"review"}' \
  localhost:3000/api/v1/learners/$ID/session/answer
curl -H "Authorization: Bearer $KEY" localhost:3000/api/v1/learners/$ID/memory

Endpoints

MethodPathAuthWhat it returns
GET/api/v1/subjectsnoneSubjects with topic counts and domains
GET/api/v1/topics?q=&subject=&ageMin=&ageMax=noneSearch micro-topics
GET/api/v1/topics/:idnoneOne topic, with evidence and assessment prompt
GET/api/v1/topics/:id/prerequisites?transitive=&strength=noneWhat must come first, and why
GET/api/v1/topics/:id/unlocksnoneWhat this topic opens up
GET/api/v1/standards/:key/topicsnoneTopics distilled from a curriculum standard
GET/api/v1/topics/:id/contentnoneLesson, doodle scenes, video query, quiz item bank
GET/api/v1/learnerskeyLearners in your org
POST/api/v1/learnerskeyCreate a learner (displayName, birthYear)
GET/api/v1/learners/:idkeyLearner with memory summary and per-subject progress
GET/api/v1/learners/:id/session/next?subject=keyWhat to ask now: placement probe, refresh, or new topic
POST/api/v1/learners/:id/session/answerkeyRecord a grade; credit propagates, misses flag a prerequisite
GET/api/v1/learners/:id/memorykeyPer-topic memory: strength, recall probability, due date
GET/api/v1/learners/:id/masterykeyMastered and in-progress topic ids
POST/api/v1/learners/:id/masterykeyImport external state (vouched, audited later)
GET/api/v1/learners/:id/levelskeyPer-subject level bands (two-year, grade-mapped)
GET/api/v1/packskeyCustom packs you can use: own, shared in, public
POST/api/v1/packskeyCreate a pack (name, description)
GET/api/v1/packs/:idkeyA pack with topics and question pools
PATCH/api/v1/packs/:idkeySet visibility: private or public
POST/api/v1/packs/:id/topicskeyAdd a custom topic (subject, name, ages, prereqIds)
POST/api/v1/packs/:id/topics/:topicId/itemskeyAdd a question (mcq, true_false, numeric)
POST/api/v1/packs/:id/sharekeyShare the pack with an email
PUT/api/v1/learners/:id/packskeySwitch packs on for a learner (packIds)
GET/api/v1/learners/:id/frontier?subject=&limit=keyRanked list of what is within reach
GET/api/v1/learners/:id/path/:topicIdkeyLearning path to a goal topic
GET/api/v1/learners/:id/assessment/next?subject=keyAlias of session/next
POST/api/v1/learners/:id/assessment/:topicIdkeyAlias of session/answer, outcome wording
GET/api/v1/learners/:id/report?curriculum=keyStandards coverage report
Free tier

The graph endpoints (topics, prerequisites, unlocks, standards) are also available as a stateless MCP server: pnpm --filter @atlas/mcp-server start. Point any agent at it; no account needed. The hosted API adds the per-learner memory model on top.