Home / Developers

API · MCP · CLI

Everything logs what a learner did.
Cognivia measures what their memory is doing.

Every LMS, tutoring app, quiz app, and AI tutor can tell you what a learner did, what they clicked, what they got wrong. None of them measure what happened while they learned: the memory state behind the answer, what's about to be forgotten, and what to do about it. Cognivia latches onto any learning or quiz app you already run, through one API, an MCP server, or the CLI, and hands back the memory state, the diagnosis, and the next move. It sits underneath your stack, it does not replace it.

What the flow looks like

One event in. A diagnosis, a prediction, and a next move out.

A partner doesn't adopt a new gradebook or migrate their content. They translate what a learner just did into a single, standard structure, the Learning Trace, and send it. Cognivia's models run on that common structure and return intelligence the partner's own system never had. The same six stages run whether the event came from a village classroom on a shared PC or a commercial AI tutor.

Trace Diagnose Model Intervene Experiment Passport

The Learning Trace

A common language for what happens during learning.

Cognivia's intelligence can't be built on any one app's private metrics, so it defines a universal representation of a single learning event: learner → task → concept → response → context → confidence → latency → error → intervention → outcome. Two things make it different from ordinary event logs: it captures the raw response, not just right or wrong, and it captures a confidence rating taken before feedback. Without those two, there is no mechanism and no metacognition to read.

A learning event · sent in
// what the learner just did, observations only
POST /v1/traces
{
  "learner_ref": "partner-opaque-id",
  "item_ref":    "item-8841",
  "concept":     "cell.photosynthesis.light",
  "observed": {
    "response_raw": "in the mitochondria",
    "is_correct":   false,
    "confidence":   74,   // 0-100, before feedback
    "latency_ms":   13400,
    "prior_exposures": 4,
    "interval_ms":  345600000
  }
}
Intelligence · sent back
// why · what's next · what to do, each with uncertainty
{
  "prediction": {
    "retrieval_success": { "value": 0.71, "ci": [0.62,0.79], "n": 19 }
  },
  "diagnosis": {
    "likely_mechanism": { "mechanism": "misconception", "prob": 0.78 },
    "misconception_target": "site of photosynthesis vs respiration"
  },
  "recommendation": {
    "intervention": "contrastive_example + delayed_retrieval",
    "expected_improvement": { "status": "insufficient_evidence" }
  },
  "model_confidence": "moderate",
  "evidence": { "comparable_observations": 19 }
}

What it computes

Four things other systems can't compute on their own.

Error mechanism, not error count

From the raw response, confidence, and latency, Cognivia infers why an answer failed, retrieval slip, partial knowledge, confabulation, or a targeted misconception, with a probability, never as a certainty.

Retention with an interval

An estimate of what a learner will still hold in seven or thirty days, fit from repeated spaced measurements and checked against an independent delayed test, reported as a probability with a credible interval.

An intervention, then its effect

Not just "review this." A specific move, contrastive example, delayed retrieval, re-teach, logged as an action, then re-measured so the system knows whether it actually worked.

A portable record of memory state

Thousands of events distilled into a running measurement of what a learner actually retains, the Cognitive Passport, carried across platforms and expressed as estimates with uncertainty, never as a fixed label or a score.


On your own content

Point the diagnosis at your items and your syllabus.

Misconception-targeting and prerequisite-gap detection run on your material, not a fixed taxonomy. Upload two small maps once, keyed by your own item_ref and concept strings, and every later diagnosis uses them. An item map turns a specific wrong option into the misconception behind it; a prerequisite map lets a miss be traced to a foundation the learner never mastered. Both are scoped to your account, and you can read them back or replace them any time.

# name the misconception behind a wrong answer to your item
POST /v1/content/items
{ "items": [{ "item_ref": "q_1042",
    "distractors": { "6/8": "adds numerators and denominators" } }] }

# trace a miss to a weak foundation
POST /v1/content/prerequisites
{ "prerequisites": [{ "concept": "Adding fractions",
    "requires": ["Equivalent fractions"] }] }

How it stays honest

Every field in a response carries its own uncertainty.

Here is what we observed. Here is what we infer. Here is how certain we are. Here is the evidence. Here is what we recommend. And here is whether the recommendation worked.

