edu.college-scorecard
Search US colleges + universities via the Department of Education College Scorecard API. Filter by free-text name (q), OPE/IPEDS school id, state, city, zip, ownership (1=Public | 2=Private nonprofit | 3=Private for-profit), predominant degree level (0=Not classified | 1=Certificate | 2=Associate | 3=Bachelor | 4=Graduate), enrollment range. Returns a curated field set per school: identity (name, alias, URL, location), classification (Carnegie, locale, religious affiliation, minority-serving designation), latest admissions (admit rate, SAT/ACT midpoints), cost (in-state + out-of-state tuition, total cost of attendance), aid (median debt, federal-loan rate, Pell rate), completion rate, 10-year median earnings, repayment rate, lat/lon. Every accredited US institution. Use perPage + page for pagination; page is 0-indexed.
/api/edu/college-scorecardPAYMENT-SIGNATURE.Parameters
| Name | Type | Description |
|---|---|---|
q | string | min 1 chars · max 120 chars |
schoolId | integer | min 1 |
state | string | min 2 chars · max 2 chars · match ^[A-Za-z]{2}$ |
city | string | min 2 chars · max 80 chars |
zip | string | match ^\d{5}$ |
ownership | integer | |
degreePredominant | integer | |
minEnrollment | integer | min 0 |
maxEnrollment | integer | min 1 |
perPage | integer | min 1 · max 100 |
page | integer | min 0 |
fields | string | max 2000 chars |
Code samples
# 1. Probe with no auth → 402 envelope with PaymentRequirements curl -sS 'https://2s.io/api/edu/college-scorecard?q=example&schoolId=1&state=xx&city=xx&zip=12345&ownership=1°reePredominant=1&minEnrollment=0&maxEnrollment=1&perPage=20&page=0&fields=example' # 2. Sign + retry with PAYMENT-SIGNATURE: curl -sS 'https://2s.io/api/edu/college-scorecard?q=example&schoolId=1&state=xx&city=xx&zip=12345&ownership=1°reePredominant=1&minEnrollment=0&maxEnrollment=1&perPage=20&page=0&fields=example' \ -H 'PAYMENT-SIGNATURE: <base64-json-payload>' # Or use the canonical runner (handles probe → sign → retry): # EVM_PRIVATE_KEY=0x... node --env-file=.env.local \ # --experimental-strip-types scripts/x402-pay.ts \ # 'https://2s.io/api/edu/college-scorecard?q=example&schoolId=1&state=xx&city=xx&zip=12345&ownership=1°reePredominant=1&minEnrollment=0&maxEnrollment=1&perPage=20&page=0&fields=example'
import { TwoS } from '@2sio/sdk'
const client = new TwoS({
privateKey: process.env.EVM_PRIVATE_KEY as `0x${string}`,
})
const result = await client.edu.collegeScorecard({
"q": "example",
"schoolId": 1,
"state": "xx",
"city": "xx",
"zip": "12345",
"ownership": 1,
"degreePredominant": 1,
"minEnrollment": 0,
"maxEnrollment": 1,
"perPage": 20,
"page": 0,
"fields": "example"
})
console.log('endpoint:', result.endpoint)
console.log('cost:', result.costUsd, 'USDC')
console.log('tx:', result.settlement?.txHash)
console.log('data:', result.data)import os
from twosio import TwoS
client = TwoS(private_key=os.environ["EVM_PRIVATE_KEY"])
result = client.edu.college_scorecard(q="example", schoolId=1, state="xx", city="xx", zip="12345", ownership=1, degreePredominant=1, minEnrollment=0, maxEnrollment=1, perPage=20, page=0, fields="example")
print("endpoint:", result.endpoint)
print("cost:", result.cost_usd, "USDC")
print("tx:", (result.settlement or {}).get("tx_hash"))
print("data:", result.data)// 1. Add @2sio/mcp to your MCP host config (Claude Desktop example below).
// EVM_PRIVATE_KEY funds x402 payments per call.
// claude_desktop_config.json
{
"mcpServers": {
"2sio": {
"command": "npx",
"args": ["-y", "@2sio/mcp"],
"env": { "EVM_PRIVATE_KEY": "0x..." }
}
}
}
// 2. Once the server is running, agents call this tool via standard MCP:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "edu.college-scorecard",
"arguments": {
"q": "example",
"schoolId": 1,
"state": "xx",
"city": "xx",
"zip": "12345",
"ownership": 1,
"degreePredominant": 1,
"minEnrollment": 0,
"maxEnrollment": 1,
"perPage": 20,
"page": 0,
"fields": "example"
}
}
}Discovery
- /api/directory — full catalog of every endpoint
- /openapi.json — OpenAPI 3.1 spec (per-op x-payment-info, x402Payment security)
- /.well-known/x402 — machine-readable service descriptor for x402-aware crawlers
- /.well-known/mcp/server-card.json — MCP SEP-1649 server card
- /llms.txt — plain-text manifest for LLM ingestion