@cyanheads/college-scorecard-mcp-server 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/AGENTS.md +6 -6
  2. package/CLAUDE.md +6 -6
  3. package/Dockerfile +6 -3
  4. package/README.md +37 -10
  5. package/changelog/0.3.x/0.3.0.md +31 -0
  6. package/dist/data/field-catalog.js +1 -1
  7. package/dist/data/field-catalog.js.map +1 -1
  8. package/dist/mcp-server/resources/definitions/programs.resource.d.ts +73 -1
  9. package/dist/mcp-server/resources/definitions/programs.resource.d.ts.map +1 -1
  10. package/dist/mcp-server/resources/definitions/programs.resource.js +89 -3
  11. package/dist/mcp-server/resources/definitions/programs.resource.js.map +1 -1
  12. package/dist/mcp-server/resources/definitions/school.resource.d.ts +73 -1
  13. package/dist/mcp-server/resources/definitions/school.resource.d.ts.map +1 -1
  14. package/dist/mcp-server/resources/definitions/school.resource.js +89 -3
  15. package/dist/mcp-server/resources/definitions/school.resource.js.map +1 -1
  16. package/dist/mcp-server/tools/definitions/compare-schools.tool.d.ts +61 -1
  17. package/dist/mcp-server/tools/definitions/compare-schools.tool.d.ts.map +1 -1
  18. package/dist/mcp-server/tools/definitions/compare-schools.tool.js +74 -11
  19. package/dist/mcp-server/tools/definitions/compare-schools.tool.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/get-earnings.tool.d.ts +61 -1
  21. package/dist/mcp-server/tools/definitions/get-earnings.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/get-earnings.tool.js +73 -7
  23. package/dist/mcp-server/tools/definitions/get-earnings.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/get-programs.tool.d.ts +62 -6
  25. package/dist/mcp-server/tools/definitions/get-programs.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/get-programs.tool.js +84 -16
  27. package/dist/mcp-server/tools/definitions/get-programs.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/get-school.tool.d.ts +67 -3
  29. package/dist/mcp-server/tools/definitions/get-school.tool.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/definitions/get-school.tool.js +327 -177
  31. package/dist/mcp-server/tools/definitions/get-school.tool.js.map +1 -1
  32. package/dist/mcp-server/tools/definitions/list-fields.tool.d.ts +7 -7
  33. package/dist/mcp-server/tools/definitions/list-fields.tool.d.ts.map +1 -1
  34. package/dist/mcp-server/tools/definitions/list-fields.tool.js +28 -23
  35. package/dist/mcp-server/tools/definitions/list-fields.tool.js.map +1 -1
  36. package/dist/mcp-server/tools/definitions/lookup-cip.tool.d.ts +7 -7
  37. package/dist/mcp-server/tools/definitions/lookup-cip.tool.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/definitions/lookup-cip.tool.js +27 -22
  39. package/dist/mcp-server/tools/definitions/lookup-cip.tool.js.map +1 -1
  40. package/dist/mcp-server/tools/definitions/search-programs.tool.d.ts +62 -1
  41. package/dist/mcp-server/tools/definitions/search-programs.tool.d.ts.map +1 -1
  42. package/dist/mcp-server/tools/definitions/search-programs.tool.js +94 -4
  43. package/dist/mcp-server/tools/definitions/search-programs.tool.js.map +1 -1
  44. package/dist/mcp-server/tools/definitions/search-schools.tool.d.ts +62 -1
  45. package/dist/mcp-server/tools/definitions/search-schools.tool.d.ts.map +1 -1
  46. package/dist/mcp-server/tools/definitions/search-schools.tool.js +107 -9
  47. package/dist/mcp-server/tools/definitions/search-schools.tool.js.map +1 -1
  48. package/dist/mcp-server/tools/definitions/value-analysis.tool.d.ts +61 -1
  49. package/dist/mcp-server/tools/definitions/value-analysis.tool.d.ts.map +1 -1
  50. package/dist/mcp-server/tools/definitions/value-analysis.tool.js +73 -7
  51. package/dist/mcp-server/tools/definitions/value-analysis.tool.js.map +1 -1
  52. package/dist/services/scorecard/input-normalization.d.ts +21 -0
  53. package/dist/services/scorecard/input-normalization.d.ts.map +1 -0
  54. package/dist/services/scorecard/input-normalization.js +92 -0
  55. package/dist/services/scorecard/input-normalization.js.map +1 -0
  56. package/dist/services/scorecard/scorecard-service.d.ts +5 -4
  57. package/dist/services/scorecard/scorecard-service.d.ts.map +1 -1
  58. package/dist/services/scorecard/scorecard-service.js +95 -38
  59. package/dist/services/scorecard/scorecard-service.js.map +1 -1
  60. package/dist/services/scorecard/types.d.ts +9 -9
  61. package/dist/services/scorecard/types.d.ts.map +1 -1
  62. package/package.json +9 -9
  63. package/server.json +16 -24
package/AGENTS.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** college-scorecard-mcp-server
4
- **Version:** 0.2.0
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.10`
4
+ **Version:** 0.3.0
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.15`
6
6
  **Engines:** Bun ≥1.4.0, Node ≥24.0.0