Every inferred field in an API response carries a probability or a credible interval, and when the evidence is too thin, the field returns insufficient_evidence instead of a fabricated number. That isn't a limitation to hide; it's what separates measurement infrastructure from a system that guesses confidently. A partner integration is expected to render it, not paper over it. The full discipline, every metric's definition, model, uncertainty method, validation study, and the exact claims it is and isn't allowed to make, lives in the Cognivia Measurement Specification, the project's scientific constitution.


Where it sits

Under your stack, not in front of it.

A school keeps its LMS. A company keeps its training platform. An AI tutor stays the AI tutor. They send Cognivia what they saw, and read back the intelligence they were missing, through one clean REST API, standard LTI 1.3 for single sign-on and roster sync, and webhooks that fire the moment a learner's state materially changes.

Read a learner's live memory state

Read a learner's live cognitive state wherever your teaching already lives. Each value carries its own sample size and uncertainty.

// a learner's live memory state
GET /v1/learners/:id/memory-state

{ "concept": "Photosynthesis",
"retrievability_now": 0.91, "fsrs_stability": 7.6,
"accuracy_ci95": [0.21, 0.94],
"next_review_at": "2026-08-30" }

Speaks what you already run

Server-to-server API keys for integrations, LTI 1.3 for SSO and rosters, and signed webhooks on state changes, so the right nudge reaches the right place at the right moment. The engine is language-agnostic: it reads traces from a learning app in any language and returns diagnoses and reports in the language you ask for.

REST APILTI 1.3WebhooksLearning TraceSSORoster syncAny language

What the layer will not do

A learning trace is sensitive. It's treated that way.

Consent for minors, enforced

For learners under 18, ingest is refused unless verifiable guardian consent is on record, under India's DPDP Act and the DPDP Rules 2025. Cognivia does not track, profile, or behaviourally target children.

Purpose-limited

Traces are used to model and improve that learner's learning and Cognivia's models in aggregate. Never sold, never used for advertising, no third-party trackers.

No inferred-fact leakage

The API refuses to return a psychological characteristic as a fact. Every inference ships with a probability or an interval, or the honest status, insufficient evidence.

Pinned and reproducible

Every estimate carries the model version that produced it, so a partner can reproduce a past diagnosis and audit how a recommendation was reached.


For agents · MCP

Give any AI agent the diagnosis, as a tool.

Cognivia ships as an MCP server, so a tutoring agent, an IDE, or an assistant can call it directly. The agent sends what a learner just did and gets back the error type, the memory state, and the next move, each with its uncertainty. No bespoke glue.

Add the server
// mcp client config
{
  "mcpServers": {
    "cognivia": {
      "command": "npx",
      "args": ["-y", "@cognivia/mcp"],
      "env": { "COGNIVIA_API_KEY": "sk_live_..." }
    }
  }
}
Tools the agent gets
diagnose_error(concept, outcome, latency, confidence)
  → error type + fix + confidence

get_memory_state(learner_ref)
  → per-concept decay, retrieval, next review

generate_report(learner_ref)
  → a Cognitive Passport

For terminals · CLI

Diagnose and pull reports from the command line.

For developers and researchers: run a diagnosis over an export, read a learner's memory state, or generate a report, straight from a terminal or a data pipeline. The demo path runs on bundled sample data, with no key required.

Terminal
# install
npm i -g @cognivia/cli

# try it with no account
cognivia diagnose --demo

# on your own data
cognivia diagnose --input answers.json
cognivia memory-state <learner_ref>
cognivia report <learner_ref>

What it returns

Three reports, built from the same trace stream.

The point was never a quiz. It is the output: readable, exportable reports a teacher, a developer, or a researcher can act on, and every number carries its uncertainty.

Cognitive Passport

Per learner, per subject: the Learning Genome (decay, retrieval, consolidation, fatigue) and the scheduled reviews, each concept with its state. See the live Passport →

Session Report

One sitting: every answer, its diagnosed error type, timing and confidence, and the recommended fix. Exportable as PDF.

Error Diagnosis

The four-way call on a single wrong answer, forgetting, missing prerequisite, half-formed grasp, or confident misconception, with a probability and the fix.

Put a measurement layer under your learning.

Talk to us For institutions →