Repository navigation
Releases: main-team-organisation/agent-kit
Releases · main-team-organisation/agent-kit
Release list
v2.2.2
Changelog
The agent kit carries the Main Team MCP server’s version. Every release is a GitHub release of
this repository; the server itself is described at https://hub.main-team.org/api/mcp.
2.2.2 - 2026-10-10
No tool changes in this release. The server's tools, their arguments and their answers are those of
2.2.1; what changes is the agent kit. The kit published until now is 1.0.0, so this section says first what is
different for somebody upgrading from it, and then what 2.2.2 itself corrects.
Since kit 1.0.0, in short
- New in the server. A copy of a certificate or of a result as a PDF file, made for use with an AI app and
not the official document (get_certificate_copy,get_result_copy); a teacher's or a partner's whole
student list in one call (export_student_list); online group challenges for students and teachers,
seventeen tools; and a teacher registering new students, with their exams, on up to five olympiads at once
(get_student_registration_template,find_exams_for_grade,register_students). - Four changes break code written against 1.0.0 (2.0.0): a certificate is named by an opaque
certificatevalue rather thancertificate_id; every exam date is a calendar day (YYYY-MM-DD), not a
timestamp;duration_minutesis how long a sitting lasts, with the start window inwindow_hours; and a
past paper'syearis a number. - Every amount a server tool answers is in the currency's major unit (2.2.1):
price: 20with
currency: "EUR"is 20.00 EUR, never cents, withprice_displayoramount_displaybeside it to quote.
Amounts on neo are USD. The REST API is unchanged and answers the stored figure in cents (price: 2000is
20.00);AGENTS.mdandGEMINI.mdnow say which is which. - The consent screen moved from version 1 to version 4, so every connection has been approved again at
least once; an app that is asked to sign in again simply reconnects. - Three new skills, fourteen in all for the server:
taking-part-in-group-challenges-as-a-student,
running-group-challenges-as-a-teacherand, in this release,registering-new-students-as-a-teacher.
The REST API skills beside them come from that API's release 1.2.0.
Added
- The skill
registering-new-students-as-a-teacher. Registering students who have no account yet now
has a skill of its own, with the registration script, the template and its own evals, taken out of
managing-students-as-a-teacher. Its description says when it applies — new students or accounts from a
class list, an Excel or CSV sheet or the template — and when it does not: entering students already on the
list, adding students to a challenge group, or an integration holding an API key, for which the REST API's
registering-main-team-students-from-spreadsheetsis the skill. - The limits a registration runs into: 2000 new accounts a teacher a day, counted by the UTC day; 30
changes an hour for a connection, where a change's preview and its confirmed call count as two, so one
connection registers at most about 750 students an hour; and 24 hours in which a stopped call can be
resumed, after which a student links themselves to the teacher instead. A batch refused for the daily limit
is the one case where sending fewer rows, rather than waiting, is the answer. - Paying for newly registered students. The registration answer carries exam ids, and a payment link takes
application ids: the kit now reads them from the student list first, then builds links of up to twenty
entries, one on coding. - What a partner cannot do, said in both partner skills, in the routing table and in an eval: a partner
registers no new students, and the students' own teacher does it. - A partner's own payments and certificates, and past papers for teachers and partners, which no skill
explained before:list_my_payments,list_my_certificates,get_my_certificatefor a partner, and
list_study_materialswithget_study_materialfor a teacher and a partner. - The registration and password rules, and "do not loop", in
GEMINI.mdas well asAGENTS.md.
Changed
registration.pyandroster.pyrefuse an Excel or other spreadsheet file, and a CSV that is not UTF-8,
and say how to save the sheet as "CSV UTF-8". The skills say the same.registration.pyno longer reads a date such as 03/04/2013 one way: a date whose day and month could be
swapped is reported until the teacher says which order the whole sheet uses (--dates dmyor
--dates mdy).registration.pychecks names as the platform does — no<,>,@,://or control characters — and
cities and schools for<,>and line breaks, and refuses a row at an example address, so the template's
two example rows cannot be registered by mistake.registration.pyaccepts a grade only when the cell holds one number from 1 to 12 ("Year 7" is 7, "07" is 7):
a cell such as "1/2" or "1-2" was read as grade 12 without a word, and is now reported. It reports a phone
number over 30 characters once rather than twice, and says when the batches need more than one hour's changes
or more than one day's new accounts.- The privacy rules make room for registration: a teacher gives their new students' addresses, dates of birth
and phone numbers for that one tool, the local file the script writes stays on the teacher's machine, and it
is deleted, with the saved answers, once the registration is done. managing-students-as-a-teacheris now about the students already on the list, including exporting it, and
sends anybody without an account to the new skill.registering-new-students-as-a-teachersays to read the
list first when "register my class for a sitting" may mean students who already have accounts, and names both
REST API registration skills as not its business.- Routing: the partner skill's description and the routing table say a partner exports their student list
there; the teacher list skill's description says entering is adding a class for exams; "the math exam" or
"the science exam" on two connected olympiads is asked about, never picked; andconnecting-to-main-team
says that a "partner" in the REST API skills is an organisation holding an API account, not this role. - A batch refused for today's registration limit is answered with a smaller batch: the answer does not say how
many are left, and a refused call costs no change. A row problem is said to name the cell, never its value,
rather than "never repeats what was typed" (exam_not_eligiblecarries the exam id the row named).
Fixed
- The kit sent a new student's handle to
get_students_payment_link, which takes application ids only. already_your_studenthad two different instructions in two places; there is now one: take the row out,
enter the student's exams withadd_exams_for_students, and on the row's other olympiads the student links
themselves — except within 24 hours of a stopped call, when an olympiad after the row's first that is in its
not_registeredis sent again and attaches. A row with every one of its olympiads innot_registeredfailed
on its first, so it is sent again whole, in the same order: sent one olympiad at a time, it would get an
account on the first alone andemail_unavailableon every other.- A partner's unpaid entries were to be reported with money totals that no tool answers; they are counted.
The teacher payments skill no longer promises "what each costs", and says instead where one exam's fee comes
from (find_exams_for_student,find_exams_for_grade).staying-safe-with-main-teamno longer tells the
assistant to say what every payment link costs: a teacher's or a partner's cart link carries no amount, so
the cart shows the total and nobody adds one up. - A partner was described as "a teacher with a wider view"; a partner sees more students but has fewer tools.
- An eval asked for a registration to be made before the details it needed had been given; it now expects
the assistant to ask and register nobody. - The links to the Main Team pages for AI apps went to addresses that no longer exist; the kit now links the
AI connections page and the agent skills page. - The number of tools that cannot be undone (nine, not four) and the hourly change budget were out of date.
AGENTS.mdandGEMINI.mdforbade accepting a teacher's username, whichlink_my_teacherneeds and the
kit sends students to; they now say it is taken from the student once, for that call, and never repeated.