generated: '2026-09-20' method: derived source: mcp/curatorsearch-mcp.yml + openapi/curatorsearch-openapi.json description: >- Binds each live CuratorSearch MCP tool to its backing OpenAPI operation. Derived by matching the anonymously-retrieved tools/list against the published OpenAPI 3.1 contract; each bound tool inherits its real inputSchema from that operation's parameters. surfaces: openapi: openapi/curatorsearch-openapi.json graphql: null mcp: url: https://curatorsearch.com/mcp gated: false note: tools/list retrieved anonymously (HTTP 200) — schemas are not gated. crosswalk: - tool: search_jobs category: search rest: [searchJobs] binding: rest confidence: high note: 1:1 — same q/category/region/limit parameters as GET /api/jobs. - tool: get_job category: retrieve rest: [getJob] binding: rest confidence: high note: 1:1 — GET /api/jobs/{slug}. - tool: salary_transparency category: analytics rest: [salaryArchive] binding: rest confidence: low note: >- Computed headline (live count of postings stating pay + median) derived over the same salary archive that GET /data/curatorial-salaries.json returns raw; not a 1:1 projection. mcp_only: - tool: institution_jobs reason: >- No dedicated public REST operation. Server-side filtered view of the live board by institution name; the nearest REST equivalent is a free-text searchJobs query, but no institution parameter is exposed in the OpenAPI. rest_only: [] coverage: tools_total: 4 tools_bound: 3 mcp_only: 1 rest_ops_total: 3 rest_ops_with_tool: 3