# Classmarker — how to use (mcp.ai)

Connect your Classmarker account and use 28 tools for education straight from your AI agent. Connect with your own API key. ClassMarker is a professional, flexible, and easy-to-use online quiz maker for business and education, offering customizable exams, instant grading, and detailed reporting.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_classmarker?ms=1787291460000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `classmarker_create_access_list_item`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/classmarker`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/classmarker/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/classmarker/create/access/list/item` — Tool to add one or more access codes to an access list. Use after obtaining a valid access_list_id to grant exam access.
  - body: { codes: string[], access_list_id: integer }
- `POST https://api.mcp.ai/api/classmarker/create/category` — Tool to create a new question category. Use after confirming the parent category ID.
  - body: { category_name: string, parent_category_id: integer }
- `POST https://api.mcp.ai/api/classmarker/create/group` — Tool to create a new group. Use when you need to organize users into a specific group after planning your user structure.
  - body: { name: string, description?: string }
- `POST https://api.mcp.ai/api/classmarker/create/question` — Tool to create a new question with specified text, type, and category in ClassMarker. Supports multiplechoice, multipleresponse, truefalse, and essay question types.
  - body: { points: integer, options?: object, question: string, category_id: integer, grade_style?: string, question_type: string, random_answers: boolean, correct_options?: string[], correct_feedback?: string, incorrect_feedback?: string }
- `POST https://api.mcp.ai/api/classmarker/create/user` — Tool to create a new user in ClassMarker. Use after gathering user details to provision accounts. Provide user info and optional group assignments. Returns the complete API response.
  - body: { email: string, is_admin?: boolean, password: string, group_ids?: integer[], last_name: string, first_name: string }
