Georgia K-12 standards, Milestones blueprints, and achievement levels for educators. Independent.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Walk the Georgia standards hierarchy one level at a time. With no arguments, returns the four subjects. Pass `subject` (optionally with `grade`) for that subject's courses, or pass a row's `id` back as `parent` to open it. `grade` works only with `subject` (or a `subject:<subj>` parent) and is ignored when opening any other row. Math courses have a strand layer between course and standard. Each row has an `id` (pass it back as `parent`), `code`, `title`, `cf_item_type` (the row's level in the state's data: Course, Domain, Content Standard, and so on), `kind`, `has_children`, `child_count`, and `gmas` / `ald` flags (whether the Milestones blueprints or the achievement-level descriptors cover it).
One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Requires subject.
A row `id` from an earlier call: a row identifier, 'subject:<subject>', or 'synth:math_strand:<course id>:<strand code>'.
Subject: 'ela', 'math', 'science', or 'social_studies'.
Tool list last changed Oct 26, 2026.
Walk the Georgia standards hierarchy one level at a time. With no arguments, returns the four subjects. Pass `subject` (optionally with `grade`) for that subject's courses, or pass a row's `id` back as `parent` to open it. `grade` works only with `subject` (or a `subject:<subj>` parent) and is ignored when opening any other row. Math courses have a strand layer between course and standard. Each row has an `id` (pass it back as `parent`), `code`, `title`, `cf_item_type` (the row's level in the state's data: Course, Domain, Content Standard, and so on), `kind`, `has_children`, `child_count`, and `gmas` / `ald` flags (whether the Milestones blueprints or the achievement-level descriptors cover it).
| Argument | Type | Description |
|---|---|---|
| grade | any | One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Requires subject. |
| parent | any | A row `id` from an earlier call: a row identifier, 'subject:<subject>', or 'synth:math_strand:<course id>:<strand code>'. |
| subject | any | Subject: 'ela', 'math', 'science', or 'social_studies'. |
{
"type": "object",
"title": "browse_standardsArguments",
"properties": {
"grade": {
"anyOf": [
{
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Grade",
"default": null,
"description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Requires subject."
},
"parent": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Parent",
"default": null,
"description": "A row `id` from an earlier call: a row identifier, 'subject:<subject>', or 'synth:math_strand:<course id>:<strand code>'."
},
"subject": {
"anyOf": [
{
"enum": [
"ela",
"math",
"science",
"social_studies"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Subject",
"default": null,
"description": "Subject: 'ela', 'math', 'science', or 'social_studies'."
}
}
}List the exact values the other tools' filters accept, so a search doesn't come back empty because of a typo. Returns `subjects` (id and label), `grades` (value and label), `hs_courses` (the course names the `course` filter accepts, with their subject), `strands` by subject (code and name; either works as `strand_code`), the four `ald_levels` (achievement levels), and the `assessments` catalog of Milestones tests.
No arguments.
{
"type": "object",
"title": "describe_vocabularyArguments",
"properties": {}
}The full blueprint for one Georgia Milestones test, for pacing and coverage planning. Identify the test by `assessment_id` (e.g. 'gmas_g05_math'), by `course` for an End-of-Course test (e.g. 'biology', 'algebra i', 'us history'), or by `grade` + `subject` for an End-of-Grade test (e.g. grade='5', subject='math'). Returns `title`, `total_points`, `dok_distribution` (Depth of Knowledge split), `design` (item-type table), `claim_summary` (points per claim), and `claims`: each claim and target with its `approx_points` and the `standards` it covers. READING THE POINTS. Do not add up `approx_points` down `claims`: the blueprint often draws one merged points cell across several target rows, and each of those rows repeats the pooled value (the naive sum reads 98-114 on the 60-point ELA tests and 82 on the 58-point grade 5 math test). Pooled rows share a `points_group` id and are flagged `points_shared: true`, with co-covered codes in `points_shared_with` and a ready-to-quote `approx_points_note`. The correct numbers are precomputed: `claim_summary` (one total per claim) and `total_claim_points` (the whole test). `total_points` comes from the design table and is null for the ELA blueprints (their PDFs have no Total row), so use `total_claim_points` there. If no single test matches, the result is an error that lists the available tests.
| Argument | Type | Description |
|---|---|---|
| grade | any | Grade of an End-of-Grade test (3 through 8). Use with subject. |
| course | any | End-of-Course test course: 'algebra i', 'biology', 'literature ii', or 'us history'. |
| subject | any | Subject of an End-of-Grade test. Use with grade. |
| assessment_id |
Full detail for one standard or container, addressed by its code (e.g. '5.NR.3.3', 'S8P1') or by an `id` returned by browse_standards or get_subject_grade_tree. Returns `found`, `id`, `code` (null for containers), `statement`, `subject`, `grades`, `strand_code` / `strand_name`, `hs_course`, `cf_item_type`, `kind`, `path` (where it sits in the curriculum), `notes`, `parent`, `children` (with gmas/ald flags), `alds` (achievement-level descriptions; sub-codes show their parent's), `assessment_coverage` (Milestones claim, target, points, qualifier), and `assessment_metadata` keyed by assessment_id; the server instructions explain how to read points and levels. Containers (domains, clusters, courses) are reachable only by `id` and carry no descriptors or coverage. An unknown code or id is an error; for older MGSE/ELAGSE codes use lookup_standards_by_code, which translates them.
| Argument | Type | Description |
|---|---|---|
| id* | string | A standard code such as '5.NR.3.3', or a row `id` from browse_standards or get_subject_grade_tree. |
{
"type": "object",
"title": "get_standard_detailsArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"maxLength": 200,
"description": "A standard code such as '5.NR.3.3', or a row `id` from browse_standards or get_subject_grade_tree."
}
}
}Return every standard for one subject and grade in a single call, as a nested tree: the one-call alternative to repeated browse_standards calls (e.g. 'list all the 4th grade ELA standards'). `subject` and `grade` are required. Each node has `id`, `code`, `title`, `cf_item_type`, `kind`, `strand_code`, `gmas` / `ald` coverage flags, and nested `children`. It carries no achievement-level or test text; follow up on specific codes with get_standard_details or lookup_standards_by_code. Retired rows and empty containers are left out. High school (grades 9-12) is organized by course, with up to 18 courses per grade. Without `course`, a high-school grade returns `courses` (each course's `id`, `code`, `title`, and `standard_count`) instead of the full tree; call again with `course` set to a title, code, or id from that list (or a name like 'algebra i') for that course's standards. `strand_code` narrows any tree to one strand. Returns `tree`, `node_count`, and `standard_count` (nodes that carry a code).
| Argument | Type | Description |
|---|---|---|
| grade* | string | One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. |
| course | any | High-school course: a title, code, or id from the `courses` list, or a name like 'algebra i' or 'biology'. |
| subject* | string | Subject: 'ela', 'math', 'science', or 'social_studies'. |
| strand_code | any | Optional strand, by code ('NR') or name ('Numerical Reasoning'). describe_vocabulary lists the strands for each subject. |
Compare one strand year over year, for pacing, remediation, and differentiation. Pass a `code` (e.g. '5.NR.1') to line that standard up against the same code at every grade ('3.NR.1', '4.NR.1', ...), or pass `subject` + `strand_code` (name or code) for the whole strand. Returns `grades`, each with `grade`, `grade_label`, and `standards` (code, statement, and gmas/ald flags). If the strand can't be identified, the result is an error.
| Argument | Type | Description |
|---|---|---|
| code | any | A standard code to trace, e.g. '5.NR.1'. |
| subject | any | Subject: 'ela', 'math', 'science', or 'social_studies'. Use with strand_code. |
| strand_code | any | Strand code ('NR') or name ('Numerical Reasoning'). Use with subject. |
{
"type": "object",
"title": "get_vertical_progressionArguments",
"properties": {
"code": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"title": "Code",
"default": null,
"description": "A standard code to trace, e.g. '5.NR.1'."
},
"subject": {
"anyOf": [
{
"enum": [
"ela",
"math",
"science",
"social_studies"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Subject",
"default": null,
"description": "Subject: 'ela', 'math', 'science', or 'social_studies'. Use with strand_code."
},
"strand_code": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Strand Code",
"default": null,
"description": "Strand code ('NR') or name ('Numerical Reasoning'). Use with subject."
}
}
}List every Georgia Milestones test with a blueprint: 14 End-of-Grade tests (ELA and math for each of grades 3-8; science and social studies in grade 8 only) and 4 End-of-Course tests (Algebra I, Biology, Literature II, US History). Returns `assessments` with `assessment_id`, `subject`, `grade` (null for End-of-Course), `hs_course` (null for End-of-Grade), and a readable `title`. Use the ids with get_assessment_blueprint and standards_for_claim.
No arguments.
{
"type": "object",
"title": "list_assessmentsArguments",
"properties": {}
}Look up Georgia standards by their codes (e.g. ['5.NR.1', '3.T.C.1', 'S8P1', 'SS8H1.a']). Returns the matching standards (each with `code`, `statement`, optional `notes` and `path`), plus per-code `alds` (achievement-level descriptions), `assessment_coverage` (Milestones claim, target, approx_points, qualifier), and `assessment_metadata` keyed by assessment_id; the server instructions explain how to read points, qualifiers, and levels. A sub-code (e.g. '5.NR.3.3') with no descriptors of its own shows its parent standard's. Older codes from earlier materials (MGSE, ELAGSE, CCGPS) are translated to the current code when the mapping is unambiguous, including renamed math strands (fractions moved from `NF` to the current `5.NR.3` cluster), and reported in `normalized_codes`. Codes that still don't match appear in `unknown_codes` with likely `suggestions`.
| Argument | Type | Description |
|---|---|---|
| codes* | array | One or more standard codes, e.g. ['5.NR.1', 'S8P1']. |
{
"type": "object",
"title": "lookup_standards_by_codeArguments",
"required": [
"codes"
],
"properties": {
"codes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"title": "Codes",
"maxItems": 50,
"minItems": 1,
"description": "One or more standard codes, e.g. ['5.NR.1', 'S8P1']."
}
}
}Search the Georgia Milestones achievement-level descriptors: the official descriptions of what a student can do at each of four levels (Beginning, Developing, Proficient, Distinguished) for a standard. Use it for 'what does mastery look like' questions (e.g. 'what does a proficient 3rd grader do with fractions?'); it matches the descriptor text, not the standards' own wording. Returns `hits` with `item_code`, `level`, `descriptor_text`, `subject`, `grades`, and `statement` (the standard the descriptor belongs to), best match first. Limitation: descriptors exist only for the subjects and grades the Milestones tests cover, so many standards have none.
| Argument | Type | Description |
|---|---|---|
| grade | any | One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. |
| level | any | Only this achievement level. |
| limit | integer | Most hits to return, 1 to 50. |
| query* | string | Words to search for in the descriptor text, e.g. 'fractions'. |
| subjects | any | Limit to these subjects. |
| grade_set | any | Several grades at once, e.g. ['03', '04']. |
{
"type": "object",
"title": "search_mastery_descriptorsArguments",
"required": [
"query"
],
"properties": {
"grade": {
"anyOf": [
{
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Grade",
"default": null,
"description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work."
},
"level": {
"anyOf": [
{
"enum": [
"Beginning",
"Developing",
"Proficient",
"Distinguished"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Level",
"default": null,
"description": "Only this achievement level."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Most hits to return, 1 to 50."
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 500,
"description": "Words to search for in the descriptor text, e.g. 'fractions'."
},
"subjects": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"ela",
"math",
"science",
"social_studies"
],
"type": "string"
},
"maxItems": 4
},
{
"type": "null"
}
],
"title": "Subjects",
"default": null,
"description": "Limit to these subjects."
},
"grade_set": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string"
},
"maxItems": 13
},
{
"type": "null"
}
],
"title": "Grade Set",
"default": null,
"description": "Several grades at once, e.g. ['03', '04']."
}
}
}Search the Georgia Standards of Excellence by topic, with optional filters. Returns matching standards as `items` (each: `code`, `subject`, `grades`, `strand_code`, `strand_name`, `hs_course`, `statement`, plus optional `notes` and `path`). When enrichment is on, the response also carries `alds` (achievement-level descriptions per standard), `assessment_coverage` (Milestones claim, target, approx_points, sub_codes, qualifier), and `assessment_metadata` keyed by assessment_id (Depth of Knowledge split, item-type design); the server instructions explain how to read points, qualifiers, and levels. If `dropped_strand` is set, the strand filter matched nothing and the results span the whole subject. `truncated` means more matches may exist than `limit` allowed. Enrichment is automatic for small result sets (8 standards or fewer) and off for larger ones unless `include_enrichment` is true. If the query itself contains a standard code (e.g. 'what is 5.NR.1?'), the search becomes a direct code lookup and the other filters are ignored; lookup_standards_by_code is the direct route for known codes. Limitation: matches the words of the standards, in English.
| Argument | Type | Description |
|---|---|---|
| grade | any | One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Do not combine with grade_set. |
| limit | any | Most rows to return, 1 to 100. Default: 40 when narrowed by grade, grade_set, or course; 20 otherwise. |
| query* | string | Topic words to search for, e.g. 'adding fractions with unlike denominators'. |
| course | any | Optional high-school course, e.g. 'algebra i', 'biology', 'us history' (describe_vocabulary lists them). |
List every standard a Georgia Milestones test assesses under one blueprint claim (a reporting category such as 'Numerical Reasoning'), with point weights. This is the reverse of the per-standard coverage view. Pass an `assessment_id` (from list_assessments) and a `claim_code` (the category heading, e.g. 'Numerical Reasoning', or for ELA '<strand>.<domain>' like 'Texts.Interpreting Texts'); optionally narrow to one `target_text`. Matching ignores case and surrounding spaces. Returns `standards` with `code`, `statement`, `claim_name`, `target_text`, `approx_points`, `sub_codes`, and `qualifier`. READING THE POINTS. `approx_points` is the weight of a claim or target, never of one standard, and a blueprint often draws one merged points cell across several targets. Rows sharing a merged cell repeat that value and share a `points_group` id; each is flagged `points_shared: true`, names its co-covered codes in `points_shared_with`, and carries a ready-to-quote `approx_points_note`. Rows with different `points_group` ids are separate pools. So do not add up `approx_points` down the rows: use the precomputed `claim_total_points`, bounded by `assessment_total_points` / `design_total_points`. Worked example: grade 5 math Numerical Reasoning has 5 rows reading 14/14/14/10/10 (62 if summed), but 5.NR.1+5.NR.4 share one 14-point pool and 5.NR.2+5.NR.5 share one 10-point pool, so the claim is 38 points on a 58-point test. An unknown claim or assessment_id is an error that lists the valid values.
| Argument | Type | Description |
|---|---|---|
| claim_code* | string | Claim (reporting category) heading, e.g. 'Numerical Reasoning'. |
| target_text | any | Optional target within the claim, as written in the blueprint. |
| assessment_id* |
| any |
| Test id from list_assessments, e.g. 'gmas_g05_math'. |
{
"type": "object",
"title": "get_assessment_blueprintArguments",
"properties": {
"grade": {
"anyOf": [
{
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Grade",
"default": null,
"description": "Grade of an End-of-Grade test (3 through 8). Use with subject."
},
"course": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Course",
"default": null,
"description": "End-of-Course test course: 'algebra i', 'biology', 'literature ii', or 'us history'."
},
"subject": {
"anyOf": [
{
"enum": [
"ela",
"math",
"science",
"social_studies"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Subject",
"default": null,
"description": "Subject of an End-of-Grade test. Use with grade."
},
"assessment_id": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Assessment Id",
"default": null,
"description": "Test id from list_assessments, e.g. 'gmas_g05_math'."
}
}
}{
"type": "object",
"title": "get_subject_grade_treeArguments",
"required": [
"subject",
"grade"
],
"properties": {
"grade": {
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string",
"title": "Grade",
"description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work."
},
"course": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Course",
"default": null,
"description": "High-school course: a title, code, or id from the `courses` list, or a name like 'algebra i' or 'biology'."
},
"subject": {
"enum": [
"ela",
"math",
"science",
"social_studies"
],
"type": "string",
"title": "Subject",
"description": "Subject: 'ela', 'math', 'science', or 'social_studies'."
},
"strand_code": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Strand Code",
"default": null,
"description": "Optional strand, by code ('NR') or name ('Numerical Reasoning'). describe_vocabulary lists the strands for each subject."
}
}
}| subjects | any | Limit to these subjects. |
| grade_set | any | Several grades at once, e.g. ['03', '04', '05']. Do not combine with grade. |
| strand_code | any | Optional strand, by code ('NR') or name ('Numerical Reasoning'). describe_vocabulary lists the strands for each subject. |
| include_enrichment | any | true attaches achievement levels and Milestones coverage to every result; false never does; omit for automatic. |
{
"type": "object",
"title": "search_standardsArguments",
"required": [
"query"
],
"properties": {
"grade": {
"anyOf": [
{
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Grade",
"default": null,
"description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Do not combine with grade_set."
},
"limit": {
"anyOf": [
{
"type": "integer",
"maximum": 100,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Limit",
"default": null,
"description": "Most rows to return, 1 to 100. Default: 40 when narrowed by grade, grade_set, or course; 20 otherwise."
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 500,
"description": "Topic words to search for, e.g. 'adding fractions with unlike denominators'."
},
"course": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Course",
"default": null,
"description": "Optional high-school course, e.g. 'algebra i', 'biology', 'us history' (describe_vocabulary lists them)."
},
"subjects": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"ela",
"math",
"science",
"social_studies"
],
"type": "string"
},
"maxItems": 4
},
{
"type": "null"
}
],
"title": "Subjects",
"default": null,
"description": "Limit to these subjects."
},
"grade_set": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"K",
"KG",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"type": "string"
},
"maxItems": 13
},
{
"type": "null"
}
],
"title": "Grade Set",
"default": null,
"description": "Several grades at once, e.g. ['03', '04', '05']. Do not combine with grade."
},
"strand_code": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Strand Code",
"default": null,
"description": "Optional strand, by code ('NR') or name ('Numerical Reasoning'). describe_vocabulary lists the strands for each subject."
},
"include_enrichment": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Enrichment",
"default": null,
"description": "true attaches achievement levels and Milestones coverage to every result; false never does; omit for automatic."
}
}
}| string |
| Test id from list_assessments, e.g. 'gmas_g05_math'. |
{
"type": "object",
"title": "standards_for_claimArguments",
"required": [
"assessment_id",
"claim_code"
],
"properties": {
"claim_code": {
"type": "string",
"title": "Claim Code",
"maxLength": 200,
"description": "Claim (reporting category) heading, e.g. 'Numerical Reasoning'."
},
"target_text": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Target Text",
"default": null,
"description": "Optional target within the claim, as written in the blueprint."
},
"assessment_id": {
"type": "string",
"title": "Assessment Id",
"maxLength": 100,
"description": "Test id from list_assessments, e.g. 'gmas_g05_math'."
}
}
}