Provenance travels with the answer
Source agency, data year, and methodology accompany structured school results.
SchoolScope for developers
Search schools, inspect profiles, compare reported patterns, and trace answers back to public sources.
MCP server · LiveFree, with no API key
Remote HTTP endpointLive MCP server
https://mcp.schoolscope.co/mcp
Add a remote HTTP server in your client and use this URL. School-data tools work without authentication. No API key. OAuth is optional and used only for your saved schools and application tracker.
Quickstart
Example prompt
Find public elementary schools near 90004. Compare how their 5th graders did against their 3rd graders two years earlier and their attendance, include the source years, and suggest questions to ask on a visit.
Expected tool flow
find_schoolsschool_profilecompare_schoolsIn claude.ai or the desktop or mobile app, open Settings, then Connectors, then Add custom connector. Paste the URL and connect.
https://mcp.schoolscope.co/mcpclaude mcp add --transport http schoolscope https://mcp.schoolscope.co/mcpOr save this as .mcp.json in a project.
{ "mcpServers": { "schoolscope": { "type": "http", "url": "https://mcp.schoolscope.co/mcp" } } }
On a paid plan, open Settings, then Apps (it may be called Connectors), then Advanced settings. Turn on Developer mode and create a connector with this URL. Choose No authentication.
https://mcp.schoolscope.co/mcpSave as .cursor/mcp.json.
{ "mcpServers": { "schoolscope": { "type": "http", "url": "https://mcp.schoolscope.co/mcp" } } }
Save as .vscode/mcp.json, then start the server. VS Code names the object servers.
{ "servers": { "schoolscope": { "type": "http", "url": "https://mcp.schoolscope.co/mcp" } } }
No tools showing? Check that the URL ends in /mcp and the transport is HTTP. Asked to sign in? The school-data tools need no account, so choose no authentication.
Use a terminal with cURL. The session ID comes from the initialization response headers. Responses may use server-sent events; inspect the JSON in the data: lines.
# 1. Initialize a session and save the response headers. curl -sS -D headers.txt https://mcp.schoolscope.co/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-03-26", "capabilities": {}, "clientInfo": {"name": "schoolscope-example", "version": "1.0"}}}' # 2. Copy mcp-session-id from the headers into this variable. SESSION_ID='PASTE_SESSION_ID' # 3. Notify the server that initialization is complete. curl -sS https://mcp.schoolscope.co/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "mcp-session-id: $SESSION_ID" \ -d '{"jsonrpc": "2.0", "method": "notifications/initialized"}' # 4. Discover the current tools and their input schemas. curl -sS https://mcp.schoolscope.co/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "mcp-session-id: $SESSION_ID" \ -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}' # 5. Ask a school-data tool a question. curl -sS https://mcp.schoolscope.co/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "mcp-session-id: $SESSION_ID" \ -d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "find_schools", "arguments": {"query": "Palm Crest"}}}'
For clients that only support stdio, a bridge can connect to the remote server:
npx -y mcp-remote https://mcp.schoolscope.co/mcpTools and resources
Start with search, move into a profile, then compare or follow the path. The school-data tools are anonymous. Only my_watchlist, my_applications and track_application require OAuth: they read or change your own saved schools and application tracker.
find _schoolsBy name, by zip, within a radius of any place or coordinate, or top-ranked at one level — optionally filtered to schools with transitional kindergarten (TK).
school _profileEverything we publish for one school: verdict, selected takeaways with their sources, scores by level, climate, student-group results, college outcomes, year-over-year movement.
similar _schoolsSchools serving a similar student population, for a like-for-like comparison.
feeder _pathWhere students come from and where the path leads — including the endpoint high school’s outcomes.
compare _schoolsSide-by-side comparison of 2–4 schools at the same level.
district _profileDistrict roll-up: average published rates and each level’s scored schools in order.
my _watchlistCaller’s saved schools with each one’s band, percentile and next application date — requires the watchlist:read scope. OAuth required.
my _applicationsCaller’s application tracker: each school’s door, status, next dated step with its source, and notes — requires the applications:read scope. OAuth required.
track _applicationAdd a school to the caller’s application tracker, or change its status or note — requires the applications:write scope. OAuth required.
start _ageWhich school year a child is TK or kindergarten age, from a birth month and year under California Education Code § 48000, with the district’s choice window where one applies.
The server publishes current JSON Schemas through tools/list.
MCP resources supply the methods behind the answers. Discover them with resources/list and retrieve a resource with resources/read.
Understand score construction, measures, and comparison rules.
schoolscope://methodology/scope-scorePattern definitionsRead the rule and the limits behind each school pattern.
schoolscope://methodology/archetypesSources and vintagesInspect the agencies, datasets, and reporting periods.
schoolscope://data/sourcesFor web discovery, llms.txt provides a machine-readable guide to SchoolScope. Pages also include structured metadata.
To link to a school by an official id, use schoolscope.co/ca/school/nces/{NCES id} or schoolscope.co/ca/school/cds/{CDS code}. Each address redirects to the school's page. The school_profile tool takes the same ids as nces_id and cds_code.
Responses
{ "meta": { "data_year": 2026, "source_agency": "California Department of Education", "methodology_url": "https://schoolscope.co/methodology" } }
The full envelope also includes attribution, comparability rules, growth definitions, and a generation timestamp. A timestamp records when an answer was generated; the data year identifies its vintage.
Source agency, data year, and methodology accompany structured school results.
A school with no growth record returns null, not zero growth. Which measures exist differs by school, level and reporting year.
Compare schools within one level; continuation and alternative schools are compared only with their own kind. Scope Scores are normalized within each year; use underlying rates and state percentiles for trends.
Coverage is California schools. Public records can’t show a classroom or say why a result changed, and demographics sit beside the score, never in it.