Browse the MCP registry
curl --request GET \
--url https://api.quiva.ai/hub/mcp/registry \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.quiva.ai/hub/mcp/registry"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.quiva.ai/hub/mcp/registry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.quiva.ai/hub/mcp/registry",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.quiva.ai/hub/mcp/registry"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.quiva.ai/hub/mcp/registry")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.quiva.ai/hub/mcp/registry")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"servers": [
{
"name": "io.github.owner/repo",
"description": "<string>",
"version": "<string>",
"remotes": [
{}
]
}
],
"next_cursor": "<string>",
"received": 123,
"total": 123
}Assistants
Browse the MCP registry
Searches the public Model Context Protocol registry (registry.modelcontextprotocol.io) for remote MCP servers your assistants could connect to. This browses the shared public catalog, not the servers already registered to your account — see POST /hub/mcp/register for that.
GET
/
hub
/
mcp
/
registry
Browse the MCP registry
curl --request GET \
--url https://api.quiva.ai/hub/mcp/registry \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.quiva.ai/hub/mcp/registry"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.quiva.ai/hub/mcp/registry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.quiva.ai/hub/mcp/registry",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.quiva.ai/hub/mcp/registry"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.quiva.ai/hub/mcp/registry")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.quiva.ai/hub/mcp/registry")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"servers": [
{
"name": "io.github.owner/repo",
"description": "<string>",
"version": "<string>",
"remotes": [
{}
]
}
],
"next_cursor": "<string>",
"received": 123,
"total": 123
}Authorizations
bearerAuthapiKeyAuth
JWT Authorization header using the Bearer scheme.
Query Parameters
Free-text search over server name and description.
Page size.
Required range:
x <= 100Pass back a previous response's next_cursor to fetch the next page.
Only return servers updated on or after this RFC3339 timestamp.
Return only the latest version of each server.
Response
Matching registry entries.
Verified against a live call 2026-09-27. Page with next_cursor, not cursor — despite what an older version of this spec said.