Adopts @cyanheads/mcp-ts-core ^0.8.19 → ^0.9.1 (15 intermediate releases
including the breaking 0.9.0 cut). No tool or resource surface changes —
behavioral changes limited to error-code mapping and the `initialize`
instructions payload.
Highlights:
- Server-level `instructions` wired through createApp() in src/index.ts;
surfaces on every MCP initialize so spec-compliant clients forward it
to the model as session-level context instead of leaking into every
tool description.
- All 10 tool handlers switch input-validation throws from `new Error`
to the `validationError` factory. Surfaces as JSON-RPC ValidationError
(-32602) with structured error.data carrying offending field names,
instead of generic InternalError (-32603).
- CongressApiService.fetchResponse drops stale 404/429 status-code
probing in favor of the framework's typed HTTP → McpError mapping.
Local catch keeps only the RateLimited rewrap (preserves the
"5,000 requests/hour" quota message); 404 rewrapping continues at
call sites via tryNotFound() with identifier-rich data.
- scripts/devcheck.ts `bun outdated` parser fixed: reads index [1]
after the empty leading cell, strips (dev|peer|prod|optional)
workspace marker so the allowlist matches bare package names.
- scripts/build-changelog.ts summary cap 250 → 350 chars; template
updated in lockstep.
- Test mocks include `headers: new Headers()` for fetchWithTimeout's
new header-reading paths. CRS-outage 500 case asserts InternalError
to match the framework's tightened HTML-bodied 500 classification.
- Skills re-synced (11 SKILL.md files + polish-docs-meta references)
and mirrored to .claude/skills and .agents/skills.
- README OTEL_ENABLED row links to framework telemetry docs.
Dependency bumps:
- @cyanheads/mcp-ts-core ^0.8.19 → ^0.9.1
- @biomejs/biome ^2.4.14 → ^2.4.15
- @types/node ^25.6.2 → ^25.8.0
- vitest ^4.1.5 → ^4.1.6