{"openapi":"3.1.0","info":{"title":"add-mcp registry API","description":"Read-only API for querying MCP registry servers with search and cursor pagination.","version":"1.0.0"},"paths":{"/api/health":{"get":{"operationId":"getApiHealth","tags":["system"],"summary":"Health check","responses":{"200":{"description":"Service is healthy.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"ok"}},"required":["status"]}}}}}}},"/api/v1/servers":{"get":{"operationId":"getApiV1Servers","tags":["servers"],"summary":"List MCP servers","description":"Returns paginated MCP servers and supports search and cursor pagination.","parameters":[{"in":"query","name":"search","required":false,"schema":{"type":"string"},"description":"Case-insensitive match against server registry metadata and install targets."},{"in":"query","name":"cursor","required":false,"schema":{"type":"string"},"description":"Cursor from the previous response for pagination."},{"in":"query","name":"limit","required":false,"schema":{"type":"string"},"description":"Maximum number of servers per page."}],"responses":{"200":{"description":"Successful server listing response.","content":{"application/json":{"schema":{"type":"object","properties":{"servers":{"type":"array","items":{"type":"object","properties":{"server":{"type":"object","properties":{"$schema":{"type":"string","format":"uri"},"name":{"type":"string","minLength":3,"maxLength":200,"pattern":"^[a-zA-Z0-9.-]+\\/[a-zA-Z0-9._-]+$"},"description":{"type":"string","minLength":1,"maxLength":500},"title":{"type":"string","minLength":1,"maxLength":200},"repository":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"source":{"type":"string"},"id":{"type":"string"},"subfolder":{"type":"string"}},"additionalProperties":{}},"version":{"type":"string","minLength":1,"maxLength":255},"websiteUrl":{"type":"string","format":"uri"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string","format":"uri"},"mimeType":{"type":"string","enum":["image/png","image/jpeg","image/jpg","image/svg+xml","image/webp"]},"sizes":{"type":"array","items":{"type":"string","pattern":"^(\\d+x\\d+|any)$"}},"theme":{"type":"string","enum":["light","dark"]}},"required":["src"],"additionalProperties":{}}},"packages":{"type":"array","items":{"type":"object","properties":{"registryType":{"type":"string"},"registryBaseUrl":{"type":"string","format":"uri"},"identifier":{"type":"string"},"version":{"type":"string"},"runtimeHint":{"type":"string"},"transport":{"type":"object","properties":{"type":{"type":"string"}},"required":["type"],"additionalProperties":{}},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"isRequired":{"type":"boolean"},"isSecret":{"type":"boolean"}},"required":["name"],"additionalProperties":{}}}},"required":["registryType","identifier"],"additionalProperties":{}}},"remotes":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"url":{"type":"string","format":"uri"},"headers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"isRequired":{"type":"boolean"},"isSecret":{"type":"boolean"},"format":{"type":"string"},"default":{"type":"string"}},"required":["name"],"additionalProperties":{}}}},"required":["type","url"],"additionalProperties":{}}},"_meta":{"type":"object","properties":{"io.modelcontextprotocol.registry/publisher-provided":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"additionalProperties":{}}},"required":["name","description","version"],"additionalProperties":{}},"_meta":{"type":"object","properties":{"io.modelcontextprotocol.registry/official":{"type":"object","properties":{"status":{"type":"string","enum":["active","deprecated","deleted"]},"statusMessage":{"type":"string","maxLength":500},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"isLatest":{"type":"boolean"}},"required":["status"],"additionalProperties":false}},"additionalProperties":{}}},"required":["server"],"additionalProperties":{}}},"metadata":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextCursor":{"type":"string"}},"required":["count"]}},"required":["servers","metadata"]}}}},"400":{"description":"Invalid query parameters."}}}}},"components":{}}