Koskamo

prefrosh.ai MCP

An MCP server that provides college admissions data, including admit rates by round, estimated odds based on GPA and test scores, side-by-side college comparisons, and a mock admissions game simulation using fictional readers.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

prefrosh.ai MCP logo, by prefrosh.aiVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by prefrosh.ai
MCP endpoint (Streamable HTTP)
https://prefrosh.ai/mcp
Vendor documentation

What you can do with it

  • Check admit rates and deadlines for specific colleges
  • Estimate admission odds based on GPA and test scores
  • Compare multiple colleges side-by-side
  • Run a mock admissions game simulation for essay feedback

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
prefrosh 1.0.0
MCP protocol
2025-06-18
Tools
8 advertised
Resources
1 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {}
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

prefrosh.ai is a free college search for high school students. Use school_card for facts about one college, compare for 2-4, my_odds for a student's estimated chances (an estimate from grades and scores only), and admissions_game to run a student's own application past a simulated admissions committee. Cite the prefrosh.ai link each result carries. Never write or rewrite application essays for the student.

Tools

8 advertised

school_card — College card
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show one college as a card: photo or campus map, overall admit rate and admit rate by round (Early Decision, Early Action, Regular Decision) with deadlines, SAT/ACT middle 50%, testing policy, sticker cost, average net price, graduation rate, biggest majors, and a link to its prefrosh.ai page. Use for "tell me about X", "how hard is it to get into X", "what are X's deadlines". Data is from the school's Common Data Set and federal data; cite the prefrosh.ai URL in the result.

