Self-hostable study dashboard with a built-in MCP server, so that your Claude/ChatGPT subscription becomes x10 more effective for your semester
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport streamable-http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
no tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 4eab7ba · analyzer v17 · 2d ago
danger signals3
- suspicious endpointapi.telegram.orgOpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py:1129
f"https://api.telegram.org/bot{token}/sendMessage", - suspicious endpointapi.telegram.orgOpenStudy-dev-OpenStudy-4eab7ba/app/routers/settings.py:90
f"https://api.telegram.org/bot{sec.telegram_bot_token}/sendMessage", - suspicious endpointapi.telegram.orgOpenStudy-dev-OpenStudy-4eab7ba/app/services/telegram.py:30
f"https://api.telegram.org/bot{token}/sendMessage",
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 9
- fs OpenStudy-dev-OpenStudy-4eab7ba/app/db.py :108
await _pool.open() - fs OpenStudy-dev-OpenStudy-4eab7ba/app/main.py :4
from pathlib import Path - fs OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :1065
doc = fitz.open(stream=data, filetype="pdf") - fs OpenStudy-dev-OpenStudy-4eab7ba/app/services/email.py :14
from pathlib import Path - fs OpenStudy-dev-OpenStudy-4eab7ba/app/services/file_index.py :19
from pathlib import Path - fs OpenStudy-dev-OpenStudy-4eab7ba/app/services/storage.py :31
import shutil - fs OpenStudy-dev-OpenStudy-4eab7ba/app/services/telegram.py :10
from pathlib import Path - fs OpenStudy-dev-OpenStudy-4eab7ba/scripts/index_files.py :15
from pathlib import Path - fs OpenStudy-dev-OpenStudy-4eab7ba/scripts/run_migrations.py :26
from pathlib import Path
network 6
- net OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :1102
import httpx - net OpenStudy-dev-OpenStudy-4eab7ba/app/routers/files.py :23
import httpx - net OpenStudy-dev-OpenStudy-4eab7ba/app/routers/oauth.py :16
from urllib.parse import quote, urlencode - net OpenStudy-dev-OpenStudy-4eab7ba/app/routers/settings.py :3
import httpx - net OpenStudy-dev-OpenStudy-4eab7ba/app/services/storage.py :35
from urllib.parse import quote - net OpenStudy-dev-OpenStudy-4eab7ba/app/services/telegram.py :14
import httpx
secrets 5
- secrets OpenStudy-dev-OpenStudy-4eab7ba/app/db.py :82
pw = os.environ["POSTGRES_PASSWORD"] - secrets OpenStudy-dev-OpenStudy-4eab7ba/app/routers/internal.py :27
expected = os.environ.get("INTERNAL_API_SECRET", "").strip() - secrets OpenStudy-dev-OpenStudy-4eab7ba/app/tools/hashpw.py :8
import getpass - secrets OpenStudy-dev-OpenStudy-4eab7ba/scripts/run_migrations.py :36
pw = os.environ["POSTGRES_PASSWORD"] - secrets OpenStudy-dev-OpenStudy-4eab7ba/scripts/seed_operator_password.py :34
app_pw_hash = os.environ.get("APP_PASSWORD_HASH", "").strip()
tool registrations 45
- get_dashboard OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :127
- get_fall_behind OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :141
- list_courses OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :158
- get_course OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :165
- create_course OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :172
- delete_course OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :220
- update_course OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :231
- list_schedule_slots OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :273
- create_schedule_slot OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :282
- update_schedule_slot OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :321
- delete_schedule_slot OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :350
- list_exams OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :361
- update_exam OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :371
- list_study_topics OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :407
- create_study_topic OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :424
- update_study_topic OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :466
- mark_studied OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :500
- set_confidence OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :507
- add_lecture_topics OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :519
- delete_study_topic OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :570
- list_deliverables OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :583
- create_deliverable OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :606
- update_deliverable OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :641
- mark_deliverable_submitted OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :669
- delete_deliverable OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :676
- list_tasks OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :688
- create_task OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :713
- update_task OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :738
- complete_task OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :763
- reopen_task OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :769
- delete_task OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :775
- list_lectures OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :786
- create_lecture OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :795
- update_lecture OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :829
- mark_lecture_attended OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :853
- delete_lecture OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :859
- reopen_deliverable OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :868
- list_events OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :876
- record_event OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :893
- get_app_settings OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :916
- update_app_settings OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :927
- now_here OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :960
- list_course_files OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :979
- read_course_file OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :1020
- notify_telegram OpenStudy-dev-OpenStudy-4eab7ba/app/mcp_tools.py :1081
declared dependencies 3
- fastapi@>=0.115
- pydantic@>=2.9
- pydantic-settings@>=2.6