California school data for AI agents — scores, profiles, comparisons, feeder paths, UC pipelines.
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.
Compare 2-4 public schools side by side: band, Scope Score, exceeded/met split, cohort growth (aggregate school-by-grade cohorts across the grade span, as a 0-100 index centred on the state average), climate. A school with no cohort comparison reports no growth figure rather than a substitute — treat that as missing evidence, not flat growth. Schools are only comparable within the same level (elementary/middle/high are separate rankings). Private schools cannot be compared — they have no state testing data.
2-4 school slugs from find_schools
Compare 2-4 public schools side by side: band, Scope Score, exceeded/met split, cohort growth (aggregate school-by-grade cohorts across the grade span, as a 0-100 index centred on the state average), climate. A school with no cohort comparison reports no growth figure rather than a substitute — treat that as missing evidence, not flat growth. Schools are only comparable within the same level (elementary/middle/high are separate rankings). Private schools cannot be compared — they have no state testing data.
| Argument | Type | Description |
|---|---|---|
| slugs* | array | 2-4 school slugs from find_schools |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slugs"
],
"properties": {
"slugs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 4,
"minItems": 2,
"description": "2-4 school slugs from find_schools"
}
}
}A California district roll-up: average Scope Score and absenteeism across the district plus every scored school ranked by level. Match by district name.
| Argument | Type | Description |
|---|---|---|
| district* | string | District name or fragment, e.g. 'palo alto unified' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"district"
],
"properties": {
"district": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "District name or fragment, e.g. 'palo alto unified'"
}
}
}The K-12 feeder path for a school: which schools students typically arrive from, where they go next, and — for elementary/middle schools — the endpoint high school with its graduation and college-going outcomes. Boundary-based (the district's own published boundaries where we have them, else NCES SABS 2015-16), shown alongside scores, never inside them.
| Argument | Type | Description |
|---|---|---|
| slug* | string | URL slug of the school |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"description": "URL slug of the school"
}
}
}Find California schools four ways, whichever fits the question: free text over school/city/district names (`query`), inside a zip code (`zip`), within a radius of a place or coordinate (`near`), or the top-ranked schools at one level (`level` alone). Returns band, Scope Score, archetype and profile URL for each match. Private schools are flagged and never ranked — they have no state testing data. Supply exactly one of query, zip or near; or none plus a level for a top list. Set `tk: true` to limit any of these searches to schools with active transitional kindergarten (TK) enrollment — a filter that composes with query, zip, near and level, and every result carries a `hasTk` field.
| Argument | Type | Description |
|---|---|---|
| tk | boolean | true limits results to schools with active transitional kindergarten (TK) enrollment. |
| zip | string | 5-digit California zip code, e.g. '94110' |
| near | string | A point to search around: 'lat,lng' (e.g. '37.4299,-122.1285'), a 5-digit zip, or a California city name. Zips and city names resolve to the centre of the schools we hold there, so no external geocoding is needed. Radius search crosses district and city lines on purpose — that is the point of asking geographically. |
| level | string | Restrict to one level. Elementary, middle and high are scored on separate scales and are never mixed. With no query/zip/near, returns the top-ranked schools at this level. |
| limit | integer | |
Return the schools the authenticated user has saved on SchoolScope. Requires the `watchlist:read` OAuth scope.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}The full SchoolScope profile for one school by slug: verdict and archetype, Scope Score with band and percentile per level, CAASPP exceeded/met split, cohort growth (school-by-grade aggregates two years apart, in SBAC scale-score points, reported as a 0-100 index centred on the state average), climate (absenteeism, suspension, ELPAC), equity gaps by student group, teacher stability, and — for high schools — graduation, college destinations, UC admissions history, AP courses, and IB programmes. Also answers "is this school improving?" with a year-over-year table of statewide percentile and the underlying rates; the Scope Score is excluded there because it is normalised within each year and is not comparable across them. For public schools it also returns the profile's own `answer` (one sentence about all students, each subject against California's rate for the same grades), up to three selected `takeaways` (each with figures, comparisons, a question where one applies, and a generated receipt naming source, year, grades, population, n and how the comparison was built), and `studentGroups` (every group by income, race or ethnicity, language and disability with 30+ students tested in each subject, against the same group in the same grades in the district and statewide). Current data year 2026.
| Argument | Type | Description |
|---|---|---|
| slug* | string | URL slug, e.g. 'lowell-high-san-francisco-unified'. Get it from find_schools. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"description": "URL slug, e.g. 'lowell-high-san-francisco-unified'. Get it from find_schools."
}
}
}Schools serving a similar student population to a given school — same level, comparable free/reduced-lunch share and enrollment size — with the subject's standing among them. This is the fair comparison: a raw ranking largely reflects who enrolls, so a school's position against demographic peers says far more about the school itself than its statewide rank does. Public schools only.
| Argument | Type | Description |
|---|---|---|
| slug* | string | URL slug of the school to find peers for. Get it from find_schools. |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"description": "URL slug of the school to find peers for. Get it from find_schools."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
}
}
}| query |
| string |
| Free text: school, city or district name, e.g. 'lowell', 'palo alto unified' |
| radius_miles | number | Radius for `near`, in miles. Default 5. Ignored unless `near` is set. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tk": {
"type": "boolean",
"description": "true limits results to schools with active transitional kindergarten (TK) enrollment."
},
"zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "5-digit California zip code, e.g. '94110'"
},
"near": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "A point to search around: 'lat,lng' (e.g. '37.4299,-122.1285'), a 5-digit zip, or a California city name. Zips and city names resolve to the centre of the schools we hold there, so no external geocoding is needed. Radius search crosses district and city lines on purpose — that is the point of asking geographically."
},
"level": {
"enum": [
"elementary",
"middle",
"high"
],
"type": "string",
"description": "Restrict to one level. Elementary, middle and high are scored on separate scales and are never mixed. With no query/zip/near, returns the top-ranked schools at this level."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Free text: school, city or district name, e.g. 'lowell', 'palo alto unified'"
},
"radius_miles": {
"type": "number",
"default": 5,
"maximum": 25,
"minimum": 0.5,
"description": "Radius for `near`, in miles. Default 5. Ignored unless `near` is set."
}
}
}