{"name":"io.github.barzoj/somtoday-mcp","slug":"barzoj-somtoday-mcp","title":"Somtoday (unofficial)","description":"Unofficial read-only Somtoday parent portal: timetable, homework, grades, assignments, messages","url":"https://mcp.market/server/barzoj-somtoday-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":33,"stars":1,"forks":0,"downloads_week":299,"last_push_at":"2026-10-23T08:37:13.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/barzoj/somtoday-mcp","website":"https://github.com/barzoj/somtoday-mcp#readme","version":"0.3.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"somtoday-mcp","version":"0.3.1","transport":{"type":"stdio"}}],"tools":[{"name":"absence","description":"Registrations for the school year (or current grading period): unexcused and excused absence, late, removed from class, homework not done, materials missing — counts and every entry with date, lesson and remark — plus active measures (e.g. detention).","write_action":false,"price_micros":0,"input_schema":null},{"name":"announcements","description":"Somtoday-wide announcements (landelijke mededelingen) from the platform itself, such as maintenance notices, with their publication window. Not school news (use news) or personal messages (use messages).","write_action":false,"price_micros":0,"input_schema":null},{"name":"assignment_detail","description":"One hand-in assignment as the parent portal shows it: instruction text, learning goals, files (fileUrl) and links, hand-in window, status, late flag and group. Submitted files and teacher reactions are only visible to the student in Somtoday, so they are not returned.","write_action":false,"price_micros":0,"input_schema":null},{"name":"assignments","description":"All hand-in assignments with their window, status (AANKOMEND, IN_TE_LEVEREN, IN_AFWACHTING, AKKOORD), teLaat (always a boolean: true only for an open hand-in past its deadline), description, attachments and links. status=open keeps upcoming and to-do ones, and by default hides past-due items where no digital hand-in is expected (inleveringenVerwacht 0, e.g. on paper; count in verborgenZonderInleve","write_action":false,"price_micros":0,"input_schema":null},{"name":"auth_status","description":"Whether a Somtoday session is stored, where (keychain or file), and the outcome of the last token renewal. Never returns tokens. Set check=true to renew the token and call the API once.","write_action":false,"price_micros":0,"input_schema":null},{"name":"children","description":"Linked children with profile (name, student number, class), school data (school, location, mentor(s), year, programme), current placement, and which portal sections the school shows. Use whoami when you only need leerling ids.","write_action":false,"price_micros":0,"input_schema":null},{"name":"consents","description":"Consents (toestemmingen) as set in the portal: each consent item (e.g. use of photos) with the answer recorded in the portal. Read-only; answers cannot be changed here.","write_action":false,"price_micros":0,"input_schema":null},{"name":"download_attachment","description":"Read an attachment (fileUrl from homework, assignments, study material or messages). Only https Somtoday file hosts; max 10 MB; returns extracted text for PDF/text/HTML/CSV/JSON, metadata otherwise.","write_action":false,"price_micros":0,"input_schema":null},{"name":"exam_grades","description":"School-exam dossier (PTA/SE) overview: per subject the SE average, every SE result, tests still to come, and test-type averages. Says so when the child has no exam dossier yet. Use this for exam-year progress and upcoming SE tests; use grades_latest with dossier=examen for only the newest SE results.","write_action":false,"price_micros":0,"input_schema":null},{"name":"grades","description":"Quick grade summary: the newest progress-dossier results (capped at 30) plus the average per subject. Use grades_latest for more or exam (SE) results, grades_overview for a whole school year, subject_grades for one subject in depth, and exam_grades for the PTA/SE dossier.","write_action":false,"price_micros":0,"input_schema":null},{"name":"grades_latest","description":"Newest results first, with subject, column, description, grade, weight, test type, period, date, remarks and resit info. limit defaults to 50 (max 1000, paged). dossier=examen gives school-exam (SE) results. Also the next publication moment when the school uses one. Use this for \"what grades came in recently\"; use grades for a short summary with averages, subject_grades for all columns of one subj","write_action":false,"price_micros":0,"input_schema":null},{"name":"grades_overview","description":"The full grade overview (cijferoverzicht) for a school year: every subject with every result per period, report grades, weights and remarks. Defaults to the current placement; schooljaar like 2025/2026 picks another year. Use this for a whole-year report view or earlier years; use subject_grades for one subject, grades_latest for recent results.","write_action":false,"price_micros":0,"input_schema":null},{"name":"homework","description":"What to do and learn on which day: every studiewijzer item (lesson, day and week items) for a date range, grouped by day, with description, learning goals, time estimate, test type, teacher note, attachments (file links), external links, hand-in window and status, and the done tick. Also lists hand-in deadlines per day. Defaults to today plus 6 days; at most 42 days.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lessons","description":"Timetable for one Amsterdam date, plus whether that date is a holiday. Each lesson has type (ROOSTERTOETS or EXAMEN marks a test in the timetable) and uitgevallen=true when cancelled. Homework and the test topic per lesson are not here: call homework for the same date.","write_action":false,"price_micros":0,"input_schema":null},{"name":"messages","description":"Somtoday messages (berichten), read-only: newest conversations with subject, sender, date, unread flag and a preview; filter with zoek or ongelezen. Pass conversatieId for the full thread (text, sender, recipients, attachments). Never marks anything as read. Use this for personal messages from teachers and the school; school-wide news is in news, Somtoday-wide notices in announcements.","write_action":false,"price_micros":0,"input_schema":null},{"name":"news","description":"News items the school publishes to all parents (nieuwsberichten), newest first, as text, plus the unread count. Use messages for personal conversations and announcements for Somtoday-wide notices from the platform itself.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parent_evening","description":"Parent-evening (ouderavond) details: invitation, time slots and chosen teachers. Without id, finds invitations linked in your messages. Read-only; nothing is booked.","write_action":false,"price_micros":0,"input_schema":null},{"name":"schedule","description":"Timetable for a date range, per day: lessons, tests and other appointments with time, lesson hour, subject, room, teachers, type (e.g. ROOSTERTOETS, EXAMEN, OUDERAVOND), lesson notes, changes and cancellations (wijziging, uitgevallen=true, meldingen with real warnings only; the routine 'Inschrijving in orde.' notice is dropped), attachments, and holidays. Every day has items (empty array on a free","write_action":false,"price_micros":0,"input_schema":null},{"name":"school_info","description":"School contact data per child and the school's published information pages. Pass paginaId for one page with its topics and documents. Use teachers for staff and children for mentors.","write_action":false,"price_micros":0,"input_schema":null},{"name":"signing_document","description":"Read the document (PDF) of one signing request, as the portal's download button does: pass document.id from signing_requests. Returns extracted text (max 10 MB). The document needs your login, so it is not a fileUrl for download_attachment. Usually available once signed; not for requests still to sign, withdrawn or expired.","write_action":false,"price_micros":0,"input_schema":null},{"name":"signing_requests","description":"Digital signing requests (ondertekenverzoeken) waiting for you or done. Each item has document {tool:'signing_document', id, available}: pass id to signing_document to read the (signed) PDF. Read-only; nothing is signed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"study_material","description":"Studiemateriaal per subject: lesson material from the study planner (by date), year attachments by folder (file links), external links, and methods/publisher links (book fund). Without arguments: the subjects that have material, plus personal learning products when the school allows it. vak = name, abbreviation or uuid; all=true fetches every subject.","write_action":false,"price_micros":0,"input_schema":null},{"name":"subject_grades","description":"Everything for one subject: every result column (tests, assignments, period and report averages, SE averages) with weights and remarks, column definitions (also not-yet-graded ones), and the parts of composite tests. Both progress and exam dossier unless dossier is set. Without vak: the list of subjects. Use this to drill into one subject; use grades_overview for all subjects at once.","write_action":false,"price_micros":0,"input_schema":null},{"name":"teachers","description":"Teachers and other staff you can message in Somtoday, with the subjects they teach your child. Use children for the mentor(s) and school_info for general school contact data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"whoami","description":"Start here: the school label, the numeric leerling ids to pass as leerlingId to other tools, and which parent-portal sections are visible. Use children for full profiles. No tokens.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-24T16:18:03.840Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-24T16:18:03.780Z","components":{"code":{"score":25,"max":25,"notes":["124 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"somtoday-mcp","version":"0.3.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-10-23T08:38:18.665Z","repositoryUrl":"git+https://github.com/barzoj/somtoday-mcp.git","weeklyDownloads":299}],"repo":{"found":true,"owner":"barzoj","repo":"somtoday-mcp","archived":false,"pushedAt":"2026-10-23T08:37:13Z","stars":1,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/1120722?v=4","ownerCreatedAt":"2011-10-11T21:28:07Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/1120722?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":299,"license":"MIT","lastPushAt":"2026-10-23T08:37:13.000Z","score":33}}}},"grade_history":[],"reviews":[]}