- `POST https://api.mcp.ai/api/classmarker/delete/access/list/item` — Removes one or more access codes from a ClassMarker access list. Access lists are used to control exam access by requiring users to provide unique identifiers (e.g., email addresses, employee IDs, stu
  - body: { codes: string[], access_list_id: integer }
- `POST https://api.mcp.ai/api/classmarker/delete/api/key` — Tool to delete an API key by its ID. Use when you need to revoke an API key immediately.
  - body: { api_key_id: integer }
- `POST https://api.mcp.ai/api/classmarker/delete/group` — Tool to delete a group by its ID. Use when you need to remove a group from ClassMarker.
  - body: { group_id: string }
- `POST https://api.mcp.ai/api/classmarker/delete/test/link` — Deletes a specific link assignment from a test/exam in ClassMarker. Links are unique URLs that provide access to tests. This action is idempotent - deleting a non-existent link returns success. Use th
  - body: { link_id: integer, test_id: integer }
- `POST https://api.mcp.ai/api/classmarker/delete/user` — Tool to delete a specific user by ID. Use when you need to remove a user from ClassMarker after verifying the user's identity.
  - body: { user_id: string }
- `POST https://api.mcp.ai/api/classmarker/delete/webhook` — Deletes a webhook listener from your ClassMarker account. This action removes a webhook configuration that was previously set up to receive real-time exam results. The ClassMarker API is idempotent - 
  - body: { webhook_id: string }
- `POST https://api.mcp.ai/api/classmarker/get/group/details` — Retrieve detailed information about a specific group by ID. Returns group name and assigned tests. Note: This fetches all accessible groups and filters for the specified group_id, as ClassMarker API d
  - body: { group_id: integer }
- `POST https://api.mcp.ai/api/classmarker/get/initial/finished/after/timestamp` — Compute the initial finishedAfterTimestamp for paginating ClassMarker test results. Use this action when you need to retrieve recent test results for the first time and don't have a previous 'next_fin
- `POST https://api.mcp.ai/api/classmarker/get/question` — Tool to retrieve a specific question by its ID. Use when you need detailed information of a question after confirming the question_id.
  - body: { question_id: integer }
- `POST https://api.mcp.ai/api/classmarker/get/recent/results/group/exam` — Tool to fetch recent test results for a specific group and exam. Use after determining a UNIX timestamp to retrieve only results finished after that time for the group and exam.
  - body: { limit?: integer, test_id: integer, group_id: integer, finishedAfterTimestamp?: integer }
- `POST https://api.mcp.ai/api/classmarker/get/recent/results/link/exam` — Fetch recent exam results for a specific link and test combination. Use CLASSMARKER_GET_ALL_GROUPS_LINKS_EXAMS first to obtain valid link_id and test_id values. This endpoint returns paginated results
  - body: { limit?: integer, link_id: integer, test_id: integer, finishedAfterTimestamp?: integer }
- `POST https://api.mcp.ai/api/classmarker/get/test/details` — Retrieves detailed information for a specific test (exam) including its name and all assignment contexts. Returns a list of groups and/or links where the test is assigned, with their IDs, names, and U
  - body: { test_id: integer }
- `POST https://api.mcp.ai/api/classmarker/get/user/details` — Tool to retrieve detailed information about a specific user. Use after you have the user's ID and need the full user profile.
  - body: { user_id: integer }
- `POST https://api.mcp.ai/api/classmarker/list/categories` — Retrieves all question categories organized in a hierarchical structure. Returns parent categories with their nested sub-categories. Use this to browse available categories before creating questions o
- `POST https://api.mcp.ai/api/classmarker/list/certificates` — Tool to list all certificates. Use when you need to retrieve all certificates available in the account.
- `POST https://api.mcp.ai/api/classmarker/list/questions` — Retrieve a paginated list of questions from your question bank. Returns up to 200 questions per page. Use the optional 'page' parameter to navigate through multiple pages. Each question includes type,
  - body: { page?: integer }
- `POST https://api.mcp.ai/api/classmarker/list/recent/results/for/groups` — Retrieve recent exam results for all groups in your ClassMarker account. Returns results from the last 2 weeks by default, or from a specified timestamp (must be within 3 months). Use this to fetch us
  - body: { limit?: integer, finishedAfterTimestamp?: integer }
- `POST https://api.mcp.ai/api/classmarker/list/recent/results/for/links` — Retrieves recent test results from ALL links accessible to your API key. Returns results completed after a specified timestamp (defaults to 2 weeks ago). Supports pagination for large result sets (max
  - body: { limit?: integer, finishedAfterTimestamp?: integer }
- `POST https://api.mcp.ai/api/classmarker/list/users` — Tool to list all users. Use when you need to retrieve every user in your account after confirming authentication.
- `POST https://api.mcp.ai/api/classmarker/list/webhooks` — Tool to retrieve all configured webhooks. Use when you need to programmatically list your webhook configurations.
- `POST https://api.mcp.ai/api/classmarker/put/category` — Tool to update an existing sub-category. Use when you need to rename or move a sub-category after confirming its IDs.
  - body: { category_id: integer, category_name: string, parent_category_id: integer }
- `POST https://api.mcp.ai/api/classmarker/put/parent/category` — Tool to update an existing parent category. Use after confirming the parent category ID.
  - body: { verify_only?: boolean, parent_category_id: integer, parent_category_name: string }
- `POST https://api.mcp.ai/api/classmarker/put/question` — Updates an existing question in the ClassMarker question bank. IMPORTANT CONSTRAINTS: - Cannot change the question_type of an existing question (must match original) - random_answers is only valid for
  - body: { points: integer, options?: object, question: string, category_id: integer, grade_style?: string, question_id: integer, verify_only?: boolean, question_type: string, random_answers?: boolean, correct_options?: string[], correct_feedback?: string, incorrect_feedback?: string }

## Example prompts
- "What can I do in Classmarker?"
- "Show me a summary of my Classmarker account"

## More
- Page: https://mcp.ai/classmarker
- Agent spec (llms.txt): https://mcp.ai/classmarker/llms.txt
- Postman collection: https://mcp.ai/classmarker/postman.json
