Search, compare, and analyze U.S. college data — costs, earnings, programs, and outcomes.
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.
Side-by-side comparison of 2–5 schools with ordinal competition ranks within the selected set (ties share a rank). Topics: costs (tuition, net price by income bracket, debt), admissions (acceptance rate, SAT/ACT, enrollment), outcomes (completion, earnings, repayment), aid (Pell grants, federal loans, debt, repayment). Use scorecard_get_school for full profiles.
Array of 2–5 school unit IDs to compare.
Comparison topic: costs, admissions, outcomes, or aid.
Side-by-side comparison of 2–5 schools with ordinal competition ranks within the selected set (ties share a rank). Topics: costs (tuition, net price by income bracket, debt), admissions (acceptance rate, SAT/ACT, enrollment), outcomes (completion, earnings, repayment), aid (Pell grants, federal loans, debt, repayment). Use scorecard_get_school for full profiles.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Array of 2–5 school unit IDs to compare. |
| topic* | string | Comparison topic: costs, admissions, outcomes, or aid. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ids",
"topic"
],
"properties": {
"ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*$",
"description": "Base-10 school ID resolving to a positive safe integer; whitespace, leading zeros, plus, decimal, and exponent forms are accepted."
},
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer school ID.",
"exclusiveMinimum": 0
}
],
"description": "School ID from scorecard_search_schools."
},
"maxItems": 5,
"minItems": 2,
"description": "Array of 2–5 school unit IDs to compare."
},
"topic": {
"enum": [
"costs",
"admissions",
"outcomes",
"aid"
],
"type": "string",
"description": "Comparison topic: costs, admissions, outcomes, or aid."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| id* | any | 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*$",
"description": "Base-10 school ID resolving to a positive safe integer; whitespace, leading zeros, plus, decimal, and exponent forms are accepted."
},
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer school ID.",
"exclusiveMinimum": 0
}
],
"description": "School ID from scorecard_search_schools."
},
"years": {
"type": "array",
"items": {
"type": "integer",
"maximum": 2025,
"minimum": 1996,
"description": "Published API data-file start year (1996–2025)."
},
"description": "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."
}
},
"additionalProperties": false
}All field-of-study programs at one school with median earnings 1 year after the highest credential, cumulative Stafford/Grad PLUS debt, and IPEDS awards for each year of the pooled debt cohort. Institution-level 6/8/10-year earnings are available via scorecard_get_earnings. Null or absent earnings have unknown cause; suppressed=true requires an explicit provider privacy marker. Use scorecard_lookup_cip to find CIP codes by name.
| Argument | Type | Description |
|---|---|---|
| id* | any | School ID from scorecard_search_schools. |
| 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. |
| min_earnings | number | Minimum 1-year post-graduation median earnings filter. |
| 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=non-credential. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*$",
"description": "Base-10 school ID resolving to a positive safe integer; whitespace, leading zeros, plus, decimal, and exponent forms are accepted."
},
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer school ID.",
"exclusiveMinimum": 0
}
],
"description": "School ID from scorecard_search_schools."
},
"cip_code": {
"type": "string",
"description": "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."
},
"min_earnings": {
"type": "number",
"description": "Minimum 1-year post-graduation median earnings filter."
},
"credential_level": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "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=non-credential."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| id* | any | Positive safe integer school ID or up to 1,000 raw elements. First 100 distinct normalized IDs served; discover IDs with scorecard_search_schools. |
| fields | string | Optional comma-separated list of custom field paths from scorecard_list_fields. Overrides the default field set. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*$",
"description": "Base-10 school ID resolving to a positive safe integer; whitespace, leading zeros, plus, decimal, and exponent forms are accepted."
},
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer school ID.",
"exclusiveMinimum": 0
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*$",
"description": "Base-10 school ID resolving to a positive safe integer; whitespace, leading zeros, plus, decimal, and exponent forms are accepted."
},
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer school ID.",
"exclusiveMinimum": 0
}
],
"description": "School ID from scorecard_search_schools."
},
"maxItems": 1000,
"description": "Up to 1,000 elements; first 100 distinct IDs served, excess reported separately."
}
],
"description": "Positive safe integer school ID or up to 1,000 raw elements. First 100 distinct normalized IDs served; discover IDs with scorecard_search_schools."
},
"fields": {
"type": "string",
"description": "Optional comma-separated list of custom field paths from scorecard_list_fields. Overrides the default field set."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Requested limit; serving cap 100, hard ceiling 1,000. |
| query* | string | Keyword to search the field catalog (e.g. "tuition", "earnings", "admissions", "debt"). Matches against field paths, descriptions, and category names. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 30,
"maximum": 1000,
"minimum": 1,
"description": "Requested limit; serving cap 100, hard ceiling 1,000."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Keyword to search the field catalog (e.g. \"tuition\", \"earnings\", \"admissions\", \"debt\"). Matches against field paths, descriptions, and category names."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Requested limit; serving cap 50, hard ceiling 1,000. |
| query* | string | Search term — program name keyword (e.g. "computer science", "nursing", "business"). Matches against CIP titles and family names. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 1000,
"minimum": 1,
"description": "Requested limit; serving cap 50, hard ceiling 1,000."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Search term — program name keyword (e.g. \"computer science\", \"nursing\", \"business\"). Matches against CIP titles and family names."
}
},
"additionalProperties": false
}Find programs by CIP code across institutions, ranked by median earnings within the fetched school page. Accepts school-side filters (state, ownership, max cost). Minimum earnings is applied locally; totals and pagination count schools before local program filtering. Use scorecard_lookup_cip to convert program names to CIP codes. Returns school names and IDs alongside program earnings, cumulative Stafford/Grad PLUS debt, and IPEDS awards for follow-up calls to scorecard_get_school or scorecard_get_programs.
| Argument | Type | Description |
|---|---|---|
| page | integer | Zero-indexed page number. |
| state | string | Comma-separated two-letter state codes; case and whitespace normalized, blanks unset. |
| cip_code | string | CIP 4-digit code to search for (e.g. "11.07" for Computer Science). Use scorecard_lookup_cip to find codes. |
| max_debt | number | Maximum median cumulative Stafford/Grad PLUS debt across institutions at the same academic level, inclusive; excludes unavailable debt. |
| per_page | integer | Schools per page (max 100); program rows may exceed this count. |
| ownership | integer | Restrict to school type: 1=public, 2=private nonprofit, 3=for-profit. |
| min_earnings |
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 program rankings. 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=non-degree, 1=certificate, 2=associate, 3=bachelor, 4=graduate.
| Argument | Type | Description |
|---|---|---|
| zip | string | Five-digit U.S. ZIP or ZIP+4. Alone uses the provider default radius; blank is unset. |
| page | integer | Zero-indexed page number for pagination. |
| 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. |
| query | string | School name search — partial or full name; all words must appear. |
| state | string | Comma-separated two-letter state codes; case and whitespace normalized, blanks unset. |
| cip_code | string | Filter to schools offering this CIP 4-digit program code (e.g. "11.07"). Use scorecard_lookup_cip to find codes. |
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.
| Argument | Type | Description |
|---|---|---|
| id* | any | School ID from scorecard_search_schools. |
| family_income | number | Annual family income in dollars. When provided, net price is shown for the applicable income bracket. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*$",
"description": "Base-10 school ID resolving to a positive safe integer; whitespace, leading zeros, plus, decimal, and exponent forms are accepted."
},
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe integer school ID.",
"exclusiveMinimum": 0
}
],
"description": "School ID from scorecard_search_schools."
},
"family_income": {
"type": "number",
"description": "Annual family income in dollars. When provided, net price is shown for the applicable income bracket."
}
},
"additionalProperties": false
}| number |
| Minimum 1-year median earnings, inclusive. Filters this school page locally and excludes unavailable earnings; school totals are unchanged. |
| 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. |
| max_net_price | number | Maximum average net price at the school. |
| 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, 99=non-credential; other integer levels may return no matches. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-indexed page number."
},
"state": {
"type": "string",
"description": "Comma-separated two-letter state codes; case and whitespace normalized, blanks unset."
},
"cip_code": {
"type": "string",
"description": "CIP 4-digit code to search for (e.g. \"11.07\" for Computer Science). Use scorecard_lookup_cip to find codes."
},
"max_debt": {
"type": "number",
"description": "Maximum median cumulative Stafford/Grad PLUS debt across institutions at the same academic level, inclusive; excludes unavailable debt."
},
"per_page": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Schools per page (max 100); program rows may exceed this count."
},
"ownership": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "Restrict to school type: 1=public, 2=private nonprofit, 3=for-profit."
},
"min_earnings": {
"type": "number",
"description": "Minimum 1-year median earnings, inclusive. Filters this school page locally and excludes unavailable earnings; school totals are unchanged."
},
"program_name": {
"type": "string",
"description": "Case-insensitive title substring matched within the fetched school page. Ignored when cip_code is provided; use cip_code for upstream program matching."
},
"max_net_price": {
"type": "number",
"description": "Maximum average net price at the school."
},
"credential_level": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "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, 99=non-credential; other integer levels may return no matches."
}
},
"additionalProperties": false
}| 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. |
| per_page | integer | Results per page (max 100). |
| ownership | integer | Control type: 1=public, 2=private nonprofit, 3=private for-profit. |
| size_range | object | Undergraduate enrollment size range. Omit for no size filter. |
| women_only | boolean | True selects women-only institutions; false selects institutions explicitly marked not women-only. Omit to include unknown values. |
| degree_level | integer | Predominant degree: 0=non-degree/certificate, 1=certificate, 2=associate, 3=bachelor, 4=graduate. |
| acceptance_rate_range | object | Acceptance rate range as decimals (0–1). Omit for no filter. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"zip": {
"type": "string",
"description": "Five-digit U.S. ZIP or ZIP+4. Alone uses the provider default radius; blank is unset."
},
"page": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-indexed page number for pagination."
},
"sort": {
"type": "string",
"description": "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."
},
"query": {
"type": "string",
"description": "School name search — partial or full name; all words must appear."
},
"state": {
"type": "string",
"description": "Comma-separated two-letter state codes; case and whitespace normalized, blanks unset."
},
"cip_code": {
"type": "string",
"description": "Filter to schools offering this CIP 4-digit program code (e.g. \"11.07\"). Use scorecard_lookup_cip to find codes."
},
"distance": {
"type": "string",
"description": "Nonnegative radius: bare miles, mi, or km, including decimals. Requires meaningful zip."
},
"men_only": {
"type": "boolean",
"description": "True selects men-only institutions; false selects institutions explicitly marked not men-only. Omit to include unknown values."
},
"per_page": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page (max 100)."
},
"ownership": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "Control type: 1=public, 2=private nonprofit, 3=private for-profit."
},
"size_range": {
"type": "object",
"required": [
"min",
"max"
],
"properties": {
"max": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Maximum enrollment size."
},
"min": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum enrollment size."
}
},
"description": "Undergraduate enrollment size range. Omit for no size filter."
},
"women_only": {
"type": "boolean",
"description": "True selects women-only institutions; false selects institutions explicitly marked not women-only. Omit to include unknown values."
},
"degree_level": {
"type": "integer",
"maximum": 4,
"minimum": 0,
"description": "Predominant degree: 0=non-degree/certificate, 1=certificate, 2=associate, 3=bachelor, 4=graduate."
},
"acceptance_rate_range": {
"type": "object",
"required": [
"min",
"max"
],
"properties": {
"max": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Maximum acceptance rate as a decimal (e.g. 0.9 for 90%)."
},
"min": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Minimum acceptance rate as a decimal (e.g. 0.1 for 10%)."
}
},
"description": "Acceptance rate range as decimals (0–1). Omit for no filter."
}
},
"additionalProperties": false
}