curl --request GET \
--url https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools', 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.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools",
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.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools"
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.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools")
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{
"tools": [
{
"name": "get_order_status",
"mcpServerSlug": "typebot",
"mcpServerId": "6683f1c2a4b19e0012ab34cd",
"ref": "typebot__get_order_status",
"description": "Looks up the status of an order by its id.",
"inputSchema": {},
"meta": {}
}
],
"failedServerSlugs": [
"typebot"
]
}{
"error": "Forbidden: token holds no claim for the requested account"
}{
"error": "Forbidden: token holds no claim for the requested account"
}{
"error": "Forbidden: token holds no claim for the requested account"
}{
"error": "Forbidden: token holds no claim for the requested account"
}List agent tools
curl --request GET \
--url https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools', 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.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools",
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.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools"
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.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudhumans.com/claudia/v1/tenants/{tenant}/agent-tools")
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{
"tools": [
{
"name": "get_order_status",
"mcpServerSlug": "typebot",
"mcpServerId": "6683f1c2a4b19e0012ab34cd",
"ref": "typebot__get_order_status",
"description": "Looks up the status of an order by its id.",
"inputSchema": {},
"meta": {}
}
],
"failedServerSlugs": [
"typebot"
]
}{
"error": "Forbidden: token holds no claim for the requested account"
}{
"error": "Forbidden: token holds no claim for the requested account"
}{
"error": "Forbidden: token holds no claim for the requested account"
}{
"error": "Forbidden: token holds no claim for the requested account"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Tenant whose agents you are managing. Discover the tenants your credentials cover with listMyClaudiaProjects. A tenant your credentials do not cover is indistinguishable from one that does not exist.
Response
The tools available to this tenant's agents, published only. Possibly partial — check failedServerSlugs.
The tools available to this tenant's agents, aggregated across every MCP server registered for it. Published tools only.
The tools, in no guaranteed order. Empty when the tenant has no MCP server, or none of its servers publishes a tool.
Show child attributes
Show child attributes
Servers that did not answer; their tools are MISSING from this 200. The catalog is returned partial rather than failed, so a non-empty list here means "incomplete, not empty": a tool you expected may simply live on one of these servers. Retry before concluding a tool does not exist, and never substitute allTools: true for a server listed here.
["typebot"]