Get agent topology showing agents and their subscription edges
curl --request GET \
--url https://api.dev.swarmd.ai/registry/v1/agents/topology \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.dev.swarmd.ai/registry/v1/agents/topology"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.dev.swarmd.ai/registry/v1/agents/topology', 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.dev.swarmd.ai/registry/v1/agents/topology",
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.dev.swarmd.ai/registry/v1/agents/topology"
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.dev.swarmd.ai/registry/v1/agents/topology")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.swarmd.ai/registry/v1/agents/topology")
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{
"agents": [
{
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"agentCardUrl": "<string>",
"originalCardUrl": "<string>",
"registryVersion": "<string>",
"cardVersion": "<string>",
"status": "<string>",
"statusReason": "<string>",
"healthStatus": "<string>",
"visibility": "PUBLIC",
"subscriptionCount": 123,
"metrics": {
"requestCount": 123,
"errorPercentage": 123,
"avgLatencyMs": 123
},
"uptimePercentage": 123,
"tenantDetails": {
"tenantName": "<string>",
"publicContactEmail": "<string>"
},
"authType": "NONE",
"cardName": "<string>",
"cardDescription": "<string>",
"protocolVersion": "<string>",
"governance": {
"riskTier": "UNCLASSIFIED",
"effectiveRiskTier": "UNCLASSIFIED",
"approvalPending": true,
"accountableOwnerUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerConfirmed": true,
"reviewDueAt": "2023-11-07T05:31:56Z",
"inheritedFromCount": 123,
"readinessPercent": 123,
"governanceState": "DRAFT",
"openIncidentCount": 123,
"nextIncidentDueAt": "2023-11-07T05:31:56Z"
},
"gate": {
"action": "REGISTER_VERSION",
"mode": "WARN",
"riskTier": "UNCLASSIFIED",
"passed": true,
"unmetObligations": [
{
"id": "<string>",
"article": "<string>",
"label": "<string>",
"fixHint": "<string>",
"mandatory": true,
"satisfierKind": "DOCUMENT",
"documentKind": "RISK_ASSESSMENT",
"control": "EVENT_LOGGING",
"status": "SATISFIED",
"detail": "<string>",
"fixTarget": "CLASSIFICATION"
}
]
}
}
],
"edges": [
{
"sourceAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sinkAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"mcpServers": [
{
"mcpServerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"transport": "STREAMABLE_HTTP",
"visibility": "PUBLIC",
"status": "<string>"
}
],
"mcpEdges": [
{
"sourceAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mcpServerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"users": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"userAgentEdges": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sinkAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"userMcpEdges": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mcpServerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"llmGateways": [
{
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"status": "<string>"
}
],
"llmProviders": [
{
"llmProviderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"kind": "<string>"
}
],
"agentGatewayEdges": [
{
"sourceAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"userGatewayEdges": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"gatewayProviderEdges": [
{
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"llmProviderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"channels": [
{
"channelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"clientId": "<string>",
"status": "<string>"
}
],
"channelAgentEdges": [
{
"channelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sinkAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}Agents
Get agent topology showing agents and their subscription edges
Security Requirements
| Auth Types | Entities | Permissions | Required Roles |
|---|---|---|---|
| USER | REGISTRY | READ | REGISTRY:READ |
GET
/
registry
/
v1
/
agents
/
topology
Get agent topology showing agents and their subscription edges
curl --request GET \
--url https://api.dev.swarmd.ai/registry/v1/agents/topology \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.dev.swarmd.ai/registry/v1/agents/topology"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.dev.swarmd.ai/registry/v1/agents/topology', 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.dev.swarmd.ai/registry/v1/agents/topology",
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.dev.swarmd.ai/registry/v1/agents/topology"
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.dev.swarmd.ai/registry/v1/agents/topology")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.swarmd.ai/registry/v1/agents/topology")
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{
"agents": [
{
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"agentCardUrl": "<string>",
"originalCardUrl": "<string>",
"registryVersion": "<string>",
"cardVersion": "<string>",
"status": "<string>",
"statusReason": "<string>",
"healthStatus": "<string>",
"visibility": "PUBLIC",
"subscriptionCount": 123,
"metrics": {
"requestCount": 123,
"errorPercentage": 123,
"avgLatencyMs": 123
},
"uptimePercentage": 123,
"tenantDetails": {
"tenantName": "<string>",
"publicContactEmail": "<string>"
},
"authType": "NONE",
"cardName": "<string>",
"cardDescription": "<string>",
"protocolVersion": "<string>",
"governance": {
"riskTier": "UNCLASSIFIED",
"effectiveRiskTier": "UNCLASSIFIED",
"approvalPending": true,
"accountableOwnerUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerConfirmed": true,
"reviewDueAt": "2023-11-07T05:31:56Z",
"inheritedFromCount": 123,
"readinessPercent": 123,
"governanceState": "DRAFT",
"openIncidentCount": 123,
"nextIncidentDueAt": "2023-11-07T05:31:56Z"
},
"gate": {
"action": "REGISTER_VERSION",
"mode": "WARN",
"riskTier": "UNCLASSIFIED",
"passed": true,
"unmetObligations": [
{
"id": "<string>",
"article": "<string>",
"label": "<string>",
"fixHint": "<string>",
"mandatory": true,
"satisfierKind": "DOCUMENT",
"documentKind": "RISK_ASSESSMENT",
"control": "EVENT_LOGGING",
"status": "SATISFIED",
"detail": "<string>",
"fixTarget": "CLASSIFICATION"
}
]
}
}
],
"edges": [
{
"sourceAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sinkAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"mcpServers": [
{
"mcpServerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"transport": "STREAMABLE_HTTP",
"visibility": "PUBLIC",
"status": "<string>"
}
],
"mcpEdges": [
{
"sourceAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mcpServerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"users": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"userAgentEdges": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sinkAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"userMcpEdges": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mcpServerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"llmGateways": [
{
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"status": "<string>"
}
],
"llmProviders": [
{
"llmProviderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"kind": "<string>"
}
],
"agentGatewayEdges": [
{
"sourceAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"userGatewayEdges": [
{
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"gatewayProviderEdges": [
{
"llmGatewayId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"llmProviderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"channels": [
{
"channelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"clientId": "<string>",
"status": "<string>"
}
],
"channelAgentEdges": [
{
"channelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sinkAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}Authorizations
JWT token (USER, AGENT, or SERVICE auth)
Query Parameters
Response
200 - */*
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
