# Fiveable for AP Teachers (remote · fiveable.me)

AP rubric grading, assignment drafts, question-bank materials, and class insights for teachers.

- Trust score: 70/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `fiveable.me`: 70/100 (this document), [markdown](https://verifymcp.io/servers/thinkfiveable-fiveable-ap-teachers/api-mcp-teacher.md), [page](https://verifymcp.io/servers/thinkfiveable-fiveable-ap-teachers/api-mcp-teacher)

## Channel facts

- Endpoint: `https://fiveable.me/api/mcp/teacher`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (update_class).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 84/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 10068 tokens (~130/item across 77 items; 77 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 90/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 66% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 78 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Fiveable for AP Teachers MCP server?

Fiveable for AP Teachers is a hosted endpoint at https://fiveable.me/api/mcp/teacher, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http thinkfiveable-fiveable-ap-teachers 'https://fiveable.me/api/mcp/teacher'
```

### Cursor

```json
{
  "mcpServers": {
    "thinkfiveable-fiveable-ap-teachers": {
      "url": "https://fiveable.me/api/mcp/teacher"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "thinkfiveable-fiveable-ap-teachers": {
      "type": "http",
      "url": "https://fiveable.me/api/mcp/teacher"
    }
  }
}
```

### Codex

```toml
[mcp_servers.thinkfiveable-fiveable-ap-teachers]
url = "https://fiveable.me/api/mcp/teacher"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "thinkfiveable-fiveable-ap-teachers": {
      "type": "remote",
      "url": "https://fiveable.me/api/mcp/teacher",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add thinkfiveable-fiveable-ap-teachers --url 'https://fiveable.me/api/mcp/teacher' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  thinkfiveable-fiveable-ap-teachers:
    url: "https://fiveable.me/api/mcp/teacher"
```

### Netclaw

```json
{
  "McpServers": {
    "thinkfiveable-fiveable-ap-teachers": {
      "Transport": "http",
      "Url": "https://fiveable.me/api/mcp/teacher"
    }
  }
}
```

### Vellum

```bash
assistant mcp add thinkfiveable-fiveable-ap-teachers -t streamable-http -u 'https://fiveable.me/api/mcp/teacher'
```

### Other

```json
{
  "mcpServers": {
    "thinkfiveable-fiveable-ap-teachers": {
      "type": "http",
      "url": "https://fiveable.me/api/mcp/teacher"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-03 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-02 (score 69, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “add_students” rewrote its description, which is the text the model reads
- [security] Tool “approve_essays” rewrote its description, which is the text the model reads
- [security] Tool “confirm_correct_answer_key” rewrote its description, which is the text the model reads
- [security] Tool “confirm_publish_assignment” rewrote its description, which is the text the model reads
- [security] Tool “confirm_push_grades_to_google_classroom” rewrote its description, which is the text the model reads
- [security] Tool “confirm_release_results” rewrote its description, which is the text the model reads
- [security] Tool “confirm_update_publication” rewrote its description, which is the text the model reads
- [security] Tool “create_assignment_draft” rewrote its description, which is the text the model reads
- [security] Tool “create_classes” rewrote its description, which is the text the model reads
- [security] Tool “create_grading_session” rewrote its description, which is the text the model reads
- [security] Tool “duplicate_assignment” rewrote its description, which is the text the model reads
- [security] Tool “get_assignment” rewrote its description, which is the text the model reads
- [security] Tool “get_assignment_question_breakdown” rewrote its description, which is the text the model reads
- [security] Tool “get_cheatsheet” rewrote its description, which is the text the model reads
- [security] Tool “get_content_sections” rewrote its description, which is the text the model reads
- [security] Tool “get_grading_progress” rewrote its description, which is the text the model reads
- [security] Tool “get_grading_rubric” rewrote its description, which is the text the model reads
- [security] Tool “get_guide_reading_questions” rewrote its description, which is the text the model reads
- [security] Tool “get_my_teacher_workspace” rewrote its description, which is the text the model reads
- [security] Tool “get_questions_for_materials” rewrote its description, which is the text the model reads
- [security] Tool “get_reteach_gaps” rewrote its description, which is the text the model reads
- [security] Tool “get_student_insights” rewrote its description, which is the text the model reads
- [security] Tool “get_submission” rewrote its description, which is the text the model reads
- [security] Tool “import_essays_from_files” rewrote its description, which is the text the model reads
- [security] Tool “import_essays_from_google_classroom” rewrote its description, which is the text the model reads
- [security] Tool “import_essays_from_text” rewrote its description, which is the text the model reads
- [security] Tool “link_grading_to_class” rewrote its description, which is the text the model reads
- [security] Tool “list_classes” rewrote its description, which is the text the model reads
- [security] Tool “list_coursework” rewrote its description, which is the text the model reads
- [security] Tool “list_submissions_to_review” rewrote its description, which is the text the model reads
- [security] Tool “list_teaching_resources” rewrote its description, which is the text the model reads
- [security] Tool “override_essay_score” rewrote its description, which is the text the model reads
- [security] Tool “override_submission_part” rewrote its description, which is the text the model reads
- [security] Tool “prepare_correct_answer_key” rewrote its description, which is the text the model reads
- [security] Tool “prepare_publish_assignment” rewrote its description, which is the text the model reads
- [security] Tool “prepare_push_grades_to_google_classroom” rewrote its description, which is the text the model reads
- [security] Tool “prepare_release_results” rewrote its description, which is the text the model reads
- [security] Tool “prepare_update_publication” rewrote its description, which is the text the model reads
- [security] Tool “preview_question” rewrote its description, which is the text the model reads
- [security] Tool “remove_students” rewrote its description, which is the text the model reads
- [security] Tool “report_content_issue” rewrote its description, which is the text the model reads
- [security] Tool “rescore_essay” rewrote its description, which is the text the model reads
- [security] Tool “restore_assignment_draft” rewrote its description, which is the text the model reads
- [security] Tool “restore_students” rewrote its description, which is the text the model reads
- [security] Tool “save_submission_feedback” rewrote its description, which is the text the model reads
- [security] Tool “score_submission” rewrote its description, which is the text the model reads
- [security] Tool “search_question_bank” rewrote its description, which is the text the model reads
- [security] Tool “start_grading” rewrote its description, which is the text the model reads
- [security] Tool “update_assignment_draft” rewrote its description, which is the text the model reads
- [security] Tool “update_class” rewrote its description, which is the text the model reads
- [security] Tool “update_grading_rubric” rewrote its description, which is the text the model reads
- [functional improvement] Stability: unverified → 0.03
- [cosmetic] “get_guide_reading_questions” reworded the description of “guideId”

### 2026-10-01 (score 69)

First indexed and scored.

## MCP tools (77)

### `get_my_teacher_workspace` (~42 tokens)

Get my teacher workspace

Orientation for the signed-in teacher's Fiveable workspace: classes, coursework awaiting review or due this week, included assignments remaining, and configured Google connections. Cheap.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_classes` (~57 tokens)

List my classes

Lists the signed-in teacher's classes with subject, student count and class id. Class names such as 'period 3' can be resolved to their ids. Cheap.

Input parameters:

- `includeArchived` (boolean, required): List archived classes instead of active ones.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_class` (~76 tokens)

Get class

One class in the teacher's workspace: subject, roster (students by handle and short name), the class's assignment defaults, and the student links of assignments currently open to it. Students join a class by opening one of those links; there are no class codes. Cheap.

Input parameters:

- `classId` (string, required): Class id from list_classes.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_coursework` (~136 tokens)

List coursework

Lists the teacher's assignments and grading sessions from their workspace ledger: status, class, due date, roster-based turn-in counts, review counts and class average. The active status filter selects work currently open to students. Optional filters cover class, subject and status. Cheap.

Input parameters:

- `classId` (string): Class id from list_classes.
- `cursor` (string): Cursor from a previous page.
- `limit` (integer, required)
- `status` (string, required): Ledger status filter. needs_review shows work waiting for the teacher.
- `subjectSlug` (string): Limit to one subject, e.g. ap-bio or apush.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_assignment` (~47 tokens)

Get assignment

Returns one assignment's sections, question counts, scoring and timing settings, published classes, due dates and student links. Cheap.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_assignment_status` (~79 tokens)

Get assignment status

Where each student is on one assignment: in progress, submitted, scored, or waiting for review, with their score when results are available. Students appear by handle and short name. Use it for 'who hasn't finished?' or 'how did period 5 do?'. Cheap.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_class_insights` (~154 tokens)

Get class insights

How a class (or all the teacher's classes) is doing on Fiveable assignments: accuracy and FRQ points with change over time, each assignment's turn-in rate and average, and each student's average with flags (missing work, dropping, improving), weakest first. Scope by class, subject, assignment or time window. Moderate cost.

Input parameters:

- `assignmentId` (string): Limit to one assignment (id from list_coursework).
- `classId` (string): Limit to one class (id from list_classes).
- `days` (integer, required): Look back this many days. 0 means this school year.
- `subjectSlug` (string): Limit to one subject, e.g. apush or ap-bio.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_student_insights` (~157 tokens)

Get student insights

Returns one student's Fiveable work: average, missing work, assignment scores, weakest units and topics, and skill progress. Accepts an anonymous student handle (S-…). Suitable for conference preparation, parent notes and individual reteaching. Moderate cost.

Input parameters:

- `assignmentId` (string): Limit to one assignment (id from list_coursework).
- `classId` (string): Limit to one class (id from list_classes).
- `days` (integer, required): Look back this many days. 0 means this school year.
- `handle` (string, required): The student's handle, e.g. S-4f2a1c.
- `subjectSlug` (string): Limit to one subject, e.g. apush or ap-bio.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_reteach_gaps` (~128 tokens)

Get reteach gaps

Ranks topics, units, CED skills and FRQ rubric rows where a class lost the most points on Fiveable assignments. Optional filters cover class, subject, assignment and time window. Moderate cost.

Input parameters:

- `assignmentId` (string): Limit to one assignment (id from list_coursework).
- `classId` (string): Limit to one class (id from list_classes).
- `days` (integer, required): Look back this many days. 0 means this school year.
- `subjectSlug` (string): Limit to one subject, e.g. apush or ap-bio.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_skill_insights` (~153 tokens)

Get skill insights

Class progress on AP course skills (for example causation or contextualization): each skill's verdict (solid, improving, stuck, developing, building), average, trend, the students who need support most, and the units to revisit. Says so when evidence is limited instead of guessing. Works best scoped to one subject. Moderate cost.

Input parameters:

- `assignmentId` (string): Limit to one assignment (id from list_coursework).
- `classId` (string): Limit to one class (id from list_classes).
- `days` (integer, required): Look back this many days. 0 means this school year.
- `subjectSlug` (string): Limit to one subject, e.g. apush or ap-bio.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_assignment_question_breakdown` (~74 tokens)

Get assignment question breakdown

Per-question results for one assignment: percent correct and how many students picked each answer choice (identifying which distractors drew responses), plus FRQ part-by-part full-credit rates. Use it for 'which questions went worst?'. Moderate cost.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `search_question_bank` (~292 tokens)

Search question bank

Searches Fiveable's question bank for one subject (the same bank as the assignment builder): multiple choice, stimulus sets, SAQs and FRQs, filtered by unit, topic, skill, format and stimulus, optionally hiding questions this teacher already published. For AP Calculus, courseVariant scopes AB to exclude BC-only units, topics and FRQs. Returns ids, short stems and alignment, never answers. Filters accept exact unit/topic/skill labels from the filter lists in the result. Cheap.

Input parameters:

- `courseVariant` (string): AP Calculus only: ap-calc-ab or ap-calc-bc, the course of the class or draft you are building for.
- `excludeAssigned` (boolean, required): Hide questions this teacher already published.
- `format` (string)
- `limit` (integer, required)
- `offset` (integer, required)
- `query` (string): Words to match in the question.
- `skill` (string): Exact skill label from filters.skills.
- `stimulus` (string)
- `subjectSlug` (string, required): Subject, e.g. ap-bio or apush.
- `topic` (string): Exact topic label from filters.topics.
- `type` (string): mcq = single question, question-set = stimulus set, saq, or frq (LEQ, DBQ and other FRQs).
- `unit` (string): Exact unit label from filters.units.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `preview_question` (~81 tokens)

Preview question

Returns one bank question with its stimulus, choices, marked correct answer and explanation. Stimulus sets include all linked questions and keys. Answer keys are teacher-only material. Cheap.

Input parameters:

- `questionId` (string, required): Question id from search_question_bank, e.g. mcq:64f… or stimulus-set:64f….
- `subjectSlug` (string, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_questions_for_materials` (~97 tokens)

Get questions for materials

Returns up to 40 bank questions with answer keys, explanations, complete stimuli and Fiveable attribution for classroom materials. Stimuli are required context for their questions; answer keys are teacher-only material. Counts against the content budget.

Input parameters:

- `purpose` (string): What the teacher is making. Used only to improve Fiveable; changes nothing in the result.
- `questionIds` (array, required)
- `subjectSlug` (string, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_guide_reading_questions` (~80 tokens)

Get guide reading questions

Returns reading-check questions and keys for one Fiveable guide: the curated set when available, otherwise generated questions (slower). Accepts a guide id. Suitable for exit tickets, reading quizzes and guided reading handouts.

Input parameters:

- `guideId` (string, required): Study guide document id, or study-guide: resource id from list_teaching_resources.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_guided_notes` (~89 tokens)

Get guided notes

AMSCO textbook guided-notes prompts with answer keys for one chapter, for subjects that have AMSCO notes (for example AP US History). Without a chapter it lists the chapters. Use for guided notes handouts and reading checks. Cheap.

Input parameters:

- `chapterSlug` (string): Chapter slug from the chapter list, e.g. chapter-1-1.
- `subjectSlug` (string, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_subjects` (~121 tokens)

List AP subjects

Lists every AP subject Fiveable covers, with its canonical subject slug and flags for which features exist for that subject (practice questions, key terms, score calculator). Suitable when a subject slug is not already known. Cheap — roughly 1-2k tokens.

Input parameters:

- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `search` (string): Optional case-insensitive filter on subject name, e.g. "bio" or "history".

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_subject_outline` (~142 tokens)

Get subject outline

Returns the full unit and topic outline for one AP subject, including every study guide slug in each unit. Provides the course map for study planning and individual guide retrieval. Moderate cost — roughly 2-5k tokens depending on subject size.

Input parameters:

- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio" or "apush". The course name or a close approximation such as "ap-biology" also resolves. Use list_subjects to find it.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_study_guide` (~223 tokens)

Get a study guide

Returns the full text of one Fiveable AP study guide as Markdown. Accepts the exact canonical guide reference or a close approximation of its title. Suitable when a student asks to learn or review a topic. It consumes one full-content preview for a free caller unless existing access covers this subject and feature. Expensive — a full guide can be 3-8k tokens.

Input parameters:

- `guideSlug` (string, required): Canonical guide reference from get_subject_outline, content slug, document id, or title, e.g. "/ap-bio/unit-2/cell-structure/study-guide/abc123" or "cell-structure".
- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio" or "apush". The course name or a close approximation such as "ap-biology" also resolves. Use list_subjects to find it.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_unit_overview` (~168 tokens)

Get unit overview

Returns the overview page for one unit of an AP course: what it covers, how it is weighted on the exam, its topics and study plan. Suitable when a student is reviewing a whole unit. Moderate cost — roughly 1-3k tokens.

Input parameters:

- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio" or "apush". The course name or a close approximation such as "ap-biology" also resolves. Use list_subjects to find it.
- `unitSlug` (string, required): Unit slug from get_subject_outline, e.g. "unit-1".

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_key_terms` (~180 tokens)

List key terms

Lists the key vocabulary terms for an AP subject, paginated alphabetically. Suitable for building flashcards or checking what vocabulary a student should know; results include stable term slugs for full definitions. Cheap.

Input parameters:

- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `letter` (string, required): Filter to terms starting with one letter, or "ALL" for every term.
- `limit` (integer, required): Terms per page.
- `page` (integer, required): 1-indexed page number.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio" or "apush". The course name or a close approximation such as "ap-biology" also resolves. Use list_subjects to find it.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_key_term` (~155 tokens)

Get a key term

Returns the full definition, context and related terms for one AP key term. Use when a student asks "what does X mean" for AP vocabulary. Cheap — usually under 1k tokens.

Input parameters:

- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio" or "apush". The course name or a close approximation such as "ap-biology" also resolves. Use list_subjects to find it.
- `termSlug` (string, required): Key term slug or the term itself, e.g. "natural-selection".

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `search_content` (~133 tokens)

Search Fiveable content

Keyword search across every Fiveable study guide, unit, subject hub and key term. Suitable when the relevant subject or guide is not known. Returns titles and canonical references rather than full content, so it is cheap.

Input parameters:

- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `limit` (integer, required): Maximum results to return.
- `query` (string, required): What to search for, e.g. "photosynthesis light reactions".
- `subjectSlug` (string): Optional: restrict the search to one subject.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_content_sections` (~168 tokens)

Get relevant study guide sections

Returns a small set of Fiveable study-guide passages relevant to one question. Suitable for narrow explanations, research questions and checking student notes. One call consumes one full-content preview for a caller without existing access.

Input parameters:

- `guideSlug` (string): Optional exact guide reference from get_subject_outline or search_content.
- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `maximumSections` (integer, required)
- `maximumTokens` (integer, required)
- `query` (string, required): The concept or question the student needs help with.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio". A course name such as "AP Biology" also resolves.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_frqs` (~275 tokens)

List free-response questions

Lists Fiveable's free-response (FRQ) practice prompts for an AP subject, optionally filtered by FRQ type, unit, and excluded IDs. Results use stable ID order; unchanged filters continue pagination. Returns prompt ids and summaries rather than full prompts. Cheap.

Input parameters:

- `courseVariant` (string): AP Calculus only (subject ap-calc): 'ab' hides BC-only units, topics and FRQs; 'bc' includes them. Pass the course of the class or assignment draft you are building for ('ab' for ap-calc-ab, 'bc' for…
- `cursor` (string)
- `excludeIds` (array)
- `frqType` (string): Optional FRQ type filter, e.g. "DBQ", "LEQ", "SAQ". Varies by subject.
- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.
- `limit` (integer, required): Maximum prompts to list.
- `subjectSlug` (string, required): Fiveable subject slug, e.g. "ap-bio". A course name such as "AP Biology" also resolves.
- `unitId` (string): Unit ID or public unit slug from get_subject_outline.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_frq` (~127 tokens)

Get a free-response question

Returns one full, original Fiveable FRQ prompt: stimulus, background and every lettered part with its point value. The returned prompt is eligible for Fiveable's saved scoring workflow after the student writes a response. It consumes one full-content preview unless existing access covers this FRQ. Moderate cost — 1-4k tokens.

Input parameters:

- `frqId` (string, required): FRQ id from list_frqs.
- `intent` (string): Privacy-safe reason for the request. Use explain, quiz, notes, frq, or research; never send the student's raw prompt for analytics.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_exam_options` (~63 tokens)

Find practice exams and unit tests

Find Fiveable exam formats, access requirements and website links without questions or answer keys. Choose a subject for version choices; add unitNumber to verify that unit's current bank and standard format.

Input parameters:

- `subjectSlug` (string)
- `unitNumber` (integer)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_cheatsheets` (~84 tokens)

List official Fiveable cheatsheets

Find approved Fiveable course and unit PDFs, including course variants, academic year when known, source links and readable-artifact readiness. Does not include user galleries or generated personal visuals.

Input parameters:

- `courseVariant` (string)
- `cursor` (string)
- `limit` (integer, required)
- `subjectSlug` (string)
- `unitNumber` (integer)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_cheatsheet` (~82 tokens)

Read an official Fiveable cheatsheet

Reads bounded pages from a prepared official Fiveable PDF, returning page citations, extracted text and actual page images for formulas and diagrams. Image-only pages have no guessed transcription. Unavailable artifacts return the approved PDF link. This read never starts processing.

Input parameters:

- `cheatsheetId` (string, required)
- `limit` (integer, required)
- `page` (integer, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `report_content_issue` (~156 tokens)

Report a content issue to Fiveable

Submits a caller-requested content issue to Fiveable support, which may lead to support follow-up. Requires explicit confirmReport approval. The description contains the reported issue only, excluding conversation history, unrelated notes and personal information. Fiveable resolves content and reporter identity. Matching requestId retries are idempotent.

Input parameters:

- `confirmReport` (boolean, required): True only after the student explicitly requests sending this issue to Fiveable.
- `contentId` (string, required): Exact guide/question/FRQ ID, or the exact canonical key-term path from Fiveable.
- `contentType` (string, required)
- `description` (string, required): Only the issue the student wants reported; no conversation transcript or unrelated personal notes.
- `requestId` (string, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `create_classes` (~79 tokens)

Create classes

Creates one or more classes in the teacher's workspace. Students join through an assignment's class link or a teacher-managed roster; there are no class codes. Created classes can be archived.

Input parameters:

- `classes` (array, required)
- `requestId` (string, required): A unique id you generate for this action. Reuse it only when retrying the same action.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `update_class` (~94 tokens)

Update class

Renames a class, changes its subject, or sets an AP Calculus class's course (AB or BC). Returns the previous values for reversal through a subsequent class update.

Input parameters:

- `classId` (string, required): Class id from list_classes.
- `courseVariant` (string): AP Calculus only: ap-calc-ab or ap-calc-bc.
- `name` (string)
- `subjectSlug` (string)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `archive_class` (~72 tokens)

Archive or restore class

Archives a class the teacher created (it leaves the class list; nothing is deleted), or restores an archived one with archived: false. Co-taught classes can only be archived by their owner.

Input parameters:

- `archived` (boolean, required): false restores an archived class.
- `classId` (string, required): Class id from list_classes.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `set_class_assignment_defaults` (~85 tokens)

Set class assignment defaults

Sets a class's assignment defaults (scoring mode, timer, attempts, result release, notifications) so new assignments for that class start with them. Replaces the previous defaults and returns them for undo.

Input parameters:

- `classId` (string, required): Class id from list_classes.
- `defaults` (object, required): The class's new defaults; unset fields fall back to Fiveable's.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `add_students` (~72 tokens)

Add students

Adds students to a class roster from individual entries with names in First Last order and optional emails. Existing roster students are matched rather than duplicated. Emails support assignment notifications and are never returned. Roster additions can be removed.

Input parameters:

- `classId` (string, required): Class id from list_classes.
- `students` (array, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `update_student` (~116 tokens)

Update student

Fixes a student's name on a class roster (the old name is kept as an alias so past work still matches), or sets the email used for assignment notifications. Students with Fiveable accounts can be renamed but their email comes from their account.

Input parameters:

- `classId` (string, required): Class id from list_classes.
- `email` (string)
- `handle` (string, required): Student handle from get_class, e.g. S-4f2a1c.
- `name` (string): Full name as the teacher wants it shown.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `remove_students` (~59 tokens)

Remove students

Removes students by handle from a class roster while preserving their past work in the teacher's results. Returns an undoId valid for exact restoration within seven days.

Input parameters:

- `classId` (string, required): Class id from list_classes.
- `handles` (array, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `restore_students` (~38 tokens)

Restore removed students

Restores removed roster students using a valid undoId, preserving their original roster entries.

Input parameters:

- `undoId` (string, required): undoId from remove_students.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `create_assignment_draft` (~251 tokens)

Create assignment draft

Builds an assignment draft from multiple-choice units and topics (skipping already assigned questions), Fiveable FRQ or SAQ ids, readings with optional checks, or a diagnostic. Settings start from the first class's defaults. AP Calculus drafts require courseVariant or target classes sharing one course. Returns the draft id and review link. Drafts never use an included assignment slot.

Input parameters:

- `availableAt` (string): When it opens, ISO with offset.
- `classes` (array): Classes to target, each with an optional due date.
- `courseVariant` (string): AP Calculus only: ap-calc-ab or ap-calc-bc. Omit to use the course the target classes share.
- `dueAt` (string): Default due time for every class.
- `instructions` (string)
- `requestId` (string, required): A unique id you generate for this action. Reuse it only when retrying the same action.
- `resultRelease` (string): When students see results.
- `sections` (array, required)
- `settings` (object)
- `subjectSlug` (string, required): Subject, e.g. apush or ap-bio.
- `title` (string, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `update_assignment_draft` (~214 tokens)

Update assignment draft

Changes a draft's title, instructions, AP Calculus course, classes, dates, settings or sections. Existing section ids identify sections to remove. Published assignments cannot be changed here. Returns an undoId for restoring the previous draft.

Input parameters:

- `addSections` (array)
- `assignmentId` (string, required)
- `availableAt` (string): When it opens, ISO with offset.
- `classes` (array): Replaces the class targets.
- `courseVariant` (string): AP Calculus only: switch the draft to ap-calc-ab or ap-calc-bc. Its multiple choice, free-response and diagnostic sections must be removed in the same call (add new ones there too); readings stay.
- `dueAt` (string): Default due time for every class.
- `instructions` (string)
- `removeSectionIds` (array)
- `resultRelease` (string): When students see results.
- `settings` (object): Merged into the current settings.
- `title` (string)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `restore_assignment_draft` (~43 tokens)

Restore assignment draft

Restores an assignment draft to its previous state using an undoId from a draft update.

Input parameters:

- `undoId` (string, required): undoId from update_assignment_draft.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_teaching_resources` (~106 tokens)

List teaching resources

Lists assignment reading resources for one subject: study guides, unit reviews, AMSCO guided notes, key terms and cheatsheets, with resource ids suitable for reading sections. Optional filters cover kind, unit and words. Cheap.

Input parameters:

- `kind` (string)
- `limit` (integer, required)
- `offset` (integer, required)
- `query` (string)
- `subjectSlug` (string, required)
- `unit` (string): Exact unit label from the result's unit list.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `duplicate_assignment` (~84 tokens)

Duplicate assignment

Copies a teacher-owned assignment, including archived or prior-year work, into a new draft with the same questions and settings. The resulting draft can be retargeted or archived.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.
- `requestId` (string, required): A unique id you generate for this action. Reuse it only when retrying the same action.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `archive_assignment` (~67 tokens)

Archive or restore draft

Archives an unpublished draft (it leaves the coursework list; nothing is deleted) or restores an archived draft with archived: false. Published assignments are archived on the website.

Input parameters:

- `archived` (boolean, required): false restores an archived draft.
- `assignmentId` (string, required): Assignment id from list_coursework.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `preview_assignment_as_student` (~60 tokens)

Preview assignment as a student

What a student will see when they open the assignment: instructions and each section in order. Answers are hidden, as they are for students. Diagnostics can't be previewed. Cheap.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_grading_sessions` (~57 tokens)

List grading sessions

The teacher's grading sessions for work done outside Fiveable (stacks of essays graded in the workspace), newest first, with essay, scored and approved counts. Use to resume a stack. Cheap.

Input parameters:

- `limit` (integer, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `create_grading_session` (~181 tokens)

Create grading session

Creates a workspace grading session for finished student work, including paper, Google Docs or an AP Classroom export. Accepts a Fiveable FRQ or SAQ id, or the teacher's own question in prompt. A session uses an included assignment when grading starts unless the account has unlimited assignments. Returns the new session id.

Input parameters:

- `fiveableQuestionId` (string): frq:… or saq:… from search_question_bank, or frq: plus the FRQ id from get_frq.
- `prompt` (object): The teacher's own question, when not a Fiveable one.
- `requestId` (string, required): A unique id you generate for this action. Reuse it only when retrying the same action.
- `subjectSlug` (string, required): e.g. apush or ap-bio.
- `title` (string)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_grading_rubric` (~84 tokens)

Get grading rubric

Returns the session's Fiveable scoring guidelines point by point on the AP rubric for its question type. If absent, starts rubric generation and returns pending status; generation takes about a minute. Rubrics use the website's grading pipeline. Cheap once written.

Input parameters:

- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `update_grading_rubric` (~95 tokens)

Change grading prompt

Changes a session's Fiveable question or teacher-provided prompt and AP question type before any essay is scored. Regenerates the rubric using that type's AP rubric and point total. Returns the previous prompt for restoration.

Input parameters:

- `fiveableQuestionId` (string)
- `prompt` (object)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `import_essays_from_text` (~105 tokens)

Import essays from text

Adds individual student responses supplied as pasted, downloaded or transcribed text, with each student's name as written. Photo transcriptions require transcribedFromPhotos and explicit teacherConfirmedTranscription approval of the transcription. Returns counts only.

Input parameters:

- `essays` (array, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.
- `teacherConfirmedTranscription` (boolean, required)
- `transcribedFromPhotos` (boolean, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `import_essays_from_files` (~147 tokens)

Import essays from files

Splits teacher-supplied PDFs or Word stacks into one essay per student, including AP Classroom 'FRQ Response PDFs, By Student Page Break' exports. Photos support one essay per image and are read by Fiveable. Accepts up to three ChatGPT attached uploads of 25 MB each, or up to three base64 files totaling about 3 MB. Returns counts and warnings only. Long PDFs can take up to a minute.

Input parameters:

- `files` (array, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.
- `uploads` (array, required): Files the teacher attached in ChatGPT, passed by reference.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_google_classroom_work` (~112 tokens)

List Google Classroom work

Walks the teacher's Google Classroom: with no ids, their courses; with a course id, its assignments; with a course and assignment id, who turned it in, each with a handle (T-…) and a link to the turned-in file. Use it to grade typed work collected in Classroom. Needs the teacher's Google Classroom connection.

Input parameters:

- `courseId` (string): Id from list_google_classroom_work.
- `courseWorkId` (string): Id from list_google_classroom_work.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `import_essays_from_google_classroom` (~134 tokens)

Import essays from Google Classroom

Adds selected Google Classroom turn-in handles to a grading session. Reads authorized Google Docs directly; optional teacher-provided text supports other files or missing Google access. Names come from the Classroom roster. Existing session submissions are skipped. Records the source Classroom assignment for subsequent approved-grade export. Returns counts only.

Input parameters:

- `courseId` (string, required): Id from list_google_classroom_work.
- `courseWorkId` (string, required): Id from list_google_classroom_work.
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.
- `turnIns` (array, required)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `start_grading` (~110 tokens)

Start grading

Starts background AI grading for unscored essays on the session's Fiveable rubric, generating that rubric first if needed. Returns immediately with job status. retryFailed includes previously failed essays. Scores remain drafts until teacher approval.

Input parameters:

- `requestId` (string, required): A unique id you generate for this action. Reuse it only when retrying the same action.
- `retryFailed` (boolean, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_grading_progress` (~58 tokens)

Get grading progress

Returns grading counts (scored, remaining, failed and approved) and background-job status (running, done or stopped). Cheap.

Input parameters:

- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_grading_results` (~118 tokens)

Get grading results

Class results for a grading session: average, score distribution, how the class did on each rubric part, common gaps, and a table of essays (handle, short name, score, status, what to check). Filter to the ones that need review, drafts, approved or failed. Scores marked AI draft aren't approved yet.

Input parameters:

- `filter` (string, required)
- `limit` (integer, required)
- `offset` (integer, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `rescore_essay` (~107 tokens)

Retry a failed essay

Retries background AI grading for one essay whose scoring failed. Existing successful scores cannot be changed by this operation.

Input parameters:

- `essayHandle` (string, required): Essay handle from get_grading_results, e.g. E-3b91c0.
- `requestId` (string, required): A unique id you generate for this action. Reuse it only when retrying the same action.
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_essay_feedback` (~100 tokens)

Get essay feedback

One essay's score and feedback part by part, what the teacher changed, and whether it's approved. Set includeText only when the teacher wants to read the response itself.

Input parameters:

- `essayHandle` (string, required): Essay handle from get_grading_results, e.g. E-3b91c0.
- `includeText` (boolean, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `override_essay_score` (~149 tokens)

Adjust an essay score

Changes the points on one rubric part of a scored essay, with the teacher's reason. The change is logged and the total recalculated, as on the website. Reversal restores the previous part points.

Input parameters:

- `essayHandle` (string, required): Essay handle from get_grading_results, e.g. E-3b91c0.
- `part` (string, required): Rubric part as shown in get_essay_feedback, e.g. "A" or "Thesis".
- `points` (number, required)
- `reason` (string, required)
- `reasonCategory` (string, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `approve_essays` (~111 tokens)

Approve essays

Marks scored essays approved (the teacher stands behind the score), or unapproves them with approve: false. Accepts essay handles, or all: true for every scored essay not yet approved. Only approved essays go to Google Classroom. The same handles with approve: false reverse approval.

Input parameters:

- `all` (boolean, required)
- `approve` (boolean, required)
- `essayHandles` (array)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `link_grading_to_class` (~103 tokens)

Link grading to a class

Links a grading session to a workspace class so results feed class insights. Exact roster-name matches link automatically; explicit essay-handle to student-handle matches resolve remaining essays. Returns unmatched essays. A null classId removes the class link.

Input parameters:

- `classId` (required): Class id from list_classes, or null to unlink.
- `matches` (array, required)
- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `export_grading_results` (~87 tokens)

Export grading results

Creates a Google Sheet of the session's results in the teacher's own Drive (one row per student, scores by part, feedback links) and returns its link. The rows never pass through chat. Needs Google connected with Sheets access; otherwise returns the link to connect it.

Input parameters:

- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `list_submissions_to_review` (~120 tokens)

List work to review

The teacher's review queue, as on the website inbox: submissions whose free responses need a teacher score or a look at the AI score, imported essays awaiting approval, and assignments ready to hand back. Each row includes the identifiers and review operation for its item. Filter by subject or assignment. Cheap.

Input parameters:

- `assignmentId` (string): Assignment id from list_coursework or list_submissions_to_review.
- `cursor` (string)
- `filter` (string, required)
- `limit` (integer, required)
- `subjectSlug` (string)

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `get_submission` (~101 tokens)

Get submission

One student's submission on a Fiveable assignment: each section's AI and teacher scores, the FRQ rubric breakdown, overrides and feedback, and whether the student can see results yet. includeText requires that the teacher wants to read the student's responses.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework or list_submissions_to_review.
- `includeText` (boolean, required)
- `submissionId` (string, required): Submission id from list_submissions_to_review.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `score_submission` (~116 tokens)

Score submission

Sets the teacher's score on sections of one submission (submission item ids), optionally with written feedback. Works in any scoring mode. Says whether the student sees it yet; to undo, set the sections back to the previous scores this returns.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework or list_submissions_to_review.
- `itemFeedback` (array)
- `itemScores` (array, required)
- `overallFeedback` (string)
- `submissionId` (string, required): Submission id from list_submissions_to_review.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `save_submission_feedback` (~99 tokens)

Save submission feedback

Saves teacher-reviewed written feedback on one submission, overall or per section, without changing scores. Students see it once results are released, including immediately if already released. Returns previous text for restoration.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework or list_submissions_to_review.
- `itemFeedback` (array)
- `overallFeedback` (string)
- `submissionId` (string, required): Submission id from list_submissions_to_review.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `override_submission_part` (~127 tokens)

Adjust an FRQ part score

Changes the points on one rubric part of an AI-scored FRQ in a submission, with the teacher's reason, as on the website. The section's score is recalculated. Reversal restores the previous part points.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework or list_submissions_to_review.
- `itemId` (string, required)
- `part` (string, required)
- `points` (number, required)
- `reason` (string, required)
- `reasonCategory` (string, required)
- `submissionId` (string, required): Submission id from list_submissions_to_review.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `prepare_publish_assignment` (~163 tokens)

Preview publishing an assignment

Creates an owner-bound confirmation preview for publishing a draft or republishing with new dates: classes, openings, due dates in the teacher's time zone, result visibility and student-facing changes. Publication remains unchanged. Execution requires approval of this specific preview. With no classes, anyoneWithLink must be true for a public link.

Input parameters:

- `anyoneWithLink` (boolean, required)
- `assignmentId` (string, required): Assignment id from list_coursework.
- `classes` (array, required)
- `dueAt` (string): Due time for the anyone-with-link publish.
- `resultRelease` (string): Defaults to the draft's setting.
- `timeZone` (string, required): The teacher's IANA time zone, e.g. America/Chicago, so the preview shows their local times.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `confirm_publish_assignment` (~69 tokens)

Publish assignment

Publishes exactly the owner-bound preview identified by previewId, subject to explicit teacher approval of that specific preview. Returns each class's student link and a message to post.

Input parameters:

- `previewId` (string, required): The previewId from the matching prepare_ tool, after the teacher said yes to that preview.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `prepare_update_publication` (~102 tokens)

Preview changing a published assignment

Creates an owner-bound confirmation preview for closing or reopening a published assignment, or changing class open/due dates. Links and submissions remain intact. Publication remains unchanged until approved preview execution.

Input parameters:

- `action` (string, required)
- `assignmentId` (string, required)
- `changes` (array, required): For change_dates only.
- `timeZone` (string, required): The teacher's IANA time zone, e.g. America/Chicago, so the preview shows their local times.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `confirm_update_publication` (~57 tokens)

Change a published assignment

Applies the owner-bound publication preview identified by previewId, subject to explicit teacher approval of that specific preview.

Input parameters:

- `previewId` (string, required): The previewId from the matching prepare_ tool, after the teacher said yes to that preview.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `prepare_release_results` (~63 tokens)

Preview handing results back

Creates an owner-bound confirmation preview for releasing assignment scores and feedback to every class, including counts of unscored responses. Release status remains unchanged until approved preview execution. A release cannot be taken back.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `confirm_release_results` (~62 tokens)

Hand results back

Releases results exactly as specified by the owner-bound previewId, subject to explicit teacher approval of that specific preview. Release cannot be reversed.

Input parameters:

- `previewId` (string, required): The previewId from the matching prepare_ tool, after the teacher said yes to that preview.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `prepare_correct_answer_key` (~175 tokens)

Preview correcting an answer key

Creates an owner-bound confirmation preview for correcting a published multiple-choice key, including how many students gain or lose points. Accepts assignment section and question numbers. Keys and scores remain unchanged until approved preview execution.

Input parameters:

- `assignmentId` (string, required): Assignment id from list_coursework.
- `correctAnswers` (array, required): The right answer letters, e.g. ["C"].
- `explanation` (string): Why this answer is right, in the teacher's words; defaults to the current explanation.
- `note` (string): A note for Fiveable with the shared fix.
- `questionNumber` (integer, required): Question number within that section.
- `sectionNumber` (integer, required): 1 for the assignment's first section.
- `shareCorrection` (boolean, required): Also send the fix to Fiveable so the question is corrected for everyone.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `confirm_correct_answer_key` (~71 tokens)

Correct an answer key

Applies the owner-bound answer-key correction preview identified by previewId and rescores affected attempts in the background, subject to explicit teacher approval. Rejects scores changed since the preview.

Input parameters:

- `previewId` (string, required): The previewId from the matching prepare_ tool, after the teacher said yes to that preview.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `prepare_push_grades_to_google_classroom` (~74 tokens)

Preview sending grades to Google Classroom

Creates an owner-bound confirmation preview for exporting approved grading-session scores to the source Google Classroom assignment. Includes included/excluded counts and the point scale. No grades are sent until approved preview execution.

Input parameters:

- `sessionId` (string, required): Grading session id from list_grading_sessions or create_grading_session.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

### `confirm_push_grades_to_google_classroom` (~70 tokens)

Send grades to Google Classroom

Exports exactly the grades in the owner-bound previewId, subject to explicit teacher approval of that preview. Rejects session scores changed since the preview.

Input parameters:

- `previewId` (string, required): The previewId from the matching prepare_ tool, after the teacher said yes to that preview.

Output parameters:

- `status` (string): Operation status: completed, pending, partial, failed, unavailable, or a domain-specific outcome.
- `text` (string): Readable tool result text for clients that consume structured output.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/thinkfiveable-fiveable-ap-teachers/api-mcp-teacher#diagnostics

## Score history

- 2026-10-04: 70
- 2026-10-03: 70
- 2026-10-02: 69
- 2026-10-01: 69

## Common questions

### What is the Fiveable for AP Teachers MCP server?

Fiveable for AP Teachers is an MCP server listed in the public MCP registry as io.github.thinkfiveable/fiveable-ap-teachers. AP rubric grading, assignment drafts, question-bank materials, and class insights for teachers. This page covers its hosted endpoint (https://fiveable.me/api/mcp/teacher).

### Is the Fiveable for AP Teachers MCP server safe to use?

Fiveable for AP Teachers scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Fiveable for AP Teachers MCP server expose?

Fiveable for AP Teachers exposes 77 tools: get_my_teacher_workspace, list_classes, get_class, list_coursework, get_assignment, and 72 more. Their descriptions and schemas cost roughly 8,586 tokens of context every time the server is loaded.

### Does the Fiveable for AP Teachers MCP server require authentication?

No. We connected to Fiveable for AP Teachers without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Fiveable for AP Teachers MCP server still maintained?

Fiveable for AP Teachers is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://fiveable.me/api/mcp/teacher
- Repository: https://github.com/thinkfiveable/fiveable-mcp
- Website: https://fiveable.me/mcp/teachers
- Changelog RSS feed: https://verifymcp.io/servers/thinkfiveable-fiveable-ap-teachers/api-mcp-teacher.xml
- Changelog JSON feed: https://verifymcp.io/servers/thinkfiveable-fiveable-ap-teachers/api-mcp-teacher.json
- HTML version of this page: https://verifymcp.io/servers/thinkfiveable-fiveable-ap-teachers/api-mcp-teacher