7
- **MCP SDK:** `@modelcontextprotocol/server` ^2.1.0
7
+ **MCP SDK:** `@modelcontextprotocol/server` ^2.3.1
8
8
  **Zod:** ^4.6.5
9
9
 
10
10
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
@@ -33,7 +33,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
33
33
  ## Core Rules
34
34
 
35
35
  - **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. Plain `Error` is fine; the framework catches, classifies, and formats. Use error factories (`notFound()`, `validationError()`, etc.) when the error code matters.
36
- - **Use `ctx.log`** for request-scoped logging. No `console` calls. Dual-sink: Pino **and** `notifications/message` to the client — treat it as client-visible.
36
+ - **Use `ctx.log`** for request-scoped logging. No `console` calls.
37
37
  - **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
38
38
  - **Need input the caller didn't supply?** `return ctx.requestInput(...)` and read `ctx.inputs` when the handler is re-entered. Never `await` for user input mid-handler.
39
39
  - **Secrets in env vars only** — never hardcoded.
@@ -360,7 +360,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
360
360
 
361
361
  ## Bundling
362
362
 
363
- `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips two classes of `node_modules/**` content that root-anchored `.mcpbignore` patterns cannot reach: dependency-shipped agent docs (`framework-skills/`, `skills/`, `.claude/`, `.agents/`, `SKILL.md`) and platform-specific native bindings, which would otherwise lock the bundle to the platform it was packed on. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
363
+ `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips two classes of `node_modules/**` content that root-anchored `.mcpbignore` patterns cannot reach: dependency-shipped agent docs (`framework-skills/`, `skills/`, `.claude/`, `.agents/`, `SKILL.md`) and platform-specific native bindings, which would otherwise lock the bundle to the platform it was packed on. A server using DataCanvas therefore ships a portable bundle without the DuckDB native — `@duckdb/node-api` is an optional peer loaded lazily, so canvas tools report an actionable install hint and every other tool works normally. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
364
364
 
365
365
  **Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match, that every `user_config` option is wired into `mcp_config.env` as `"X": "${user_config.X}"` (the host substitutes nothing else — `"${X}"` reaches the server as that literal string), and that an optional string option carries `"default": ""`.
366
366
 
@@ -397,7 +397,7 @@ security: false # optional — true ONLY for a source
397
397
 
398
398
  ## Publishing
399
399
 
400
- **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the changelog entry plus a gates section); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's brief may run a given release as `gated` instead — a `release-pr-review` pass on the open PR before `release-and-publish`. **Never merge through the GitHub UI or `gh pr merge`**: squash and rebase-merge are disabled in the repo settings because both rewrite the stack (rebase-merge also strips the SSH signatures), and a merge commit breaks the linear history.
400
+ **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the release digest: theme line, `## Changes`, `## Gates`, changelog link last); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's brief may run a given release as `gated` instead — a `release-pr-review` pass on the open PR before `release-and-publish`. **Never merge through the GitHub UI or `gh pr merge`**: squash and rebase-merge are disabled in the repo settings because both rewrite the stack (rebase-merge also strips the SSH signatures), and a merge commit breaks the linear history.
401
401
 
402
402
  ---
403
403
 
package/CLAUDE.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** college-scorecard-mcp-server
4
- **Version:** 0.2.0
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.10`
4
+ **Version:** 0.3.0
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.15`
6
6
  **Engines:** Bun ≥1.4.0, Node ≥24.0.0
7
- **MCP SDK:** `@modelcontextprotocol/server` ^2.1.0
7
+ **MCP SDK:** `@modelcontextprotocol/server` ^2.3.1
8
8
  **Zod:** ^4.6.5
9
9
 
10
10
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
@@ -33,7 +33,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
33
33
  ## Core Rules
34
34
 
35
35
  - **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. Plain `Error` is fine; the framework catches, classifies, and formats. Use error factories (`notFound()`, `validationError()`, etc.) when the error code matters.
36
- - **Use `ctx.log`** for request-scoped logging. No `console` calls. Dual-sink: Pino **and** `notifications/message` to the client — treat it as client-visible.
36
+ - **Use `ctx.log`** for request-scoped logging. No `console` calls.
37
37
  - **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
38
38
  - **Need input the caller didn't supply?** `return ctx.requestInput(...)` and read `ctx.inputs` when the handler is re-entered. Never `await` for user input mid-handler.
39
39
  - **Secrets in env vars only** — never hardcoded.
@@ -360,7 +360,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
360
360
 
361
361
  ## Bundling
362
362
 
363
- `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips two classes of `node_modules/**` content that root-anchored `.mcpbignore` patterns cannot reach: dependency-shipped agent docs (`framework-skills/`, `skills/`, `.claude/`, `.agents/`, `SKILL.md`) and platform-specific native bindings, which would otherwise lock the bundle to the platform it was packed on. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
363
+ `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips two classes of `node_modules/**` content that root-anchored `.mcpbignore` patterns cannot reach: dependency-shipped agent docs (`framework-skills/`, `skills/`, `.claude/`, `.agents/`, `SKILL.md`) and platform-specific native bindings, which would otherwise lock the bundle to the platform it was packed on. A server using DataCanvas therefore ships a portable bundle without the DuckDB native — `@duckdb/node-api` is an optional peer loaded lazily, so canvas tools report an actionable install hint and every other tool works normally. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
364
364
 
365
365
  **Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match, that every `user_config` option is wired into `mcp_config.env` as `"X": "${user_config.X}"` (the host substitutes nothing else — `"${X}"` reaches the server as that literal string), and that an optional string option carries `"default": ""`.
366
366
 
@@ -397,7 +397,7 @@ security: false # optional — true ONLY for a source
397
397
 
398
398
  ## Publishing
399
399
 
400
- **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the changelog entry plus a gates section); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's brief may run a given release as `gated` instead — a `release-pr-review` pass on the open PR before `release-and-publish`. **Never merge through the GitHub UI or `gh pr merge`**: squash and rebase-merge are disabled in the repo settings because both rewrite the stack (rebase-merge also strips the SSH signatures), and a merge commit breaks the linear history.
400
+ **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the release digest: theme line, `## Changes`, `## Gates`, changelog link last); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's brief may run a given release as `gated` instead — a `release-pr-review` pass on the open PR before `release-and-publish`. **Never merge through the GitHub UI or `gh pr merge`**: squash and rebase-merge are disabled in the repo settings because both rewrite the stack (rebase-merge also strips the SSH signatures), and a merge commit breaks the linear history.
401
401
 
402
402
  ---
403
403
 
package/Dockerfile CHANGED
@@ -14,7 +14,7 @@
14
14
  # output. A stage that compiles a native addon needs the target-arch toolchain
15
15
  # and cannot cross-compile this way — drop the flag there.
16
16
  # ==============================================================================
17
- FROM --platform=$BUILDPLATFORM oven/bun:1.4.2 AS build
17
+ FROM --platform=$BUILDPLATFORM oven/bun:1.4.3 AS build
18
18
 
19
19
  WORKDIR /usr/src/app
20
20
 
@@ -41,7 +41,7 @@ RUN bun run build
41
41
  # Run the scanner and OTel installer natively, cross-installing production
42
42
  # dependencies for the target architecture. Only node_modules leaves this stage.
43
43
  # ==============================================================================
44
- FROM --platform=$BUILDPLATFORM oven/bun:1.4.2 AS deps
44
+ FROM --platform=$BUILDPLATFORM oven/bun:1.4.3 AS deps
45
45
 
46
46
  WORKDIR /usr/src/app
47
47
 
@@ -78,6 +78,9 @@ RUN --mount=type=cache,target=/root/.bun/install/cache \
78
78
  bun scripts/install-otel.ts --os="$TARGETOS" --cpu="$(cat .bun-cpu)"; \
79
79
  fi
80
80
 
81
+ COPY scripts/prune-musl-packages.ts ./scripts/
82
+ RUN bun scripts/prune-musl-packages.ts
83
+
81
84
  # The scanner is only needed during installation.
82
85
  RUN rm -rf node_modules/@socketsecurity/bun-security-scanner
83
86
 
@@ -87,7 +90,7 @@ RUN rm -rf node_modules/@socketsecurity/bun-security-scanner
87
90
  #
88
91
  # Runtime-only stage: Bun runs on the target architecture at container start.
89
92
  # ==============================================================================
90
- FROM oven/bun:1.4.2-slim AS production
93
+ FROM oven/bun:1.4.3-slim AS production
91
94
 
92
95
  WORKDIR /usr/src/app
93
96
  ENV NODE_ENV=production
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.2.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/college-scorecard-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.1.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/college-scorecard-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/college-scorecard-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.3.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/college-scorecard-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.3.1-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/college-scorecard-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/college-scorecard-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.3-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -19,11 +19,17 @@
19
19
 
20
20
  </div>
21
21
 
22
+ <div align="center">
23
+
24
+ **Public Hosted Server:** [https://college-scorecard.caseyjhand.com/mcp](https://college-scorecard.caseyjhand.com/mcp)
25
+
26
+ </div>
27
+
22
28
  ---
23
29
 
24
30
  ## Overview
25
31
 
26
- U.S. college data from the Department of Education College Scorecard API — costs, earnings, programs, and outcomes across roughly 6,500 Title IV institutions. Search and compare schools, look up program-level earnings by field of study, and compute ROI metrics like debt-to-earnings ratio from any MCP client. Runs as a stdio process or a local Streamable HTTP server.
32
+ U.S. college data from the Department of Education College Scorecard API — costs, earnings, programs, and outcomes across roughly 6,500 Title IV institutions. Search and compare schools, look up program-level earnings by field of study, and compute ROI metrics like debt-to-earnings ratio from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
27
33
 
28
34
  ### Tools
29
35
 
@@ -31,7 +37,7 @@ U.S. college data from the Department of Education College Scorecard API — cos
31
37
  |:---|:---|
32
38
  | `scorecard_search_schools` | Search institutions by name, location, type, size, acceptance rate, and single-sex flags; sort by supported API fields. Returns core identity and cost metrics. |
33
39
  | `scorecard_get_school` | Full institutional profiles — costs, admissions, outcomes, aid, demographics, single-sex flags, and completion rates. |
34
- | `scorecard_compare_schools` | Normalized side-by-side comparison of 2–5 schools on a named topic. Returns percentile-ranked rows and relative deltas within the result set. |
40
+ | `scorecard_compare_schools` | Normalized side-by-side comparison of 2–5 schools on a named topic. Returns metric values, ordinal ranks, and a comparison summary. |
35
41
  | `scorecard_get_programs` | Field-of-study programs at one school: median 1-year earnings, cumulative Stafford/Grad PLUS debt, and IPEDS awards in the two pooled debt-cohort years. |
36
42
  | `scorecard_search_programs` | Find programs by CIP code or keyword, with school, earnings, and debt filters; rank by earnings within each fetched school page. |
37
43
  | `scorecard_get_earnings` | Institution-level post-graduation earnings for one school — median at 6, 8, and 10 years after entry (P25/P75 at 6 and 10 years), with optional gender breakdown. |
@@ -58,7 +64,7 @@ All resource data is also reachable via tools. Use `scorecard_search_schools` or
58
64
 
59
65
  ### `scorecard_search_schools` <sub>tool</sub>
60
66
 
61
- - Search by name, state, ownership, degree level, size, acceptance rate, CIP code, or zip code and distance; `per_page` is capped at 100 with zero-indexed `page`.
67
+ - Search by name, state, ownership, degree level, size, acceptance rate, CIP code, or ZIP and distance; `per_page` is capped at 100 with zero-indexed `page`. State lists accept `WA,CA` and case variants. ZIP-only queries use the provider default radius; ZIP+4 and nonnegative decimal radii (bare miles, `mi`, or `km`) are supported. Reversed range bounds normalize to ascending order.
62
68
  - Returns core identity and cost metrics for quick scanning.
63
69
  - `sort` forwards a supported API expression such as `latest.cost.avg_net_price.overall:asc` (`:desc` reverses it). `men_only` and `women_only` accept true or false; omission includes unknown flags, while false selects only explicit zero values.
64
70
 
@@ -66,21 +72,23 @@ All resource data is also reachable via tools. Use `scorecard_search_schools` or
66
72
 
67
73
  ### `scorecard_get_school` <sub>tool</sub>
68
74
 
69
- - Accepts a single school ID or an array of up to 100 IDs per call.
70
- - Returns institutional profiles covering costs, admissions, outcomes, financial aid, demographics, and completion rates; `fields` overrides the default selection. `men_only` and `women_only` preserve true/false when known and are absent when unknown.
75
+ - Accepts a positive safe integer school ID or an array of up to 1,000 elements. Base-10 strings accept whitespace, leading zeros, plus, decimal, and exponent forms when they resolve to a positive safe integer. IDs are deduplicated before the first 100 distinct IDs are fetched; `missing_ids` identifies processed IDs without records, and `unprocessed_ids` identifies unchecked excess.
76
+ - Default profiles cover costs, admissions, outcomes, financial aid, demographics, and completion rates. Custom `fields` returns real ID/name plus `selected_fields` containing requested JSON values, including null, zero, false, and nested arrays. Program leaf projections retain the provider's parent subtree under `latest.programs.cip_4_digit`, preserving sparse rows and array positions; `absent_fields` lists requested paths omitted from that response. Unrequested profile metrics are omitted.
77
+ - HBCU status reads `school.minority_serving.historically_black`; HBCU and single-sex flags preserve true/false when known and remain unknown when absent/null.
71
78
 
72
79
  ---
73
80
 
74
81
  ### `scorecard_compare_schools` <sub>tool</sub>
75
82
 
76
83
  - Accepts 2–5 school unit IDs and one topic: `costs`, `admissions`, `outcomes`, or `aid`.
77
- - Returns comparison rows with within-set percentile ranks and relative deltas from a single API call.
84
+ - Returns comparison rows with metric values, within-set ordinal ranks, and a comparison summary from a single API call.
78
85
 
79
86
  ---
80
87
 
81
88
  ### `scorecard_get_programs` <sub>tool</sub>
82
89
 
83
90
  - Accepts one school ID, with optional CIP code, `credential_level`, and minimum earnings filters.
91
+ - Existing schools with no reported or matching programs return a successful empty collection; a nonexistent school remains a lookup error. Dotted and undotted four-digit CIP codes are equivalent.
84
92
  - Returns median earnings and the matching count of graduates working and not enrolled 1 year after their highest credential, with `suppressed` and `suppression_note` for unavailable earnings.
85
93
  - `median_debt` is completers' cumulative Stafford/Grad PLUS borrowing across attended institutions at the same academic level. `ipeds_awards_year1` and `ipeds_awards_year2` count awards in each year of the pooled debt cohort, not enrollment or unique students.
86
94
 
@@ -111,14 +119,14 @@ All resource data is also reachable via tools. Use `scorecard_search_schools` or
111
119
 
112
120
  ### `scorecard_lookup_cip` <sub>tool</sub>
113
121
 
114
- - Search by keyword or partial name with `limit` up to 50 (default 20); use before CIP filters when the code is unknown.
122
+ - Search by nonblank keyword or partial name (default limit 20); requests up to 1,000 are accepted and served at a cap of 50. Totals count before slicing; exact-cap results are not truncated, and no matches return an empty collection with guidance.
115
123
  - Returns codes, standard titles, and CIP families from a curated offline set of 202 common 4-digit codes, rather than the full NCES taxonomy.
116
124
 
117
125
  ---
118
126
 
119
127
  ### `scorecard_list_fields` <sub>tool</sub>
120
128
 
121
- - Search 80 curated offline field entries with `limit` up to 100 (default 30); use before passing custom `fields` to `scorecard_get_school`.
129
+ - Search 80 curated offline field entries by nonblank query (default limit 30); requests up to 1,000 are accepted and served at a cap of 100. Totals count before slicing; no matches return an empty collection with guidance. Use before passing custom `fields` to `scorecard_get_school`.
122
130
  - Returns field paths, descriptions, data types, categories, and API sorting support; `tip` flags results containing unsortable fields.
123
131
 
124
132
  ---
@@ -160,11 +168,30 @@ Agent-friendly output:
160
168
 
161
169
  - FERPA suppression surfaced as structured `suppressed: true` flag with `suppression_note` — prevents hallucination of missing earnings data at selective schools with small cohorts
162
170
  - Derived metrics alongside source figures in `scorecard_value_analysis` — agents can verify arithmetic and branch on computed values, not raw numbers
163
- - Percentile ranks and relative deltas in `scorecard_compare_schools` — structured output an agent cannot reconstruct from raw profiles without knowing the full comparison set
171
+ - Ordinal ranks in `scorecard_compare_schools` place each school's metric values within the comparison set
164
172
  - School sorting uses indexed API fields; check `scorecard_list_fields` before choosing a sort expression. Six-year earnings does not support API sorting. Program earnings ordering applies within each fetched school page.
173
+ - Searches echo normalized effective selectors and pagination defaults on both output surfaces, distinguishing no upstream matches, exhausted pages, and locally filtered program pages. Blank optional selectors are unset; CIP precedence omits an ignored program name from the echo.
174
+ - Provider failures retain safe status/detail with distinct validation, authentication, throttling, timeout, and availability reasons. Permanent validation/authentication failures are not retried; resource failures include recovery and a request ID. Availability uses `api_error`; cancellation remains `RequestCancelled`.
165
175
 
166
176
  ## Getting started
167
177
 
178
+ ### Public Hosted Instance
179
+
180
+ A public instance is available at `https://college-scorecard.caseyjhand.com/mcp` — no installation required. No API key needed; the instance supplies its own. Point any MCP client at it via Streamable HTTP:
181
+
182
+ ```json
183
+ {
184
+ "mcpServers": {
185
+ "college-scorecard-mcp-server": {
186
+ "type": "streamable-http",
187
+ "url": "https://college-scorecard.caseyjhand.com/mcp"
188
+ }
189
+ }
190
+ }
191
+ ```
192
+
193
+ ### Self-Hosted / Local
194
+
168
195
  Add the following to your MCP client configuration file. See [api.data.gov/signup](https://api.data.gov/signup/) for a free API key.
169
196
 
170
197
  ```json
@@ -0,0 +1,31 @@
1
+ ---
2
+ summary: "Preserve requested profile data and classify Scorecard failures with actionable recovery."
3
+ breaking: true
4
+ security: false
5
+ ---
6
+
7
+ # 0.3.0 — 2026-10-13
8
+
9
+ ## Changed
10
+
11
+ - **Custom profile fields** now return real identity plus `selected_fields` and `absent_fields`. Migrate custom-mode reads from mapped properties to provider paths in `selected_fields`; nested program leaves retain the returned parent subtree, including sparse array positions and explicit nulls. ([#23](https://github.com/cyanheads/college-scorecard-mcp-server/issues/23))
12
+ - **Empty collections** succeed for existing schools without matching programs and offline catalog searches without matches, with recovery guidance instead of lookup errors. ([#36](https://github.com/cyanheads/college-scorecard-mcp-server/issues/36))
13
+ - **Provider failures** use distinct status-based codes and reasons with safe diagnostics, recovery, and request correlation. Permanent validation/authentication failures do not retry; deadlines cover response bodies and caller cancellation stops pending work. Resource HTTP 409 uses InvalidParams with `api_conflict`. ([#32](https://github.com/cyanheads/college-scorecard-mcp-server/issues/32), [#37](https://github.com/cyanheads/college-scorecard-mcp-server/issues/37))
14
+ - **Distribution maintenance** aligns npm registry launch metadata, adds hosted discovery, refreshes framework skills and checks, and moves Docker to Bun 1.4.2 → 1.4.3 with musl-only dependency pruning.
15
+
16
+ ## Fixed
17
+
18
+ - **Required IDs and selectors** validate before fetch while retaining supported numeric string IDs, state lists, dotted CIP codes, ZIP-only searches, and decimal radii; optional blanks are unset and reversed ranges normalize. ([#22](https://github.com/cyanheads/college-scorecard-mcp-server/issues/22), [#32](https://github.com/cyanheads/college-scorecard-mcp-server/issues/32))
19
+ - **HBCU status** reads `school.minority_serving.historically_black` and preserves true, false, and unknown values. ([#29](https://github.com/cyanheads/college-scorecard-mcp-server/issues/29))
20
+ - **Batch profiles and catalogs** deduplicate IDs before the 100-ID serving cap, distinguish missing processed IDs from unchecked excess, and count catalog matches before slicing with accurate truncation and narrowing guidance. ([#33](https://github.com/cyanheads/college-scorecard-mcp-server/issues/33), [#31](https://github.com/cyanheads/college-scorecard-mcp-server/issues/31))
21
+ - **Search context** echoes effective normalized selectors and pagination defaults, with distinct notices for no upstream matches, exhausted pages, and locally filtered program pages. ([#36](https://github.com/cyanheads/college-scorecard-mcp-server/issues/36))
22
+
23
+ ## Dependencies
24
+
25
+ - `@cyanheads/mcp-ts-core` ^0.13.10 → ^0.13.15
26
+ - `pino-pretty` ^13.1.3 → ^13.2.0
27
+ - `@biomejs/biome` ^2.5.14 → ^2.5.15
28
+ - `@types/node` ^26.6.3 → ^26.6.5
29
+ - `ignore` ^7.0.10 → ^7.0.12
30
+ - `tsc-alias` ^1.9.5 → ^1.9.7
31
+ - `vitest` ^5.0.2 → ^5.0.3
@@ -91,7 +91,7 @@ export const FIELD_CATALOG = [
91
91
  category: 'identity',
92
92
  },
93
93
  {
94
- path: 'school.hbcu',
94
+ path: 'school.minority_serving.historically_black',
95
95
  description: 'Historically Black College or University flag',
96
96
  type: 'integer',
97
97
  sortable: false,
@@ -1 +1 @@
1
- {"version":3,"file":"field-catalog.js","sourceRoot":"","sources":["../../src/data/field-catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,WAAW;IACX;QACE,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,2GAA2G;QAC7G,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EACT,sFAAsF;QACxF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,4CAA4C;QAClD,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IAED,OAAO;IACP;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,WAAW,EAAE,yDAAyD;QACtE,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,sDAAsD;QAC5D,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,0DAA0D;QAChE,WAAW,EAAE,mEAAmE;QAChF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,0DAA0D;QAChE,WAAW,EAAE,mEAAmE;QAChF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,0DAA0D;QAChE,WAAW,EAAE,6DAA6D;QAC1E,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,uDAAuD;QAC7D,WAAW,EAAE,+DAA+D;QAC5E,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,4DAA4D;QAClE,WAAW,EAAE,qEAAqE;QAClF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,sCAAsC;QAC5C,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,MAAM;KACjB;IAED,aAAa;IACb;QACE,IAAI,EAAE,0CAA0C;QAChD,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,8CAA8C;QACpD,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,+DAA+D;QACrE,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,+DAA+D;QACrE,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,mDAAmD;QACzD,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,mDAAmD;QACzD,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,yDAAyD;QAC/D,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,yDAAyD;QAC/D,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,YAAY;KACvB;IAED,gBAAgB;IAChB;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,2CAA2C;QACjD,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,sCAAsC;QAC5C,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,4DAA4D;QAClE,WAAW,EACT,0GAA0G;QAC5G,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,4DAA4D;QAClE,WAAW,EACT,yGAAyG;QAC3G,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,4DAA4D;QAClE,WAAW,EACT,0GAA0G;QAC5G,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB;IAED,wBAAwB;IACxB;QACE,IAAI,EAAE,2CAA2C;QACjD,WAAW,EAAE,+CAA+C;QAC5D,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,IAAI,EAAE,iCAAiC;QACvC,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,YAAY;KACvB;IAED,+BAA+B;IAC/B;QACE,IAAI,EAAE,0CAA0C;QAChD,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,mDAAmD;QACzD,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,2CAA2C;QACjD,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,8DAA8D;QACpE,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,+DAA+D;QACrE,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,uCAAuC;QAC7C,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IAED,uBAAuB;IACvB;QACE,IAAI,EAAE,gDAAgD;QACtD,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,gDAAgD;QACtD,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,iDAAiD;QACvD,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,iDAAiD;QACvD,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IAED,qBAAqB;IACrB;QACE,IAAI,EAAE,mEAAmE;QACzE,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,iEAAiE;QACvE,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IAED,eAAe;IACf;QACE,IAAI,EAAE,kDAAkD;QACxD,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,kDAAkD;QACxD,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,qDAAqD;QAC3D,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,kDAAkD;QACxD,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,8CAA8C;QACpD,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,uCAAuC;QAC7C,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,0CAA0C;QAChD,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,cAAc;KACzB;IAED,4BAA4B;IAC5B;QACE,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,2EAA2E;QACjF,WAAW,EACT,yGAAyG;QAC3G,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,sFAAsF;QAC5F,WAAW,EACT,2HAA2H;QAC7H,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,sEAAsE;QAC5E,WAAW,EACT,gHAAgH;QAClH,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,kDAAkD;QACxD,WAAW,EACT,qFAAqF;QACvF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,kDAAkD;QACxD,WAAW,EACT,qFAAqF;QACvF,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,8CAA8C;QACpD,WAAW,EACT,8MAA8M;QAChN,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAgD,EAAE,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QACtF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,KAAK,EAAE,CAAC;gBACvC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;oBAAE,KAAK,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,MAAM;SACV,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"field-catalog.js","sourceRoot":"","sources":["../../src/data/field-catalog.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,79 @@
4
4
  * @module mcp-server/resources/definitions/programs.resource
5
5
  */