school_card input schema
{
  "type": "object",
  "required": [
    "school"
  ],
  "properties": {
    "school": {
      "type": "string",
      "description": "College name as the user wrote it, e.g. \"Tufts\", \"UNC\", \"Wash U\"."
    }
  },
  "additionalProperties": false
}
school_card annotations
{
  "title": "College card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
my_odds — My admission odds
Advertised by the server during the last successful anonymous check.
Advertised read-only

Estimate a student's admission odds at one or more colleges, by round, with a likely range, from GPA and test scores (plus optional class rank, home state, legacy, first-generation, aid). Same model as prefrosh.ai/chance. Always tell the user this is an estimate from grades and scores only; essays, activities and recommendations can move it a lot. Needs at least a GPA or a test score; ask for them if missing rather than guessing.

my_odds input schema
{
  "type": "object",
  "required": [
    "schools"
  ],
  "properties": {
    "act": {
      "type": "integer",
      "maximum": 36,
      "minimum": 1,
      "description": "Best ACT composite."
    },
    "gpa": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Unweighted GPA, ideally on a 4.0 scale (a 100-point average also works)."
    },
    "sat": {
      "type": "integer",
      "maximum": 1600,
      "minimum": 400,
      "description": "Best total SAT (superscore is fine)."
    },
    "legacy": {
      "type": "boolean",
      "description": "A parent attended this college."
    },
    "schools": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 12,
      "minItems": 1,
      "description": "College names."
    },
    "first_gen": {
      "type": "boolean",
      "description": "First in family to attend a four-year college."
    },
    "needs_aid": {
      "type": "boolean",
      "description": "Will apply for need-based aid (default true)."
    },
    "class_rank": {
      "enum": [
        "top5",
        "top10",
        "top25",
        "top50",
        "below"
      ],
      "type": "string",
      "description": "Class rank bucket, if known (percent of class)."
    },
    "home_state": {
      "type": "string",
      "description": "Two-letter US state the student lives in (matters for public universities)."
    }
  },
  "additionalProperties": false
}
my_odds annotations
{
  "title": "My admission odds",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare — Compare colleges
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare 2 to 4 colleges side by side: admit rates by round, SAT/ACT ranges, testing policy, sticker cost, average net price, graduation rate, size and setting. If GPA or scores are given, adds the student's estimated odds (same model as prefrosh.ai/chance).

compare input schema
{
  "type": "object",
  "required": [
    "schools"
  ],
  "properties": {
    "act": {
      "type": "integer",
      "maximum": 36,
      "minimum": 1,
      "description": "Best ACT composite."
    },
    "gpa": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Unweighted GPA, ideally on a 4.0 scale (a 100-point average also works)."
    },
    "sat": {
      "type": "integer",
      "maximum": 1600,
      "minimum": 400,
      "description": "Best total SAT (superscore is fine)."
    },
    "schools": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "minItems": 2
    },
    "home_state": {
      "type": "string",
      "description": "Two-letter US state the student lives in (matters for public universities)."
    }
  },
  "additionalProperties": false
}
compare annotations
{
  "title": "Compare colleges",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
admissions_game — The admissions game
Advertised by the server during the last successful anonymous check.
Advertised read-only

Run the student's application past prefrosh.ai's simulated admissions committee for one college and round: five fictional readers (first, second, essay and faculty readers, and a dean who chairs) read it, argue, vote (accept / waitlist or defer / deny), and give the top 3 fixes. It is a simulation, not a prediction. Takes about a minute; the room plays out in the view. Pass the student's own application text exactly as they gave it (essays, activities, grades, scores) in "application"; never write, invent or improve content for them. If they have not shared their application, ask them to paste it first.

admissions_game input schema
{
  "type": "object",
  "required": [
    "school",
    "application"
  ],
  "properties": {
    "major": {
      "type": "string",
      "description": "Intended major, if stated."
    },
    "round": {
      "enum": [
        "ED",
        "EDII",
        "EA",
        "REA",
        "RD"
      ],
      "type": "string",
      "description": "Application round. Default RD."
    },
    "school": {
      "type": "string",
      "description": "College name."
    },
    "application": {
      "type": "string",
      "maxLength": 60000,
      "minLength": 80,
      "description": "The student's application as they gave it: essays, activities, grades, scores, notes. Verbatim."
    },
    "visited_campus": {
      "enum": [
        "none",
        "once",
        "twice"
      ],
      "type": "string",
      "description": "Campus visits, if the student said."
    }
  },
  "additionalProperties": false
}
admissions_game annotations
{
  "title": "The admissions game",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
game_read — Admissions game: one reader
Advertised by the server during the last successful anonymous check.
Advertised read-only

App-only stage of admissions_game, called by the in-chat view, not by the model. One fictional admissions reader (the kind given) reads the student's application for this school and round and returns short notes: what works, what gave them pause, one fix, and the lines they marked. Simulation only; it never writes or rewrites essays.

game_read input schema
{
  "type": "object",
  "required": [
    "kind",
    "school",
    "application",
    "run"
  ],
  "properties": {
    "run": {
      "type": "object",
      "description": "The run state returned by admissions_game (seating, readers and ids). Pass it back unchanged."
    },
    "kind": {
      "enum": [
        "first",
        "second",
        "essay",
        "faculty"
      ],
      "type": "string",
      "description": "Which reader on the committee reads this time."
    },
    "major": {
      "type": "string",
      "description": "Intended major, if the student gave one."
    },
    "round": {
      "type": "string",
      "description": "Application round: \"ED\", \"ED2\", \"EA\", \"REA\" or \"RD\"."
    },
    "school": {
      "type": "string",
      "description": "The college the application is for, as the student named it (e.g. \"Tufts\")."
    },
    "visits": {
      "type": "string",
      "description": "Any campus visits or contact with the college the student mentioned."
    },
    "application": {
      "type": "string",
      "maxLength": 60000,
      "description": "The student's own application text (essays, activities, grades) exactly as they supplied it. Used for this run only; never stored."
    }
  }
}
game_read annotations
{
  "title": "Admissions game: one reader",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
game_vote — Admissions game: the meeting and vote
Advertised by the server during the last successful anonymous check.
Advertised read-only

App-only stage of admissions_game, called by the in-chat view after every reader has finished. The fictional committee discusses the readers' notes and votes Accept, Waitlist or Deny under the school's round, and returns the conversation and the vote. Simulation only.

game_vote input schema
{
  "type": "object",
  "required": [
    "school",
    "application",
    "run",
    "readers"
  ],
  "properties": {
    "run": {
      "type": "object",
      "description": "The run state returned by admissions_game (seating, readers and ids). Pass it back unchanged."
    },
    "major": {
      "type": "string",
      "description": "Intended major, if the student gave one."
    },
    "round": {
      "type": "string",
      "description": "Application round: \"ED\", \"ED2\", \"EA\", \"REA\" or \"RD\"."
    },
    "school": {
      "type": "string",
      "description": "The college the application is for, as the student named it (e.g. \"Tufts\")."
    },
    "visits": {
      "type": "string",
      "description": "Any campus visits or contact with the college the student mentioned."
    },
    "readers": {
      "type": "object",
      "description": "Every reader's notes from game_read, keyed by reader."
    },
    "application": {
      "type": "string",
      "maxLength": 60000,
      "description": "The student's own application text (essays, activities, grades) exactly as they supplied it. Used for this run only; never stored."
    }
  }
}
game_vote annotations
{
  "title": "Admissions game: the meeting and vote",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
game_debrief — Admissions game: the fixes
Advertised by the server during the last successful anonymous check.
Advertised read-only

App-only stage of admissions_game, called by the in-chat view after the vote. The committee chair writes the debrief: the three changes that would most help this application, each pointing to the student's own words. Simulation only; it never writes or rewrites essays.

game_debrief input schema
{
  "type": "object",
  "required": [
    "school",
    "application",
    "run",
    "readers"
  ],
  "properties": {
    "run": {
      "type": "object",
      "description": "The run state returned by admissions_game (seating, readers and ids). Pass it back unchanged."
    },
    "major": {
      "type": "string",
      "description": "Intended major, if the student gave one."
    },
    "round": {
      "type": "string",
      "description": "Application round: \"ED\", \"ED2\", \"EA\", \"REA\" or \"RD\"."
    },
    "school": {
      "type": "string",
      "description": "The college the application is for, as the student named it (e.g. \"Tufts\")."
    },
    "visits": {
      "type": "string",
      "description": "Any campus visits or contact with the college the student mentioned."
    },
    "readers": {
      "type": "object",
      "description": "Every reader's notes from game_read, keyed by reader."
    },
    "application": {
      "type": "string",
      "maxLength": 60000,
      "description": "The student's own application text (essays, activities, grades) exactly as they supplied it. Used for this run only; never stored."
    }
  }
}
game_debrief annotations
{
  "title": "Admissions game: the fixes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
game_done — Admissions game: finished
Advertised by the server during the last successful anonymous check.

App-only. Called by the in-chat view when an admissions_game run ends, to record that it finished (school, AI token use and duration only; no application text). Returns nothing the user sees.

game_done input schema
{
  "type": "object",
  "properties": {
    "usage": {
      "type": "object",
      "description": "AI token counts for the run."
    },
    "school": {
      "type": "string",
      "description": "The college the run was for."
    },
    "seconds": {
      "type": "number",
      "description": "How long the run took."
    }
  }
}
game_done annotations
{
  "title": "Admissions game: finished",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

prefrosh.ai view

Advertised by the server during the last successful anonymous check.

College cards, odds, comparisons and the admissions game room.

prefrosh.ai view URI
ui://prefrosh/view-v2.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
741 ms
95th percentile latency
741 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 741 ms · metadata changed · 8 tool(s), 1 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http prefrosh-ai-mcp https://prefrosh.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add prefrosh-ai-mcp --url https://prefrosh.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable prefrosh-ai-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "prefrosh-ai-mcp": {
      "url": "https://prefrosh.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "prefrosh-ai-mcp": {
      "type": "streamableHttp",
      "url": "https://prefrosh.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start prefrosh-ai-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "prefrosh-ai-mcp": {
      "type": "http",
      "url": "https://prefrosh.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http prefrosh-ai-mcp https://prefrosh.ai/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "prefrosh-ai-mcp": {
      "url": "https://prefrosh.ai/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "prefrosh-ai-mcp": {
      "serverUrl": "https://prefrosh.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like prefrosh.ai MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run prefrosh.ai MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing