Servidor MCP

SchoolScope

co.schoolscope/mcp
Datos y analítica Educación Público y accesible MCP 2025-11-25

Qué hace este MCP

Provides California school and district profiles, rankings, comparisons, feeder paths, academic and climate metrics, and saved-school watchlists.

compare_schools
Compare 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.
Solo lectura
Esquema de entrada
{'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'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['compared', 'excludedPrivate', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'compared': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'url', 'city', 'ogImage', 'level', 'scopeScore', 'band', 'statePercentile', 'archetype', 'patterns', 'pctExceeded', 'pctMetAbove', 'cohortGrowthScalePoints', 'cohortSpan', 'growthIndex', 'gradeGapThisYearPp', 'chronicAbsentRate', 'suspensionRate', 'peerClass'], 'properties': {'url': {'type': 'string'}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ogImage': {'type': 'string'}, 'patterns': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'evidence', 'question'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'evidence': {'type': 'string'}, 'question': {'type': 'string'}}, 'additionalProperties': False}}, 'archetype': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cohortSpan': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'growthIndex': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'suspensionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'chronicAbsentRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'gradeGapThisYearPp': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cohortGrowthScalePoints': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'excludedPrivate': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
district_profile
District profile
A California district roll-up: average Scope Score and absenteeism across the district plus every scored school ranked by level. Match by district name.
Solo lectura
Esquema de entrada
{'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'"}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['district', 'county', 'stats', 'schools', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'stats': {'anyOf': [{'type': 'object', 'required': ['schoolCount', 'avgScore', 'avgExceeded', 'avgAbsent'], 'properties': {'avgScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'avgAbsent': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'avgExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolCount': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'schools': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug', 'url', 'ogImage', 'city', 'zip', 'lat', 'lng', 'district', 'county', 'schoolType', 'level', 'scored', 'hasTk', 'scopeScore', 'band', 'statePercentile', 'pctExceeded', 'pctMetAbove', 'cohortGrowthScalePoints', 'cohortSpan', 'growthIndex', 'chronicAbsentRate', 'suspensionRate', 'archetype', 'patterns', 'peerClass'], 'properties': {'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lng': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'url': {'type': 'string'}, 'zip': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'hasTk': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scored': {'type': 'boolean'}, 'ogImage': {'type': 'string'}, 'district': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'patterns': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'evidence', 'question'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'evidence': {'type': 'string'}, 'question': {'type': 'string'}}, 'additionalProperties': False}}, 'archetype': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matchNote': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cohortSpan': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enrollment': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'growthIndex': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'freeLunchPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'distanceMiles': {'type': 'number'}, 'suspensionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'chronicAbsentRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cohortGrowthScalePoints': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'district': {'type': 'string'}}, 'additionalProperties': False}
feeder_path
K-12 feeder path
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 (NCES SABS), shown alongside scores, never inside them.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1, 'description': 'URL slug of the school'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['school', 'subject', 'feedsFrom', 'feedsInto', 'endpoint', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'school': {'type': 'string'}, 'subject': {'type': 'object', 'required': ['name', 'slug', 'url', 'city', 'ogImage'], 'properties': {'url': {'type': 'string'}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'ogImage': {'type': 'string'}}, 'additionalProperties': False}, 'endpoint': {'anyOf': [{'type': 'object', 'required': ['slug', 'name', 'url', 'ogImage', 'scopeScore', 'graduationRate', 'collegeGoingRate'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'ogImage': {'type': 'string'}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'graduationRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'collegeGoingRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'feedsFrom': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'url', 'ogImage', 'band', 'schoolType', 'relationship', 'source', 'overlapPct', 'levelFrom', 'levelTo', 'scopeScore', 'statePercentile', 'peerClass'], 'properties': {'url': {'type': 'string'}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'source': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'levelTo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ogImage': {'type': 'string'}, 'levelFrom': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'overlapPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'relationship': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'feedsInto': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'url', 'ogImage', 'band', 'schoolType', 'relationship', 'source', 'overlapPct', 'levelFrom', 'levelTo', 'scopeScore', 'statePercentile', 'peerClass'], 'properties': {'url': {'type': 'string'}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'source': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'levelTo': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ogImage': {'type': 'string'}, 'levelFrom': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'overlapPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'relationship': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
find_schools
Find California schools
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.
Solo lectura
Esquema de entrada
{'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 â\x80\x94 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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['schools', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'point': {'type': 'object', 'required': ['lat', 'lng', 'resolvedFrom'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'resolvedFrom': {'type': 'string'}}, 'additionalProperties': False}, 'heading': {'type': 'string'}, 'schools': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug', 'url', 'ogImage', 'city', 'zip', 'lat', 'lng', 'district', 'county', 'schoolType', 'level', 'scored', 'hasTk', 'scopeScore', 'band', 'statePercentile', 'pctExceeded', 'pctMetAbove', 'cohortGrowthScalePoints', 'cohortSpan', 'growthIndex', 'chronicAbsentRate', 'suspensionRate', 'archetype', 'patterns', 'peerClass'], 'properties': {'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lng': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'url': {'type': 'string'}, 'zip': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'hasTk': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scored': {'type': 'boolean'}, 'ogImage': {'type': 'string'}, 'district': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'patterns': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'evidence', 'question'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'evidence': {'type': 'string'}, 'question': {'type': 'string'}}, 'additionalProperties': False}}, 'archetype': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matchNote': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cohortSpan': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enrollment': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'growthIndex': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'freeLunchPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'distanceMiles': {'type': 'number'}, 'suspensionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'chronicAbsentRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cohortGrowthScalePoints': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'radiusMiles': {'type': 'number'}}, 'additionalProperties': False}
my_watchlist
My saved schools
Return the schools the authenticated user has saved on SchoolScope. Requires the `watchlist:read` OAuth scope.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['watchlist', 'email', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'email': {'type': 'string'}, 'watchlist': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'slug': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
school_profile
School profile
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. Current data year 2025.
Solo lectura
Esquema de entrada
{'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."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['school', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'trend': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'level', 'statePercentile', 'pctExceeded', 'pctMetAbove'], 'properties': {'year': {'type': 'number'}, 'level': {'type': 'string'}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'school': {'type': 'object', 'required': ['name', 'slug', 'url', 'ogImage', 'type', 'city', 'district', 'enrollment', 'hasTk'], 'properties': {'url': {'type': 'string'}, 'zip': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'type': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'hasTk': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'levels': {'type': 'array', 'items': {'type': 'object', 'required': ['level', 'scopeScore', 'band', 'statePercentile', 'pctExceeded', 'pctMetAbove', 'oneLiner', 'cohortGrowthScalePoints', 'cohortSpan', 'growthIndex', 'gradeGapThisYearPp', 'chronicAbsentRate', 'suspensionRate', 'archetype', 'patterns'], 'properties': {'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'level': {'type': 'string'}, 'oneLiner': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'patterns': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'evidence', 'question'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'evidence': {'type': 'string'}, 'question': {'type': 'string'}}, 'additionalProperties': False}}, 'archetype': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cohortSpan': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'growthIndex': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'suspensionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'chronicAbsentRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'gradeGapThisYearPp': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cohortGrowthScalePoints': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'scored': {'type': 'boolean'}, 'ogImage': {'type': 'string'}, 'dataYear': {'type': 'number'}, 'district': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enrollment': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'highSchool': {'anyOf': [{'type': 'object', 'required': ['graduationRate', 'collegeGoing', 'ucLatest', 'apOwnCourses', 'ib'], 'properties': {'ib': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': {}}, {'type': 'null'}]}, 'ucLatest': {'anyOf': [{'type': 'object', 'properties': {}, 'additionalProperties': {}}, {'type': 'null'}]}, 'apOwnCourses': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'collegeGoing': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'graduationRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'primaryLevel': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}
similar_schools
Similar 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.
Solo lectura
Esquema de entrada
{'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}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['subject', 'peers', 'freeLunchWindow', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['data_year', 'source_agency', 'attribution', 'methodology_url', 'comparability', 'growth_basis', 'generated_at'], 'properties': {'data_year': {'type': 'number'}, 'attribution': {'type': 'string'}, 'generated_at': {'type': 'string'}, 'growth_basis': {'type': 'string'}, 'comparability': {'type': 'string'}, 'source_agency': {'type': 'string'}, 'methodology_url': {'type': 'string'}}, 'additionalProperties': False}, 'peers': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug', 'url', 'ogImage', 'city', 'zip', 'lat', 'lng', 'district', 'county', 'schoolType', 'level', 'scored', 'hasTk', 'scopeScore', 'band', 'statePercentile', 'pctExceeded', 'pctMetAbove', 'cohortGrowthScalePoints', 'cohortSpan', 'growthIndex', 'chronicAbsentRate', 'suspensionRate', 'archetype', 'patterns', 'peerClass'], 'properties': {'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lng': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'url': {'type': 'string'}, 'zip': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'hasTk': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scored': {'type': 'boolean'}, 'ogImage': {'type': 'string'}, 'district': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'patterns': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'evidence', 'question'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'evidence': {'type': 'string'}, 'question': {'type': 'string'}}, 'additionalProperties': False}}, 'archetype': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matchNote': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cohortSpan': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enrollment': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'growthIndex': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'freeLunchPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'distanceMiles': {'type': 'number'}, 'suspensionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'chronicAbsentRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cohortGrowthScalePoints': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'subject': {'type': 'object', 'required': ['name', 'slug', 'url', 'ogImage', 'city', 'zip', 'lat', 'lng', 'district', 'county', 'schoolType', 'level', 'scored', 'hasTk', 'scopeScore', 'band', 'statePercentile', 'pctExceeded', 'pctMetAbove', 'cohortGrowthScalePoints', 'cohortSpan', 'growthIndex', 'chronicAbsentRate', 'suspensionRate', 'archetype', 'patterns', 'peerClass'], 'properties': {'lat': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lng': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'url': {'type': 'string'}, 'zip': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'band': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'city': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'hasTk': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'county': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scored': {'type': 'boolean'}, 'ogImage': {'type': 'string'}, 'district': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'patterns': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'evidence', 'question'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'evidence': {'type': 'string'}, 'question': {'type': 'string'}}, 'additionalProperties': False}}, 'archetype': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matchNote': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'peerClass': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cohortSpan': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'enrollment': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'schoolType': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'scopeScore': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'growthIndex': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctExceeded': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pctMetAbove': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'freeLunchPct': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'distanceMiles': {'type': 'number'}, 'suspensionRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'statePercentile': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'chronicAbsentRate': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'cohortGrowthScalePoints': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'outscoredPeers': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'freeLunchWindow': {'anyOf': [{'type': 'array', 'items': {'type': 'number'}}, {'type': 'null'}]}, 'matchedPeerCount': {'type': 'number'}}, 'additionalProperties': False}
Modificado
similar_schools
29 de September de 2026 a las 02:50
Modificado
district_profile
29 de September de 2026 a las 02:50
Modificado
compare_schools
29 de September de 2026 a las 02:50
Modificado
school_profile
29 de September de 2026 a las 02:50
Modificado
find_schools
29 de September de 2026 a las 02:50
Añadido
my_watchlist
17 de September de 2026 a las 12:38
Añadido
similar_schools
17 de September de 2026 a las 12:38
Añadido
district_profile
17 de September de 2026 a las 12:38
Añadido
compare_schools
17 de September de 2026 a las 12:38
Añadido
feeder_path
17 de September de 2026 a las 12:38
Añadido
school_profile
17 de September de 2026 a las 12:38
Añadido
find_schools
17 de September de 2026 a las 12:38