6
6
  import { z } from '@cyanheads/mcp-ts-core';
7
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
8
  export declare const programsResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<z.ZodObject<{
8
9
  id: z.ZodString;
9
- }, z.core.$strip>, undefined, undefined>;
10
+ }, z.core.$strip>, undefined, readonly [{
11
+ readonly reason: "api_conflict";
12
+ readonly code: JsonRpcErrorCode.InvalidParams;
13
+ readonly when: "Provider reported a conflict (HTTP 409).";
14
+ readonly recovery: "Review the provider detail and correct conflicting selectors before retrying.";
15
+ readonly thrownBy: "service";
16
+ }, {
17
+ readonly reason: "school_not_found";
18
+ readonly code: JsonRpcErrorCode.NotFound;
19
+ readonly when: "The school ID has no institution record.";
20
+ readonly recovery: "Discover a valid school ID using scorecard_search_schools and retry.";
21
+ }, {
22
+ readonly reason: "api_error";
23
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
24
+ readonly when: "The provider is unavailable.";
25
+ readonly recovery: "Retry after a brief delay and report persistent provider failures.";
26
+ readonly thrownBy: "service";
27
+ }, {
28
+ readonly reason: "api_invalid_params";
29
+ readonly code: JsonRpcErrorCode.InvalidParams;
30
+ readonly when: "Provider rejected a query parameter.";
31
+ readonly recovery: "Correct the reported parameter using scorecard_list_fields or scorecard_lookup_cip before retrying.";
32
+ readonly thrownBy: "service";
33
+ }, {
34
+ readonly reason: "api_validation";
35
+ readonly code: JsonRpcErrorCode.ValidationError;
36
+ readonly when: "A meaningful selector or provider value is invalid.";
37
+ readonly recovery: "Correct the reported selector or required ID before retrying the request.";
38
+ readonly thrownBy: "service";
39
+ }, {
40
+ readonly reason: "api_unauthorized";
41
+ readonly code: JsonRpcErrorCode.Unauthorized;
42
+ readonly when: "The provider rejected the API credentials.";
43
+ readonly recovery: "Verify SCORECARD_API_KEY is valid and retry with valid credentials.";
44
+ readonly thrownBy: "service";
45
+ }, {
46
+ readonly reason: "api_forbidden";
47
+ readonly code: JsonRpcErrorCode.Forbidden;
48
+ readonly when: "The provider denied access.";
49
+ readonly recovery: "Check SCORECARD_API_KEY permissions and provider access before retrying.";
50
+ readonly thrownBy: "service";
51
+ }, {
52
+ readonly reason: "api_rate_limited";
53
+ readonly code: JsonRpcErrorCode.RateLimited;
54
+ readonly when: "The provider throttled the request.";
55
+ readonly recovery: "Wait for the provider retry window before making another request.";
56
+ readonly thrownBy: "service";
57
+ }, {
58
+ readonly reason: "api_timeout";
59
+ readonly code: JsonRpcErrorCode.Timeout;
60
+ readonly when: "The provider exchange exceeded its deadline.";
61
+ readonly recovery: "Retry after a brief delay or narrow the requested data.";
62
+ readonly thrownBy: "service";
63
+ }, {
64
+ readonly reason: "api_not_found";
65
+ readonly code: JsonRpcErrorCode.NotFound;
66
+ readonly when: "The provider endpoint returned HTTP 404.";
67
+ readonly recovery: "Check provider availability and retry the request after a brief delay.";
68
+ readonly thrownBy: "service";
69
+ }, {
70
+ readonly reason: "api_invalid_request";
71
+ readonly code: JsonRpcErrorCode.InvalidRequest;
72
+ readonly when: "The provider returned an unexpected redirect.";
73
+ readonly recovery: "Check provider availability before retrying this request with the same selectors.";
74
+ readonly thrownBy: "service";
75
+ }, {
76
+ readonly reason: "api_internal";
77
+ readonly code: JsonRpcErrorCode.InternalError;
78
+ readonly when: "The provider returned an unclassified HTTP response.";
79
+ readonly recovery: "Retry after a brief delay and report persistent provider failures.";
80
+ readonly thrownBy: "service";
81
+ }]>;
10
82
  //# sourceMappingURL=programs.resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"programs.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/programs.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKrD,eAAO,MAAM,gBAAgB;;wCAwD3B,CAAC"}
