Integration details
Description
Maakrop is a teaching assistant that makes everyday classroom management simpler and more convenient. Teachers can access important information and handle common tasks through conversation in one place, without spending time navigating multiple pages, searching through menus, or gathering information manually. Maakrop can help teachers review teaching schedules, find classes, subjects, and students, check and summarize attendance, review scores, track missing work, and quickly understand what is happening across their classes. It can also assist with tasks such as adding or updating student information, creating assessments, recording scores and attendance, and importing student rosters or teaching schedules. For tasks involving several steps, Maakrop can gather the relevant information, prepare a clear plan, and present the details for review before any changes are saved. This helps reduce mistakes in repetitive administrative work while keeping teachers informed and in control. Whether teachers are preparing for the day, checking absences, following up on missing assignments, reviewing class performance, or organizing classroom information, Maakrop reduces the time spent on administration and searching for data. This gives teachers more time to focus on lessons, planning, and supporting their students.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- K-12 Teaching & Curriculum Tools
- Secondary Subcategories
- None listed
- Brand
- Maakrop
- Access
- Account required
- First tracked
- 2026-09-10
- Tool count
- 49
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT K-12 Teaching & Curriculum Tools
View Category49 tools agents can invoke
Analyze a teacher-provided CSV or Excel roster without writing business data. Supported fields are roster number, prefix, student name, school-assigned student number, and permitted Maakrop custom fields. Unsupported sensitive-identifier columns are ignored, and returned rows never include national-ID values. Use plan_private_roster_file_import to prepare an import after reviewing the analysis.
analyze_roster_file
Commit the exact unexpired private roster operation only after explicit teacher approval. Source-file rows remain on Maakrop servers; this call accepts only the operation ID and is retry-safe.
commit_private_roster_file_import
Prepare exactly one immutable gradebook change for explicit teacher approval. Supports score policy, learning units, assessment-unit links, retake scores, bounded grading formulas, grade overrides, and cutoff replacement. For formulas, use gradingScheme with clear, weighted, average, or raw_sum mode. Read get_teacher_grading_setup first and do not commit automatically.
apply_teacher_gradebook_change
Check whether a web-onboarded teacher account can continue through MCP from period setup to classroom, subjects, students, timetable, attendance, and gradebook. Returns separate readiness flags, non-sensitive counts, blockers, exact next tools, and verified links. This tool never creates or switches workspace or academic term and never changes business data.
get_teacher_first_run_readiness
Read the current registrar submission status and evaluate whether each exact score or attendance unit can be submitted now. Uses the same ownership, school-freeze, year-final, grading-window, empty-roster, next-version, and registrar-lock rules as the actual submission lifecycle. Returns a structured blocked reason, next version, and verified absolute Maakrop links without changing data.
get_school_submission_eligibility
Check whether the web-created workspace and active term are ready for MCP use, including personal period definitions and default leave reasons. This tool is read-only and never creates or switches workspace or term.
get_teacher_setup_status
Commit the exact unexpired add-only timetable import only after explicit teacher approval. New lessons use the academic term's initial coverage (term start, or no lower bound when no start is configured). This call accepts only the operation ID from preview_timetable_import, re-resolves the approved rows, rejects stale conflicts or any School Mode timetable mutation, and is retry-safe.
commit_timetable_import
Apply only the exact unexpired assessment list approved by plan_assessment_publication. Requires the returned operation ID and snapshot hash. The commit revalidates every stored assessment version, owner, label, current visibility, and learner audience; it never re-runs or broadens the original scope query. Learner notifications are sent only after the database transaction commits successfully.
commit_assessment_publication
Submit the exact unexpired registrar batch only after explicit teacher approval. Requires both the operation ID and snapshot hash returned by plan_school_submission. Maakrop revalidates the active school term, target labels, snapshot counts, versions, and locks atomically before committing.
commit_school_submission
Create a private aggregate attendance CSV on Maakrop and return an authenticated application download URL. No file bytes, S3 key, presigned URL, or student identity is returned to the conversation.
export_attendance_insights_csv
Return the machine-readable teacher MCP capability, operation-level apply_teacher_changes behavior, blockers, and boundary inventory. Use it when support, authority, destructive behavior, preview requirements, partial coverage, or web-only boundaries are uncertain; it is not a compulsory preflight for workflows whose supported tool path is already clear. The inventory contains no teacher or student records.
get_mcp_capability_inventory
Read server-authoritative plan limits, current usage, and available features for the active teacher workspace. Use this before proposing resource creation; the server still rechecks limits atomically on commit.
get_account_capabilities
Read one bounded page of the current date-aware roster and score/submission values for one teacher-owned assessment. Follow nextCursor until null. Use this read before preparing score changes; score planning independently validates the full requested mutation set.
get_assessment_scores
Return or show one bounded page of aggregate attendance counts and rates for the connected teacher's active term. Results contain no student names. Hosts that render UI receive the insight cards; do not require the words widget or visual. Continue with nextCursor while truncated is true. Date filters are bounded to at most 366 days; omitted bounds resolve from the active term with a safe rolling fallback.
get_attendance_insights
Use after an apply_teacher_changes timeout or uncertain response to recover the authoritative result for the same approved goal. Do not use this instead of committing after clear approval, do not create a replacement plan while the latest operation remains usable, and do not ask the teacher to reconfirm status recovery.
get_teacher_change_status
Read the latest registrar submission state for score teaching assignments or attendance classrooms in the active school term. Reports version, lock, return reason, and whether a registrar must unlock the unit. This tool never changes submission state.
get_school_submission_status
Return assessment-level score and submission summaries for the connected teacher's active term. Numeric assessments include an average; enum assessments include counts by exact option without inventing numeric meaning.
get_score_insights
Read one explicitly selected student using the connection privacy policy. Custom-field definitions and values are returned only for fields explicitly selected in this MCP connection's privacy settings; unselected and restricted sensitive fields remain hidden.
get_student
Return or show a small, deterministic student-level follow-up list only when the teacher explicitly asks who is absent often, late often, or should be followed up. Hosts that render UI receive up to six student attention rows; do not require the words widget or visual. Student identity follows the connected integration privacy policy. Avatar URLs are presentation metadata only, are never returned to the model, and appear only when full-name and avatar visibility is explicitly authorized.
get_attendance_attention
Read the connected teacher, current workspace or school, and active academic term selected on the Maakrop website. This tool is read-only and never changes workspace or active-term context.
get_teacher_context
Read the three course-evaluation kinds, snapshot topics, progress, ratings, and summary overrides for one teaching assignment in the active personal term. This is personal-workspace only; school contexts fail closed. Use apply_teacher_changes for create, refresh, rating, override, clear, or delete operations. This tool never edits evaluation templates.
get_term_evaluations
List one bounded page of complete teacher-owned assessment fields in the active term. Pass assessmentId for an exact stable-ID lookup using the same authorization and full assessment shape as the former single-assessment read. Otherwise filter by teaching assignment, classroom, or subject and follow nextCursor until null.
list_assessments
List one bounded page of accessible active-term classrooms. Pass classroomId for an exact stable-ID lookup; exact lookup returns full classroom details including member count and owned teaching assignments using the same authorization as the former single-classroom read. Otherwise use summary for compact lists or details when assignments are needed.
list_classrooms
List students who have not submitted assignments owned by the connected teacher. Returns student names only because the request explicitly requires student-level follow-up; supports exact classroom, subject, or assessment filters and is capped at 200 rows.
list_missing_work
List pending goal plans. Returned snapshotHash values are semantic fingerprints for the approved outcomes and limits, not internal execution-order hashes.
list_pending_teacher_changes
List student custom fields that this exact MCP connection is allowed to read. Only fields explicitly selected in Maakrop connection privacy settings are returned; an empty list can mean no fields are selected even when custom fields exist in Maakrop. Restricted sensitive fields are never returned.
list_student_custom_fields
List one bounded page of privacy-projected student identity for an accessible active-term roster. Custom-field definitions and values are returned only for fields explicitly selected in this MCP connection's privacy settings; unselected and restricted sensitive fields remain hidden.
list_students
List one bounded page of subjects available to the connected teacher. Pass subjectId for an exact stable-ID lookup; exact lookup returns the full editable subject fields and uses the same authorization as the former single-subject read. Otherwise follow nextCursor until null and use projection details only when editable metadata is needed.
list_subjects
Return the exact IDs and labels available to the connected teacher in the active term, including school physical rooms and active personal-workspace leave reasons. Use this before chained reads or changes instead of guessing IDs.
list_teacher_catalog
List one bounded page of the connected teacher's active-term teaching assignments. Filter by classroom or subject and follow nextCursor until null.
list_teaching_assignments
List or show the connected teacher's authorized teaching schedule for an exact date in Asia/Bangkok, including requests about what they teach today, viewing the timetable, or summarizing the timetable. Optionally filter by the teacher-visible period number. Hosts that render UI receive a visual timeline; do not require the words widget or visual. Read teacher context first. Workspace and active-term selection are managed only in the Maakrop website. Use render_schedule_range for two to seven days.
list_schedule
Parse a teacher-provided CSV or Excel roster on Maakrop and create one short-lived server-side approval operation. Supported fields are limited to the roster fields declared by this tool schema; unsupported sensitive-identifier columns are ignored. Use an exact classroom UUID returned by Maakrop tools. This tool does not commit the import.
plan_private_roster_file_import
Validate rows extracted by the MCP host from a teacher-provided timetable image or PDF. Use displayPeriodNo as the canonical teacher-visible period number; periodNo remains a deprecated compatibility alias and conflicting values are rejected. The import is add-only: newly added lessons cover the academic term from its configured start date, or have no lower date bound when the term has no start date. The tool resolves exact internal periods, subjects, classrooms, assignments, conflicts, and missing setup without writing timetable slots. Show the exact result and wait for explicit approval before commit_timetable_import.
preview_timetable_import
Resolve an exact active-term list of assessments to publish or hide from learners. Scope may be explicit assessment IDs, one teaching assignment, one subject, or the entire active term. The plan stores the exact assessment IDs, versions, labels, current visibility, and learner-audience fingerprint. Later commit never expands the scope again. Review the exact list and wait for explicit teacher approval before committing.
plan_assessment_publication
Apply teacher changes. Treat one teacher request as one complete in-scope goal spanning one or many domains, files, and rows, and carry it out with this tool. Three ways to call it. For everyday create and update work, pass operations directly and skip previewing entirely — no separate approval round trip is needed from you. The same operation union also exposes repair and removal capabilities: use enrollments.end_many to remove a learner from a room while preserving history; use students.delete_many only for permanent deletion in a personal workspace; use student_fields.delete_many only after changing an active custom-field display key; use attendance_sessions.delete_many to remove an unsubmitted teacher-owned session together with its records and reward reversals; use classrooms.delete_many only for unused custom personal rooms, classrooms.remove_term_projection_many for cohort-backed rooms that should disappear only from the active term, subjects.delete_many only for unused personal subjects, and assessments.delete_many only under the same submission/finalization/OMR/history policy as the website; and use timetable_slots.delete_many or timetable_slots.clear_scope instead of creating replacement rows on top of incorrect slots. Timetable and attendance mutation period numbers are teacher-visible display numbers from displayPeriodNo, never internalPeriodNo. An upsert at a different day or period does not delete the old slot, so a repair that changes position must include the exact delete and replacement in one approved goal. Pass mode preview when the request is large, spans many files or rows, looks error-prone, or includes a change that is hard to undo — publishing scores, submitting to the registrar, ending or moving enrollments, permanently deleting students, student fields, classrooms, subjects, assessments, cohort-backed term projections, or attendance sessions, or clearing or deleting timetable slots, all of which the direct path refuses without an approved preview; the returned goal carries outcomes, maximum limits, a dependency graph, candidate reference allocations, and a semantic snapshotHash insensitive to safe reordering. For a preview the teacher has already approved, pass that plan's exact operationId and semantic snapshotHash instead, and do not preview or render it again first; a short, unambiguous affirmative reply directly to the unchanged latest plan—such as ok, okay, yes, confirm, approve, โอเค, ตกลง, ยืนยัน, ได้, ทำเลย—is the single approval boundary, so apply it immediately and do not ask for another confirmation. Before calling, freely use read-only context, resolver, catalog, schedule, help, and file-normalization tools; never ask for Maakrop UUIDs. Repeating an identical request within a short window returns the original result rather than writing twice, so retrying after a lost or uncertain response is safe. Results are usually per item: a row that fails comes back with its reason and, when the teacher must choose, the candidate labels, while the remaining rows still complete — retry only what failed. Some batches commit as a single transaction instead, and a failure there discards the whole batch; the error result states whether anything was saved, so read it rather than assuming either shape. When a request exceeds a per-call limit, split it and call the tool repeatedly rather than asking the teacher to approve each part. Do not split a mixed-domain goal into separate previews merely because dependencies, tools, or files differ. A blanket advance authorization made before the exact outcome plan does not approve unseen future changes. Continue through safe dependency ordering, unambiguous reuse, bounded transient retries, status recovery, and final verification on your own. Return to the teacher only for material scope or impact expansion, genuine ambiguity, a new destructive effect, a permission/policy/lock boundary, or unrecoverable failure. Model-visible operation map: teacher_changes.revert[revert;teacher_owned;preview], period_definitions.seed_default[create;personal;direct], period_definitions.replace_many[update;personal;direct], student_fields.create_many[create;personal;direct], student_fields.update_many[update;personal;direct], student_display_key.set[update;personal;direct], student_fields.delete_many[delete;personal;preview], subjects.create_many[create;personal;direct], subjects.update_many[update;personal;direct], subjects.delete_many[delete;personal;preview], classrooms.create_many[create;personal;direct], classrooms.update_many[update;personal;direct], classrooms.delete_many[delete;personal;preview], classrooms.remove_term_projection_many[delete;personal;preview], students.create_many[create;personal;direct], students.update_many[update;personal;direct], students.delete_many[delete;personal;preview], enrollments.renumber_many[update;personal;direct], enrollments.end_many[end;personal;preview], enrollments.move_many[move;personal;preview], teaching_assignments.ensure_many[upsert;personal;direct], timetable_slots.delete_many[delete;teacher_owned;preview], timetable_slots.clear_scope[clear;teacher_owned;preview], timetable_slots.upsert_many[upsert;teacher_owned;direct], assessments.create_many[create;teacher_owned;direct], assessments.update_many[update;teacher_owned;direct], assessments.delete_many[delete;teacher_owned;preview], scores.upsert_many[upsert;teacher_owned;direct], assessments.publish_many[publish;teacher_owned;preview], attendance_sessions.reopen_many[reopen;teacher_owned;direct], attendance.upsert_many[upsert;teacher_owned;direct], attendance_sessions.close_many[update;teacher_owned;direct], attendance_sessions.submit_many[submit;teacher_owned;preview], course_evaluations.ensure_many[create;personal;direct], course_evaluations.delete_many[delete;personal;preview], evaluation_ratings.upsert_many[upsert;personal;direct], evaluation_ratings.clear_many[clear;personal;preview], evaluation_summary_overrides.upsert_many[upsert;personal;direct], attendance_sessions.delete_many[delete;teacher_owned;preview]. Call get_mcp_capability_inventory when you need detailed behavior and blocker semantics for an operation. When creating classrooms together with their rosters, include classrooms.create_many and students.create_many in the same operations array, and set each student group's classroom.ref to the new classroom clientRef; do not create the classrooms first merely to obtain UUIDs when the complete request is within the declared limits.
apply_teacher_changes
Prepare an exact score and/or attendance submission batch for the active school term. Maakrop builds the same frozen registrar snapshots used by the web app, validates ownership and submission windows, allocates the next versions inside a rollback-only preview, and returns an operation ID plus snapshot hash. Do not commit until the teacher explicitly approves the summary.
plan_school_submission
Read up to 50 owned attendance sessions in the active term. Returns open/closed/submitted state, record counts, teacher-visible and internal period numbers, school freeze state, registrar submission lock, allowed lifecycle actions, the required next action, and verified session links. This tool never changes attendance or submission data.
get_attendance_session_status
Read assessments, learning-unit links, local incomplete and attendance-failure policy, grade bands and cutoffs, grading formula, finalization state, submission state, and current editability for one teacher-owned gradebook. Previous-term assessments in annual mode are returned as read-only, matching the web grid. Use this before preparing any gradebook mutation.
get_teacher_grading_setup
Read one bounded page of authoritative net/total scores and grade sources for a teacher-owned teaching assignment. Continue with nextCursor while truncated is true. This follows the web gradebook's formula, cutoff, retake, override, local incomplete and attendance-failure status codes, year-scope, finalization, and edit-lock behavior. In annual grading mode, first-term grades remain hidden and sibling-term assessments are merged only in the final term. Attendance read permission is required because an attendance-failure status can depend on attendance records.
get_teacher_gradebook
Resolve an exact subject-period or authorized homeroom into class-level attendance targets when the intended target is ambiguous or combined. Expands one combined-group match to every authorized class in that group and returns roster counts plus existing session status without student names. This tool is read-only; use apply_teacher_changes with attendance.upsert_many for the actual attendance write.
resolve_attendance_target
Resolve human-readable classroom, subject, student, teaching-assignment, assessment, period, physical-room, or student-custom-field references. Each item requires clientRef, kind, and text. The hints object is optional and should contain only details relevant to resolving an ambiguous reference.
resolve_teacher_references
Search or read Maakrop's public Thai and English usage guides. Use query for troubleshooting and how-to questions, or slug to read one exact guide. Returns public documentation only and never reads teacher, school, or student data.
search_help_articles
Set or reset period times for the active personal academic term only. Inputs use teacher-visible displayNo. Pass mode preview with the changes to resolve and pin each exact internal period number, validate duplicate or ambiguous visible numbers and effective schedule overlaps, and wait for explicit approval; then call again with the returned operationId and snapshotHash, which applies only those exact internal period numbers without re-resolving display numbers. The base period template is never modified.
apply_term_period_overrides
Use this only for a concise cross-domain teaching overview or dashboard that combines at least two of schedule, attendance, missing work, and scores. For a broad cross-domain glance, pass all four modules: attendance_summary, next_schedule, missing_work_summary, and score_summary. Do not use this compact overview for a single-domain request. For all, complete, detailed, or comprehensive requests, skip this tool and use the matching detailed domain render tools. Never call this tool after a detailed render tool in the same answer because it can collapse the presentation to compact cards. Do not require the words widget or visual.
render_teacher_overview
Use this when the teacher asks to see, review, or summarize a schedule across two to seven related dates, or when multiple days are easier to scan visually. Do not require the words widget or visual. Use render_schedule for exactly one date.
render_schedule_range
Use this when the teacher asks for a score summary, overview, distribution, comparison, completeness review, or trend in any supported language, or when several assessments are easier to scan visually. Render up to four related assessment cards. Do not require the words widget or visual.
render_score_insights
Render the unchanged latest ready goal plan without creating a replacement operation, and only for a single-domain plan that reported visualPreview.eligible=true — never for multi-domain, multi-step, blocked, expired, or oversized plans. Pass its semantic snapshotHash; Maakrop resolves the internal executor snapshot automatically. Preserve its operationId, snapshotHash, outcome limits, dependency graph, and authorization envelope. A short, unambiguous affirmative reply directly after this preview—such as ok, okay, yes, confirm, approve, โอเค, ตกลง, ยืนยัน, ได้, ทำเลย—is the single approval boundary: call apply_teacher_changes immediately. Do not ask again, rerender, or replan unless the requested outcomes or material limits changed, or the operation expired or became unusable. Confirmation still occurs in the conversation, not in the rendered preview.
render_teacher_change_preview
Change semester, academic year, start date, or end date for the active personal academic term. Pass mode preview with the patch to validate it and pin the exact current term version without changing anything, then call again with the returned operationId and snapshotHash after explicit approval. This tool cannot create, delete, activate, or switch terms and cannot edit school-managed terms.
apply_active_term_metadata
Use this for explicit audit or recovery after an uncertain semantic result, and for gradebook operations that still need manual verification. A successful apply_teacher_changes call already performs authoritative post-commit verification and compensation in the same call, so do not call this by default after a successful generic apply. Returns privacy-safe semantic checks plus structured mismatch codes and bounded repair suggestions without exposing records outside the approved verification contract.
verify_teacher_change
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Maakrop alternatives on ChatGPT?
As of 2026-09-10, Maakrop competes with AnyLessonPlan for Teachers, Brisk Teaching, Cody Reading, Emona, Khan Academy, Learning Commons, MetaMetrics® Lexile Analyzer, monPIF, Pencil Spaces, StudyMe.ai, Talents Kids, ZZAIM in ChatGPT K-12 Teaching & Curriculum Tools, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.