Get the MCP catalog
curl --request GET \
--url https://api.hq.zone/v1/mcp/catalog \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hq.zone/v1/mcp/catalog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hq.zone/v1/mcp/catalog', 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.hq.zone/v1/mcp/catalog",
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.hq.zone/v1/mcp/catalog"
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.hq.zone/v1/mcp/catalog")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/mcp/catalog")
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": [
{
"allowed_scopes": [
"<string>"
],
"credential_model": "<string>",
"default_enabled": true,
"display_name": "<string>",
"effective_enabled": true,
"featured": true,
"publisher": "<string>",
"slug": "<string>",
"transport": "<string>",
"trust_tier": "<string>",
"version": "<string>",
"category": "<string>",
"description": "<string>",
"featured_rank": 123,
"icon_url": "<string>",
"install_status": "<string>",
"max_calls_per_day": 123,
"tenant_enabled": true
}
]
}Integrations
Get the MCP catalog
Returns the full catalog of available MCP integration servers along with the calling workspace’s install state for each. For every active server it reports static metadata (display name, description, category, publisher, transport, trust tier, version, credential model, and any featured ranking) plus per-tenant fields: whether the tenant explicitly enabled or disabled it, the effective enabled state, the install status (active, paused, failed, or reauth_required), the install scopes the operator allows, and an icon URL when one exists. Admin only; scoped to the caller’s own workspace.
GET
/
v1
/
mcp
/
catalog
Get the MCP catalog
curl --request GET \
--url https://api.hq.zone/v1/mcp/catalog \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hq.zone/v1/mcp/catalog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hq.zone/v1/mcp/catalog', 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.hq.zone/v1/mcp/catalog",
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.hq.zone/v1/mcp/catalog"
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.hq.zone/v1/mcp/catalog")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/mcp/catalog")
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": [
{
"allowed_scopes": [
"<string>"
],
"credential_model": "<string>",
"default_enabled": true,
"display_name": "<string>",
"effective_enabled": true,
"featured": true,
"publisher": "<string>",
"slug": "<string>",
"transport": "<string>",
"trust_tier": "<string>",
"version": "<string>",
"category": "<string>",
"description": "<string>",
"featured_rank": 123,
"icon_url": "<string>",
"install_status": "<string>",
"max_calls_per_day": 123,
"tenant_enabled": true
}
]
}