Windows 16GB
Install Claude Desktop, Gemini CLI, or use Grok in the browser. Connect them here so they can add cards. Review those cards in this app.
Connect
Open this site on your computer and your phone — it is the same account. Connect Claude Desktop, Grok, or Gemini CLI below if you want them to add cards and ask you questions. Studying on your phone does not need any of this. How to study · How to tutor.
Install Claude Desktop, Gemini CLI, or use Grok in the browser. Connect them here so they can add cards. Review those cards in this app.
A Mac is enough. You do not need a local model. Claude, Grok, or Gemini does the talking; this app stores the cards.
Open this site in Safari, or add it to your Home Screen. Study here. Add new cards from your computer if you want.
Protocols
Streamable HTTP is the default. HTTP+SSE is for older Claude. stdio is the local Desktop fallback. Grok can use JSON-RPC or Streamable HTTP. The phone never runs a transport — it just opens this site.
2025-06-18
Streamable HTTP
Claude Desktop, Gemini CLI (httpUrl), Grok remote
/mcp
2024-11-05
HTTP + SSE
Older Claude, Cursor, Gemini CLI (url)
/mcp/sse
2025-06-18
stdio
Claude Desktop or Gemini CLI on this computer
scripts/elenchus-mcp-server.mjs
custom
WebSocket
CLI and live preview
/mcp-ws
elenchus
JSON-RPC
Grok, Gemini API scripts, this playground
/api/mcp
Claude Desktop — Streamable HTTP
Paste into claude_desktop_config.json. Newer Desktop builds speak HTTP MCP directly — no Node on the box.
{
"mcpServers": {
"elenchus": {
"type": "http",
"url": "/mcp"
}
}
}Claude Desktop — HTTP + SSE
Older Claude Desktop and some IDEs still open an SSE stream first. The server replies with an endpoint event pointing at /mcp/message.
{
"mcpServers": {
"elenchus": {
"type": "sse",
"url": "/mcp/sse"
}
}
}Claude Desktop — fallback
If Desktop only launches local commands, point it at the Node bridge. Works on Windows and macOS. Set ELENCHUS_URL to this site.
{
"mcpServers": {
"elenchus": {
"command": "node",
"args": ["scripts/elenchus-mcp-server.mjs"],
"env": { "ELENCHUS_URL": "https://YOUR-APP" }
}
}
}Grok
Grok uses the same card list over HTTP. It can pull the next card, ask you about it, and save how you did.
POST /api/mcp
Content-Type: application/json
MCP-Protocol-Version: 2025-06-18
{
"jsonrpc": "2.0",
"id": 1,
"method": "elenchus.nextReview",
"params": {}
}Gemini CLI — Streamable HTTP
Paste into your Gemini CLI settings. httpUrl is Streamable HTTP — the same /mcp URL Claude uses. Restart the CLI or run /mcp after you save.
{
"mcpServers": {
"elenchus": {
"httpUrl": "/mcp"
}
}
}Gemini CLI — SSE
If your Gemini build wants an SSE stream, use url instead of httpUrl. Same cards, same reviews.
{
"mcpServers": {
"elenchus": {
"url": "/mcp/sse"
}
}
}Gemini CLI — fallback
Works on Windows and the Mac if Gemini will only launch a local command. Point ELENCHUS_URL at this site.
{
"mcpServers": {
"elenchus": {
"command": "node",
"args": ["scripts/elenchus-mcp-server.mjs"],
"env": { "ELENCHUS_URL": "https://YOUR-APP" }
}
}
}/mcpget_library
{}
Catalog of every deck. Start here.
get_context
{ id }
Load a set to discuss the concepts
add_from_chat
{ setId, front, back, distractors[3] }
Turn a question they asked into a card
set_choices
{ cardId, distractors[3] }
Exam-style wrong answers for Learn only
next_review
{ corpusId? }
Claude, Grok, or Gemini becomes the tutor
record_review
{ nodeId, grade 1-4 }
Writes SM-2 for every device
ingest_text
{ text, title? }
Handbook dump to nodes
upsert_set
{ title, cards[] }
New set. Include distractors on every card.