1
+ {"version":3,"file":"programs.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/programs.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8I3B,CAAC"}
@@ -4,8 +4,9 @@
4
4
  * @module mcp-server/resources/definitions/programs.resource
5
5
  */
6
6
  import { resource, z } from '@cyanheads/mcp-ts-core';
7
- import { notFound } from '@cyanheads/mcp-ts-core/errors';
7
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
8
8
  import { EXAMPLE_SCHOOLS } from './example-schools.js';
9
+ import { SchoolIdStringSchema } from '../../../services/scorecard/input-normalization.js';
9
10
  import { getScorecardService } from '../../../services/scorecard/scorecard-service.js';
10
11
  export const programsResource = resource('scorecard://programs/{id}', {
11
12
  name: 'scorecard-programs',
@@ -13,15 +14,100 @@ export const programsResource = resource('scorecard://programs/{id}', {
13
14
  description: 'Program-level outcomes by CIP code: median earnings of graduates working and not enrolled 1 year after their highest credential, median cumulative Stafford/Grad PLUS borrowing across institutions at the same academic level, and IPEDS awards in each of the two pooled debt-cohort years (not enrollment or unique students).',
14
15
  mimeType: 'application/json',
15
16
  params: z.object({
16
- id: z.string().describe('School unit ID (integer as string).'),
17
+ id: SchoolIdStringSchema,
17
18
  }),
19
+ errors: [
20
+ {
21
+ reason: 'api_conflict',
22
+ code: JsonRpcErrorCode.InvalidParams,
23
+ when: 'Provider reported a conflict (HTTP 409).',
24
+ recovery: 'Review the provider detail and correct conflicting selectors before retrying.',
25
+ thrownBy: 'service',
26
+ },
27
+ {
28
+ reason: 'school_not_found',
29
+ code: JsonRpcErrorCode.NotFound,
30
+ when: 'The school ID has no institution record.',
31
+ recovery: 'Discover a valid school ID using scorecard_search_schools and retry.',
32
+ },
33
+ {
34
+ reason: 'api_error',
35
+ code: JsonRpcErrorCode.ServiceUnavailable,
36
+ when: 'The provider is unavailable.',
37
+ recovery: 'Retry after a brief delay and report persistent provider failures.',
38
+ thrownBy: 'service',
39
+ },
40
+ {
41
+ reason: 'api_invalid_params',
42
+ code: JsonRpcErrorCode.InvalidParams,
43
+ when: 'Provider rejected a query parameter.',
44
+ recovery: 'Correct the reported parameter using scorecard_list_fields or scorecard_lookup_cip before retrying.',
45
+ thrownBy: 'service',
46
+ },
47
+ {
48
+ reason: 'api_validation',
49
+ code: JsonRpcErrorCode.ValidationError,
50
+ when: 'A meaningful selector or provider value is invalid.',
51
+ recovery: 'Correct the reported selector or required ID before retrying the request.',
52
+ thrownBy: 'service',
53
+ },
54
+ {
55
+ reason: 'api_unauthorized',
56
+ code: JsonRpcErrorCode.Unauthorized,
57
+ when: 'The provider rejected the API credentials.',
58
+ recovery: 'Verify SCORECARD_API_KEY is valid and retry with valid credentials.',
59
+ thrownBy: 'service',
60
+ },
61
+ {
62
+ reason: 'api_forbidden',
63
+ code: JsonRpcErrorCode.Forbidden,
64
+ when: 'The provider denied access.',
65
+ recovery: 'Check SCORECARD_API_KEY permissions and provider access before retrying.',
66
+ thrownBy: 'service',
67
+ },
68
+ {
69
+ reason: 'api_rate_limited',
70
+ code: JsonRpcErrorCode.RateLimited,
71
+ when: 'The provider throttled the request.',
72
+ recovery: 'Wait for the provider retry window before making another request.',
73
+ thrownBy: 'service',
74
+ },
75
+ {
76
+ reason: 'api_timeout',
77
+ code: JsonRpcErrorCode.Timeout,
78
+ when: 'The provider exchange exceeded its deadline.',
79
+ recovery: 'Retry after a brief delay or narrow the requested data.',
80
+ thrownBy: 'service',
81
+ },
82
+ {
83
+ reason: 'api_not_found',
84
+ code: JsonRpcErrorCode.NotFound,
85
+ when: 'The provider endpoint returned HTTP 404.',
86
+ recovery: 'Check provider availability and retry the request after a brief delay.',
87
+ thrownBy: 'service',
88
+ },
89
+ {
90
+ reason: 'api_invalid_request',
91
+ code: JsonRpcErrorCode.InvalidRequest,
92
+ when: 'The provider returned an unexpected redirect.',
93
+ recovery: 'Check provider availability before retrying this request with the same selectors.',
94
+ thrownBy: 'service',
95
+ },
96
+ {
97
+ reason: 'api_internal',
98
+ code: JsonRpcErrorCode.InternalError,
99
+ when: 'The provider returned an unclassified HTTP response.',
100
+ recovery: 'Retry after a brief delay and report persistent provider failures.',
101
+ thrownBy: 'service',
102
+ },
103
+ ],
18
104
  async handler(params, ctx) {
19
105
  ctx.log.info('Fetching programs resource', { id: params.id });
20
106
  const service = getScorecardService();
21
107
  const response = await service.getSchoolPrograms(params.id, undefined, undefined, undefined, ctx);
22
108
  const record = response.results[0];
23
109
  if (!record) {
24
- throw notFound(`School ${params.id} not found.`, { id: params.id });
110
+ throw ctx.fail('school_not_found', `School ${params.id} not found.`, { id: params.id });
25
111
  }
26
112
  const rawPrograms = record['latest.programs.cip_4_digit'] ?? [];
27
113
  const programs = rawPrograms.map((p) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"programs.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/programs.resource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,2BAA2B,EAAE;IACpE,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,mUAAmU;IACrU,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAC/D,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAC9C,MAAM,CAAC,EAAE,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,CACJ,CAAC;QAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,QAAQ,CAAC,UAAU,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;QAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,gBAAgB,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,IAAI;YAC7C,mBAAmB,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,uBAAuB,IAAI,IAAI;YACnF,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI;YACnE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;YACnD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;SACpD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;YAClC,QAAQ;YACR,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1C,GAAG,EAAE,wBAAwB,MAAM,CAAC,EAAE,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,aAAa;YACjC,WAAW,EACT,mIAAmI;YACrI,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;KACJ,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"programs.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/programs.resource.ts"],"names":[],"mappings":"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"}