CuratorSearch MCP
An MCP server providing access to live curatorial, museum, and gallery job listings across Europe and beyond, along with a salary archive. It enables agents to search for jobs, retrieve specific job details, list jobs by institution, and access salary transparency data.
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.
https://curatorsearch.com/mcpWhat its tools do
4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to curatorsearch.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for live curatorial and museum job vacancies
- Retrieve full details for a specific job listing
- List all open roles at a specific museum or institution
- Access salary transparency data and pay archives
Source and maintenance
Protocol and capabilities
- Server
- curatorsearch 1.0.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
search_jobs
Search live museum, gallery and curatorial job listings, gathered daily from institutions' own career pages. Returns up to 20 roles, newest first, each with its curatorsearch.com page.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many roles to return, 1 to 20. Defaults to 10."
},
"query": {
"type": "string",
"description": "Free text matched against title, institution and location, e.g. 'registrar London'. Omit to browse everything."
},
"region": {
"enum": [
"North America",
"UK & Ireland",
"Europe",
"Asia-Pacific",
"Middle East",
"Latin America",
"Africa",
"International"
],
"type": "string",
"description": "Restrict to one world region."
},
"category": {
"enum": [
"Leadership",
"Curatorial",
"Education & Public Programmes",
"Archives",
"Collections",
"Conservation",
"Intern & Fellowship",
"Open Call & Residency",
"Production",
"Other"
],
"type": "string",
"description": "Restrict to one field of work."
}
}
}{
"type": "object",
"required": [
"total",
"results"
],
"properties": {
"total": {
"type": "integer",
"description": "How many live roles match, which may exceed the number returned."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"institution",
"category",
"region",
"posted",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The role's permanent page on curatorsearch.com."
},
"title": {
"type": "string",
"description": "Job title as advertised."
},
"posted": {
"type": "string",
"description": "ISO date the role was first seen on the board."
},
"region": {
"type": "string",
"description": "CuratorSearch world region."
},
"salary": {
"type": [
"string",
"null"
],
"description": "Pay exactly as the posting states it, or null -- most postings state none."
},
"category": {
"type": "string",
"description": "CuratorSearch field, one of the category values."
},
"deadline": {
"type": [
"string",
"null"
],
"description": "Application deadline as an ISO date, or null if none is given."
},
"location": {
"type": [
"string",
"null"
],
"description": "City and country as stated, or null if the posting gives none."
},
"institution": {
"type": "string",
"description": "Museum, gallery or organisation advertising the role."
}
}
},
"description": "The matching roles, newest first."
},
"attribution": {
"type": "string",
"description": "Source credit to quote when citing these results."
}
}
}{
"title": "Search museum jobs",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_job
One listing in full: description, stated salary, deadline, and the institution's original posting URL. Takes the slug from a curatorsearch.com/opportunities/<slug> URL.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The listing's slug, or the whole curatorsearch.com/opportunities/<slug> URL -- either is accepted."
}
}
}{
"type": "object",
"required": [
"title",
"institution",
"category",
"region",
"posted",
"url",
"status",
"source"
],
"properties": {
"url": {
"type": "string",
"description": "The role's permanent page on curatorsearch.com."
},
"title": {
"type": "string",
"description": "Job title as advertised."
},
"posted": {
"type": "string",
"description": "ISO date the role was first seen on the board."
},
"region": {
"type": "string",
"description": "CuratorSearch world region."
},
"salary": {
"type": [
"string",
"null"
],
"description": "Pay exactly as the posting states it, or null -- most postings state none."
},
"source": {
"type": "string",
"description": "The institution's original posting, where applications are made."
},
"status": {
"type": "string",
"description": "'live' while the role is open; anything else means the institution has taken it down."
},
"category": {
"type": "string",
"description": "CuratorSearch field, one of the category values."
},
"deadline": {
"type": [
"string",
"null"
],
"description": "Application deadline as an ISO date, or null if none is given."
},
"location": {
"type": [
"string",
"null"
],
"description": "City and country as stated, or null if the posting gives none."
},
"description": {
"type": [
"string",
"null"
],
"description": "The posting's own text, or null if the source gave none."
},
"institution": {
"type": "string",
"description": "Museum, gallery or organisation advertising the role."
}
}
}{
"title": "Get one listing",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}institution_jobs
Every role one museum or gallery currently has open on the board, by institution name.
{
"type": "object",
"required": [
"institution"
],
"properties": {
"institution": {
"type": "string",
"description": "The institution's name, e.g. 'Philadelphia Museum of Art'. Near-misses resolve; if nothing matches, the reply says so."
}
}
}{
"type": "object",
"required": [
"institution",
"results"
],
"properties": {
"note": {
"type": "string",
"description": "Present only when no institution of that name is on the board."
},
"page": {
"type": "string",
"description": "That institution's page on curatorsearch.com."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"institution",
"category",
"region",
"posted",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The role's permanent page on curatorsearch.com."
},
"title": {
"type": "string",
"description": "Job title as advertised."
},
"posted": {
"type": "string",
"description": "ISO date the role was first seen on the board."
},
"region": {
"type": "string",
"description": "CuratorSearch world region."
},
"salary": {
"type": [
"string",
"null"
],
"description": "Pay exactly as the posting states it, or null -- most postings state none."
},
"category": {
"type": "string",
"description": "CuratorSearch field, one of the category values."
},
"deadline": {
"type": [
"string",
"null"
],
"description": "Application deadline as an ISO date, or null if none is given."
},
"location": {
"type": [
"string",
"null"
],
"description": "City and country as stated, or null if the posting gives none."
},
"institution": {
"type": "string",
"description": "Museum, gallery or organisation advertising the role."
}
}
},
"description": "Its open roles, newest first."
},
"institution": {
"type": "string",
"description": "The institution as the board names it."
}
}
}{
"title": "One museum's open roles",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}salary_transparency
How many live museum and curatorial postings state a salary, and the median advertised figure among those that do -- the CuratorSearch Curatorial Pay Archive headline number, computed live.
{
"type": "object",
"properties": {}
}{
"type": "object",
"properties": {
"asOf": {
"type": "string",
"description": "ISO date the figures were computed."
},
"note": {
"type": "string",
"description": "Present only when there is no salary data yet."
},
"citation": {
"type": "string",
"description": "How to cite these figures."
},
"liveListings": {
"type": "integer",
"description": "Live roles on the board at the moment of the call."
},
"percentStatingSalary": {
"type": "number",
"description": "Percentage of those postings that state any pay at all."
},
"medianAdvertisedEurPerYear": {
"type": "integer",
"description": "Median stated figure among those that do, annualised into euro."
}
}
}{
"title": "Curatorial pay transparency",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
- 2026-11-09: 2 of 2 checks answered
- 2026-11-10: 1 of 1 checks answered
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
- 692 ms
- 95th percentile latency
- 692 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 692 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http curatorsearch-mcp https://curatorsearch.com/mcpCodex
codex mcp add curatorsearch-mcp --url https://curatorsearch.com/mcpCursor
{
"mcpServers": {
"curatorsearch-mcp": {
"url": "https://curatorsearch.com/mcp"
}
}
}Cline
{
"mcpServers": {
"curatorsearch-mcp": {
"type": "streamableHttp",
"url": "https://curatorsearch.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"curatorsearch-mcp": {
"type": "http",
"url": "https://curatorsearch.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http curatorsearch-mcp https://curatorsearch.com/mcpClaude Desktop
https://curatorsearch.com/mcpWindsurf
{
"mcpServers": {
"curatorsearch-mcp": {
"serverUrl": "https://curatorsearch.com/mcp"
}
}
}Let your agent find its tools
Find servers like CuratorSearch MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run CuratorSearch 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.