SchoolScope for developers

Connect an AI agent to SchoolScope’s California school data

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

Ask a real school question.

  1. Add the MCP serverUse the endpoint or command above in a client that supports remote HTTP servers.
  2. Confirm the tools are availableOpen a conversation and check that your client can access SchoolScope.
  3. Search, then follow upFind nearby schools, open a profile, and ask what evidence supports the answer.

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_schools
Results depend on the available evidence and your client’s tool choices.

Connect any MCP client with one URL.

In claude.ai or the desktop or mobile app, open Settings, then Connectors, then Add custom connector. Paste the URL and connect.

Server URL
https://mcp.schoolscope.co/mcp
Install command
claude mcp add --transport http schoolscope https://mcp.schoolscope.co/mcp

Or save this as .mcp.json in a project.

Claude Code project config
{
  "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.

Server URL
https://mcp.schoolscope.co/mcp

Save as .cursor/mcp.json.

Cursor config
{
  "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.

VS Code config
{
  "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.

Raw HTTP walkthrough: initialize, inspect tools, and search with cURL

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.

cURL walkthrough
# 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:

stdio bridge
npx -y mcp-remote https://mcp.schoolscope.co/mcp

Tools and resources

10 tools: search, profiles, comparisons, school paths and saved lists.

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_schools

By 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_profile

Everything 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_schools

Schools serving a similar student population, for a like-for-like comparison.

feeder_path

Where students come from and where the path leads — including the endpoint high school’s outcomes.

compare_schools

Side-by-side comparison of 2–4 schools at the same level.

district_profile

District roll-up: average published rates and each level’s scored schools in order.

my_watchlist

Caller’s saved schools with each one’s band, percentile and next application date — requires the watchlist:read scope. OAuth required.

my_applications

Caller’s application tracker: each school’s door, status, next dated step with its source, and notes — requires the applications:read scope. OAuth required.

track_application

Add a school to the caller’s application tracker, or change its status or note — requires the applications:write scope. OAuth required.

start_age

Which 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.

Give agents the definitions, too.

MCP resources supply the methods behind the answers. Discover them with resources/list and retrieve a resource with resources/read.

For 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

Every response carries its source agency, data year and method link.

Response metadata, abbreviated example
{
  "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.

Provenance travels with the answer

Source agency, data year, and methodology accompany structured school results.

A missing value is null, never zero

A school with no growth record returns null, not zero growth. Which measures exist differs by school, level and reporting year.

Comparisons have boundaries

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.