# io.github.cyanheads/college-scorecard-mcp-server (remote · college-scorecard.caseyjhand.com)

Search, compare, and analyze U.S. college data — costs, earnings, programs, and outcomes.

- Trust score: 86/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `college-scorecard.caseyjhand.com`: 86/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/college-scorecard.md), [page](https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/college-scorecard)
- npm · `@cyanheads/college-scorecard-mcp-server`: 39/100, [markdown](https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/cyanheads-college-scorecard-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/cyanheads-college-scorecard-mcp-server)

## Channel facts

- Endpoint: `https://college-scorecard.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 80/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2682 tokens (~134/item across 20 items; 9 tools + 11 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 77/100
  - Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/college-scorecard-mcp-server server?

io.github.cyanheads/college-scorecard-mcp-server is a hosted endpoint at https://college-scorecard.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-college-scorecard-mcp-server 'https://college-scorecard.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-college-scorecard-mcp-server": {
      "url": "https://college-scorecard.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-college-scorecard-mcp-server": {
      "type": "http",
      "url": "https://college-scorecard.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-college-scorecard-mcp-server]
url = "https://college-scorecard.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-college-scorecard-mcp-server": {
      "type": "remote",
      "url": "https://college-scorecard.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-college-scorecard-mcp-server --url 'https://college-scorecard.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-college-scorecard-mcp-server:
    url: "https://college-scorecard.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-college-scorecard-mcp-server": {
      "Transport": "http",
      "Url": "https://college-scorecard.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-college-scorecard-mcp-server -t streamable-http -u 'https://college-scorecard.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-college-scorecard-mcp-server": {
      "type": "http",
      "url": "https://college-scorecard.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 85, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “scorecard_compare_schools” rewrote its description, which is the text the model reads
- [security] Tool “scorecard_get_programs” rewrote its description, which is the text the model reads
- [security] Tool “scorecard_search_programs” rewrote its description, which is the text the model reads
- [security] Tool “scorecard_search_schools” rewrote its description, which is the text the model reads
- [functional] New resource “college-scorecard-guide”
- [functional] Server version: 0.4.0 → 0.5.0
- [cosmetic] “scorecard_get_programs” added an optional parameter “limit”
- [cosmetic] “scorecard_get_programs” added an optional parameter “offset”
- [cosmetic] “scorecard_get_school” added an optional parameter “program_limit”
- [cosmetic] “scorecard_get_school” added an optional parameter “program_offset”
- [cosmetic] “scorecard_lookup_cip” added an optional parameter “offset”
- [cosmetic] “scorecard_search_programs” added an optional parameter “limit”
- [cosmetic] “scorecard_search_programs” added an optional parameter “offset”
- [cosmetic] “scorecard_get_programs” reworded the description of “min_earnings”
- [cosmetic] “scorecard_search_programs” reworded the description of “min_earnings”
- [cosmetic] “scorecard_search_schools” reworded the description of “degree_level”
- [cosmetic] “scorecard_compare_schools” reworded the description of “ids”

### 2026-11-01 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-21 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (9)

### `scorecard_lookup_cip` (~157 tokens)

Lookup CIP Code

Search the Classification of Instructional Programs (CIP) taxonomy by keyword or partial name. Returns matching CIP codes with standard titles. Use this before passing cip_code filters to scorecard_search_programs or scorecard_get_programs when you know a program by name but not its code. Served entirely from embedded static data — no API call, no rate limit impact.

Input parameters:

- `limit` (integer): Requested limit; serving cap 50, hard ceiling 1,000.
- `offset` (integer): Zero-based offset into the complete relevance-ordered matches.
- `query` (string, required): Search term — program name keyword (e.g. "computer science", "nursing", "business"). Matches against CIP titles and family names.

Output parameters:

- `cap` (number): The limit that was applied.
- `error` (object): Present when the call failed. Absent on success.
- `guidance` (string): Concrete narrowing guidance when matches remain.
- `nextOffset` (number): Offset to request next; absent when no matches remain.
- `notice` (string): No-match guidance.
- `offset` (number): Zero-based offset of this result page.
- `query` (string): The search query used.
- `queryContext` (object): Effective selectors.
- `results` (array): Matching CIP entries ranked by relevance.
- `shown` (number): Number of CIP codes returned.
- `totalMatches` (number): Number of matches found.
- `truncated` (boolean): True when results were capped at the limit.

### `scorecard_list_fields` (~140 tokens)

List Scorecard Fields

Search the College Scorecard field catalog by keyword. Returns matching field paths, descriptions, data types, and whether each field supports API-side sorting. Use before passing custom field paths to the fields parameter on scorecard_get_school to find a supported path. Served entirely from embedded static data — no API call, no rate limit impact.

Input parameters:

- `limit` (integer): Requested limit; serving cap 100, hard ceiling 1,000.
- `query` (string, required): Keyword to search the field catalog (e.g. "tuition", "earnings", "admissions", "debt"). Matches against field paths, descriptions, and category names.

Output parameters:

- `cap` (number): The limit that was applied.
- `error` (object): Present when the call failed. Absent on success.
- `guidance` (string): Concrete narrowing guidance when matches remain.
- `notice` (string): No-match guidance.
- `query` (string): The search query used.
- `queryContext` (object): Effective selectors.
- `results` (array): Matching field entries ranked by relevance.
- `shown` (number): Number of fields returned.
- `tip` (string): Usage tip for unsortable fields when relevant.
- `totalMatches` (number): Number of matching fields found.
- `truncated` (boolean): True when results were capped at the limit.

### `scorecard_search_schools` (~523 tokens)

Search Schools

Search and filter U.S. colleges and universities by name, location, type, size, and acceptance rate. Returns core identity and cost metrics. Use scorecard_get_school for profiles or scorecard_search_programs for programs. Geographic distance requires a U.S. ZIP; ZIP alone uses the provider default radius. State accepts comma-separated two-letter codes (e.g. WA,CA). Ownership: 1=public, 2=private nonprofit, 3=for-profit. Degree level: 0=Not classified, 1=certificate, 2=associate, 3=bachelor, 4=Entirely graduate-degree granting.

Input parameters:

- `acceptance_rate_range` (object): Acceptance rate range as decimals (0–1). Omit for no filter.
- `cip_code` (string): Filter to schools offering this CIP 4-digit program code (e.g. "11.07"). Use scorecard_lookup_cip to find codes.
- `degree_level` (integer): Predominant degree: 0=Not classified, 1=certificate, 2=associate, 3=bachelor, 4=Entirely graduate-degree granting.
- `distance` (string): Nonnegative radius: bare miles, mi, or km, including decimals. Requires meaningful zip.
- `men_only` (boolean): True selects men-only institutions; false selects institutions explicitly marked not men-only. Omit to include unknown values.
- `ownership` (integer): Control type: 1=public, 2=private nonprofit, 3=private for-profit.
- `page` (integer): Zero-indexed page number for pagination.
- `per_page` (integer): Results per page (max 100).
- `query` (string): School name search — partial or full name; all words must appear.
- `size_range` (object): Undergraduate enrollment size range. Omit for no size filter.
- `sort` (string): Upstream sort expression on an indexed field, e.g. "latest.cost.avg_net_price.overall:asc" or ":desc" for reverse order. Use scorecard_list_fields for sort support; omission keeps API ordering.
- `state` (string): Comma-separated two-letter state codes; case and whitespace normalized, blanks unset.
- `women_only` (boolean): True selects women-only institutions; false selects institutions explicitly marked not women-only. Omit to include unknown values.
- `zip` (string): Five-digit U.S. ZIP or ZIP+4. Alone uses the provider default radius; blank is unset.

Output parameters:

- `cap` (number): The per_page limit that was applied.
- `error` (object): Present when the call failed. Absent on success.
- `notice` (string): Recovery hint when results are empty — echoes applied filters and suggests how to broaden.
- `page` (number): Current page (zero-indexed).
- `per_page` (number): Results per page used.
- `query` (object): Normalized effective selectors and pagination defaults.
- `schools` (array): Matching institutions.
- `shown` (number): Institutions returned on this page.
- `total` (number): Total institutions matching the filters (before pagination).
- `totalCount` (number): Total institutions matching the filters, before pagination.
- `truncated` (boolean): True when school pagination metadata indicates a later page exists.

### `scorecard_get_school` (~206 tokens)

Get School Profile

Institutional profiles for one or more school IDs. Accepts up to 1,000 elements, deduplicates normalized IDs, serves the first 100 distinct IDs, and reports missing and unprocessed IDs separately. Use scorecard_compare_schools for comparisons. Custom fields return requested paths and their JSON values in selected_fields, absent paths in absent_fields, and real identity; default profiles include costs, admissions, outcomes, aid, and completion rates.

Input parameters:

- `fields` (string): Optional comma-separated list of custom field paths from scorecard_list_fields. Overrides the default field set.
- `id` (required): Positive safe integer school ID or up to 1,000 raw elements. First 100 distinct normalized IDs served; discover IDs with scorecard_search_schools.
- `program_limit` (integer): Projected program positions per parent array; values above 100 are clamped to 100.
- `program_offset` (integer): Zero-based position in each projected program parent array.

Output parameters:

- `error` (object): Present when the call failed. Absent on success.
- `missing_ids` (array): Processed distinct IDs with no returned record.
- `notice` (string): Warning when some requested IDs returned no record.
- `schools` (array): Full profiles for the requested school(s).
- `total_found` (number): Number of records returned.
- `total_requested` (number): Number of IDs requested.
- `truncated` (boolean): True when any projected program parent has remaining positions.
- `unprocessed_ids` (array): Distinct IDs beyond the 100-ID serving cap, in caller order.

### `scorecard_get_programs` (~281 tokens)

Get School Programs

Page through field-of-study programs at one school, ranked and filtered by completion-based one-year earnings. Legacy highest-credential earnings remain separate from current one- and four-year completion series, with dictionary provenance. Earnings and debt pool across campuses sharing OPEID6 within CIP/credential; awards are campus-specific. Use scorecard_lookup_cip to find CIP codes by name.

Input parameters:

- `cip_code` (string): Filter to one 4-digit CIP code, dotted or undotted (e.g. "11.07" or "1107" for Computer Science). Returns one row per credential level the school offers in that program.
- `credential_level` (integer): Filter by credential level: 1=undergraduate certificate, 2=associate, 3=bachelor, 4=post-baccalaureate certificate, 5=master, 6=doctoral, 7=first professional, 8=graduate/professional certificate, 99…
- `id` (required): School ID from scorecard_search_schools.
- `limit` (integer): Program rows per response; values above 100 normalize to 100.
- `min_earnings` (number): Minimum completion-based one-year median earnings; no legacy fallback.
- `offset` (integer): Zero-based program row offset after filtering and stable earnings ordering.

Output parameters:

- `error` (object): Present when the call failed. Absent on success.
- `limit` (number): Effective program row limit, at most 100.
- `metric_scope` (object): Metric aggregation scope within CIP and credential.
- `nextOffset` (number|null): Next program row offset, or null when exhausted.
- `notice` (string): Guidance when no programs match or some earnings are unavailable or privacy-suppressed.
- `offset` (number): Effective zero-based program offset.
- `ope6_id` (string|null): Provider OPEID6 group identifier, preserving leading zeros; null when absent.
- `programs` (array): One page of matching programs, stably sorted by completion-based one-year earnings descending, with unavailable current earnings last.
- `provenance` (object): Dictionary cohort, measurement, and dollar provenance for each population.
- `query` (object): Normalized effective school ID and program selectors.
- `school_id` (number): School unit ID.
- `school_name` (string): Institution name.
- `shown` (number): Program rows returned on this page.
- `suppressed_count` (number): Matching programs with confirmed privacy-suppressed legacy highest-credential earnings, before row paging.
- `total` (number): Total matching programs before row pagination.
- `truncated` (boolean): More matching program rows remain.
- `unavailable_count` (number): Matching programs with unavailable legacy highest-credential earnings of unknown cause, before row paging.

### `scorecard_get_earnings` (~186 tokens)

Get School Earnings

Institution-level earnings of federally aided undergraduate entrants working and not enrolled, regardless of completion. Reports medians at 6/8/10 years after entry, 6/10-year percentiles, and non-male/male 6-year medians. For graduate program earnings use scorecard_get_programs. years selects API data-file start years (1996–2025), including files without earnings observations. Per-metric availability and official cohort/measurement/dollar context accompany values; unknown metadata stays absent. No re-inflation is performed.

Input parameters:

- `id` (required): School ID from scorecard_search_schools.
- `years` (array): Optional API data-file start years from 1996–2025 (e.g. [2003, 2011, 2020]); valid files may lack observations. Omit or pass [] for snapshot only.

Output parameters:

- `current` (object): Most recent available earnings snapshot.
- `current_availability` (object): Availability keyed by every supported current earnings metric.
- `current_context` (object): Official latest provenance keyed by metric, independent of returned values.
- `error` (object): Present when the call failed. Absent on success.
- `metric_scope` (object): Earnings, debt and repayment are pooled at OPEID6; completion is campus-specific.
- `ope6_id` (string): Provider OPEID6 identifier, preserving leading zeros.
- `school_id` (number): School unit ID.
- `school_name` (string): Institution name.
- `suppressed` (boolean): True only when every supported current metric has an explicit privacy marker.
- `suppression_note` (string): Explains suppression when suppressed=true.
- `trend` (array): Historical rows by API data-file start year. Present only when nonempty years were supplied.

### `scorecard_search_programs` (~463 tokens)

Search Programs

Find programs across institutions, ranked and filtered by completion-based one-year median earnings within the fetched school page. Legacy highest-credential values remain separate with their own provenance. Earnings and debt pool across campuses sharing OPEID6 within CIP/credential; awards are campus-specific. School page/per_page/total count schools; limit/offset page the matching program rows. Follow next to drain this school page before advancing to the next school page. Use scorecard_lookup_cip to find CIP codes.

Input parameters:

- `cip_code` (string): CIP 4-digit code to search for (e.g. "11.07" for Computer Science). Use scorecard_lookup_cip to find codes.
- `credential_level` (integer): Provider credential selector: 1=undergraduate certificate, 2=associate, 3=bachelor, 4=post-baccalaureate certificate, 5=master, 6=doctoral, 7=first professional, 8=graduate/professional certificate,…
- `limit` (integer): Program rows per response; values above 100 normalize to 100.
- `max_debt` (number): Maximum median cumulative Stafford/Grad PLUS debt across institutions at the same academic level, inclusive; excludes unavailable debt.
- `max_net_price` (number): Maximum average net price at the school.
- `min_earnings` (number): Minimum completion-based one-year median earnings, inclusive, without legacy fallback; filters this school page locally while school totals remain unchanged.
- `offset` (integer): Zero-based row offset within the filtered and sorted school page.
- `ownership` (integer): Restrict to school type: 1=public, 2=private nonprofit, 3=for-profit.
- `page` (integer): Zero-indexed page number.
- `per_page` (integer): Schools per page (max 100); program rows may exceed this count.
- `program_name` (string): Case-insensitive title substring matched within the fetched school page. Ignored when cip_code is provided; use cip_code for upstream program matching.
- `state` (string): Comma-separated two-letter state codes; case and whitespace normalized, blanks unset.

Output parameters:

- `cap` (number): The effective program row limit that was applied.
- `error` (object): Present when the call failed. Absent on success.
- `limit` (number): Effective program row limit, at most 100.
- `metric_scope` (object): Aggregation scope within CIP and credential identity.
- `next`: Continuation using the same selectors and limits; null when exhausted.
- `nextOffset` (number|null): Next row offset on this school page, or null when drained.
- `notice` (string): Recovery hint when no programs match or earnings data is unavailable.
- `offset` (number): Effective zero-based row offset within this school page.
- `page` (number): Current page (zero-indexed).
- `per_page` (number): Results per page used.
- `programs` (array): One page of program rows retaining credential identities, stably sorted by completion-based one-year earnings descending, with unavailable current earnings last.
- `provenance` (object): Dictionary provenance for each distinct program population.
- `query` (object): Normalized effective selectors and pagination defaults.
- `schools_shown` (number): Schools returned on this school page.
- `shown` (number): Program rows returned in this response.
- `suppressed_count` (number): Matching programs with confirmed privacy-suppressed legacy highest-credential earnings, before row paging.
- `total` (number): Total schools matching upstream filters, before pagination and local program filtering.
- `totalCount` (number): Total schools matching upstream filters, before pagination and local program filtering.
- `total_programs` (number): Matching program rows on the fetched school page before row pagination.
- `truncated` (boolean): True when more program rows or a later school page remain.
- `unavailable_count` (number): Matching programs with unavailable legacy highest-credential earnings of unknown cause, before row paging.

### `scorecard_compare_schools` (~128 tokens)

Compare Schools

Side-by-side comparison of the first five distinct normalized school IDs, accepting up to 1,000 raw IDs. Remaining IDs are unprocessed; request them separately. Ordinal competition ranks share ties; shared OPEID6 outcomes and mixed-period price rows are unranked. Topics: costs, admissions, outcomes, aid. Use scorecard_get_school for full profiles.

Input parameters:

- `ids` (array, required): 2–1,000 raw school IDs; first five distinct normalized IDs compared.
- `topic` (string, required): Comparison topic: costs, admissions, outcomes, or aid.

Output parameters:

- `error` (object): Present when the call failed. Absent on success.
- `missing_ids` (array): Processed IDs without records.
- `notice` (string): Warning if some requested IDs returned no record.
- `rows` (array): Comparison rows — one per metric, with per-school values and ranks.
- `schools` (array): Schools in the comparison set, in the same order as the ids input.
- `summary` (string): Brief interpretive summary highlighting the most notable relative differences.
- `topic` (string): The comparison topic used.
- `unprocessed_ids` (array): Distinct normalized IDs beyond the five-school serving cap.

### `scorecard_value_analysis` (~112 tokens)

Value Analysis

Analyze costs, debt, repayment progress, and earnings for one school. Returns debt-to-earnings and net-price-to-annual-earnings ratios alongside the source figures. family_income selects the applicable net-price bracket. Repayment progress is the share of borrowers paying down principal 3 years after entering repayment.

Input parameters:

- `family_income` (number): Annual family income in dollars. When provided, net price is shown for the applicable income bracket.
- `id` (required): School ID from scorecard_search_schools.

Output parameters:

- `applicable_income_bracket` (string): Requested income bracket, retained even when its estimate is unavailable.
- `attendance_basis` (string): Period of the effective attendance cost, selected independently of tuition.
- `attendance_program_year` (number): Reported program-year cost of attendance.
- `cost_of_attendance` (number): Available academic-year attendance cost, otherwise program-year cost.
- `data_notes` (array): Flags for suppressed, missing, or potentially unreliable data fields. Empty when all data is available.
- `debt_to_earnings_ratio` (number): Debt-to-earnings ratio: median_debt / earnings_6yr_median. Values >1 indicate debt exceeds annual earnings.
- `earnings_10yr_median` (number): Median earnings 10 years after entry.
- `earnings_6yr_median` (number): Median earnings 6 years after entry.
- `effective_net_price` (number): Price used in the annual-earnings ratio: available income bracket, otherwise overall net price.
- `effective_tuition` (number): Available academic-year tuition, otherwise program-year tuition.
- `error` (object): Present when the call failed. Absent on success.
- `family_income` (number): Requested annual family income in dollars.
- `graduation_rate` (number): Completion rate at 150% normal time (0–1).
- `list_price` (number): Effective tuition and fees; see tuition_basis for academic-year or program-year period.
- `median_debt` (number): Median debt at graduation (completers).
- `metric_scope` (object): Earnings, debt and repayment are pooled at OPEID6; completion is campus-specific.
- `net_price_basis` (string): Source of the effective price; unavailable means no estimate exists.
- `net_price_for_income` (number): Net price for the provided family income bracket. Omitted when family_income not provided.
- `net_price_overall` (number): Average net price across all income levels.
- `net_price_to_annual_earnings` (number): Net price divided by median annual earnings measured 6 years after entry. Uses the family-income net price when available, otherwise the overall net price.
- `ope6_id` (string): Provider OPEID6 identifier, preserving leading zeros.
- `repayment_progress_3yr` (number): Share of borrowers paying down principal (declining loan balance) 3 years after entering repayment (0–1).
- `school_id` (number): School unit ID.
- `school_name` (string): Institution name.
- `tuition_basis` (string): Period of the effective tuition.
- `tuition_program_year` (number): Reported program-year tuition and fees.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/college-scorecard#diagnostics

## Score history

- 2026-11-05: 86
- 2026-11-04: 86
- 2026-11-03: 85
- 2026-11-02: 85
- 2026-11-01: 85
- 2026-10-31: 84
- 2026-10-30: 84
- 2026-10-29: 83
- 2026-10-28: 83
- 2026-10-27: 82
- 2026-10-26: 82
- 2026-10-25: 81
- 2026-10-24: 81
- 2026-10-23: 80
- 2026-10-22: 80
- 2026-10-21: 80
- 2026-10-20: 79
- 2026-10-19: 79
- 2026-10-18: 78
- 2026-10-17: 78
- 2026-10-16: 77
- 2026-10-15: 77
- 2026-10-14: 76
- 2026-10-13: 76

## Common questions

### What is the io.github.cyanheads/college-scorecard-mcp-server server?

io.github.cyanheads/college-scorecard-mcp-server is listed in the public MCP registry as io.github.cyanheads/college-scorecard-mcp-server. Search, compare, and analyze U.S. college data, costs, earnings, programs, and outcomes. This page covers its hosted endpoint (https://college-scorecard.caseyjhand.com/mcp).

### Is the io.github.cyanheads/college-scorecard-mcp-server server safe to use?

io.github.cyanheads/college-scorecard-mcp-server scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.cyanheads/college-scorecard-mcp-server server expose?

io.github.cyanheads/college-scorecard-mcp-server exposes 9 tools: scorecard_lookup_cip, scorecard_list_fields, scorecard_search_schools, scorecard_get_school, scorecard_get_programs, and 4 more. Their descriptions and schemas cost roughly 2,196 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/college-scorecard-mcp-server server require authentication?

No. We connected to io.github.cyanheads/college-scorecard-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/college-scorecard-mcp-server server still maintained?

io.github.cyanheads/college-scorecard-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://college-scorecard.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/college-scorecard-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/college-scorecard.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/college-scorecard.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-college-scorecard-mcp-server/college-scorecard
