package main
import(
"context"
"github.com/conductorone/conductorone-sdk-go/pkg/models/shared"
conductoronesdkgo "github.com/conductorone/conductorone-sdk-go"
"github.com/conductorone/conductorone-sdk-go/pkg/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := conductoronesdkgo.New(
conductoronesdkgo.WithSecurity(shared.Security{
BearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
Oauth: "<YOUR_OAUTH_HERE>",
}),
)
res, err := s.MCPServer.SearchWithToolCount(ctx, operations.C1APIAiGovernanceV1MCPServerServiceSearchWithToolCountRequest{
AppID: "<id>",
})
if err != nil {
log.Fatal(err)
}
if res.MCPServerServiceSearchWithToolCountResponse != nil {
// handle response
}
}curl --request POST \
--url https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"includeLastCalledAt": true,
"pageSize": 123,
"pageToken": "<string>",
"query": "<string>"
}
'import requests
url = "https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search"
payload = {
"includeLastCalledAt": True,
"pageSize": 123,
"pageToken": "<string>",
"query": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
includeLastCalledAt: true,
pageSize: 123,
pageToken: '<string>',
query: '<string>'
})
};
fetch('https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search', 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://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'includeLastCalledAt' => true,
'pageSize' => 123,
'pageToken' => '<string>',
'query' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"includeLastCalledAt\": true,\n \"pageSize\": 123,\n \"pageToken\": \"<string>\",\n \"query\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"includeLastCalledAt\": true,\n \"pageSize\": 123,\n \"pageToken\": \"<string>\",\n \"query\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"list": [
{
"mcpServer": {
"appId": "<string>",
"awsAccessKeyId": "<string>",
"awsSecretAccessKeyConfigured": true,
"awsSessionTokenConfigured": true,
"basicAuthPasswordConfigured": true,
"basicAuthUsername": "<string>",
"bearerTokenConfigured": true,
"configFieldValues": {},
"connectorId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"credentialsSetupUrl": "<string>",
"customHeaderName": "<string>",
"customHeaderValueConfigured": true,
"defaultToolPrefix": "<string>",
"description": "<string>",
"displayName": "<string>",
"endpointUrl": "<string>",
"lastCalledAt": "2023-11-07T05:31:56Z",
"mcpServerCatalogId": "<string>",
"oauth2AuthorizeUrl": "<string>",
"oauth2ClientId": "<string>",
"oauth2ClientSecretExpiresAt": "<string>",
"oauth2CodeChallengeMethodsSupported": [
"<string>"
],
"oauth2CredentialsConfigured": true,
"oauth2ExtraAuthorizeParams": {},
"oauth2ExtraTokenParams": {},
"oauth2IssuerUrl": "<string>",
"oauth2JwtAudience": "<string>",
"oauth2JwtIssuer": "<string>",
"oauth2JwtPrivateKeyConfigured": true,
"oauth2JwtSubject": "<string>",
"oauth2Pkce": "<string>",
"oauth2Scopes": [
"<string>"
],
"oauth2ScopesSupported": [
"<string>"
],
"oauth2ServiceAuthorized": true,
"oauth2ServiceAuthorizedAsEmail": "<string>",
"oauth2ServiceAuthorizedAsName": "<string>",
"oauth2ServiceAuthorizedAt": "2023-11-07T05:31:56Z",
"oauth2ServiceAuthorizedBy": "<string>",
"oauth2TokenEndpointAuthMethod": "<string>",
"oauth2TokenUrl": "<string>",
"sourceAppId": "<string>",
"toolPrefix": "<string>",
"tunnelApplianceId": "<string>",
"tunnelBridgeId": "<string>",
"tunnelServiceName": "<string>",
"tunneled": true,
"updatedAt": "2023-11-07T05:31:56Z"
},
"toolCount": "<string>"
}
],
"nextPageToken": "<string>"
}Search With Tool Count
SearchWithToolCount searches MCP servers with filtering and returns per-server tool state counts.
package main
import(
"context"
"github.com/conductorone/conductorone-sdk-go/pkg/models/shared"
conductoronesdkgo "github.com/conductorone/conductorone-sdk-go"
"github.com/conductorone/conductorone-sdk-go/pkg/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := conductoronesdkgo.New(
conductoronesdkgo.WithSecurity(shared.Security{
BearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
Oauth: "<YOUR_OAUTH_HERE>",
}),
)
res, err := s.MCPServer.SearchWithToolCount(ctx, operations.C1APIAiGovernanceV1MCPServerServiceSearchWithToolCountRequest{
AppID: "<id>",
})
if err != nil {
log.Fatal(err)
}
if res.MCPServerServiceSearchWithToolCountResponse != nil {
// handle response
}
}curl --request POST \
--url https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"includeLastCalledAt": true,
"pageSize": 123,
"pageToken": "<string>",
"query": "<string>"
}
'import requests
url = "https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search"
payload = {
"includeLastCalledAt": True,
"pageSize": 123,
"pageToken": "<string>",
"query": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
includeLastCalledAt: true,
pageSize: 123,
pageToken: '<string>',
query: '<string>'
})
};
fetch('https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search', 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://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'includeLastCalledAt' => true,
'pageSize' => 123,
'pageToken' => '<string>',
'query' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"includeLastCalledAt\": true,\n \"pageSize\": 123,\n \"pageToken\": \"<string>\",\n \"query\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenantDomain}.conductor.one/api/v1/apps/{app_id}/mcp_servers/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"includeLastCalledAt\": true,\n \"pageSize\": 123,\n \"pageToken\": \"<string>\",\n \"query\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"list": [
{
"mcpServer": {
"appId": "<string>",
"awsAccessKeyId": "<string>",
"awsSecretAccessKeyConfigured": true,
"awsSessionTokenConfigured": true,
"basicAuthPasswordConfigured": true,
"basicAuthUsername": "<string>",
"bearerTokenConfigured": true,
"configFieldValues": {},
"connectorId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"credentialsSetupUrl": "<string>",
"customHeaderName": "<string>",
"customHeaderValueConfigured": true,
"defaultToolPrefix": "<string>",
"description": "<string>",
"displayName": "<string>",
"endpointUrl": "<string>",
"lastCalledAt": "2023-11-07T05:31:56Z",
"mcpServerCatalogId": "<string>",
"oauth2AuthorizeUrl": "<string>",
"oauth2ClientId": "<string>",
"oauth2ClientSecretExpiresAt": "<string>",
"oauth2CodeChallengeMethodsSupported": [
"<string>"
],
"oauth2CredentialsConfigured": true,
"oauth2ExtraAuthorizeParams": {},
"oauth2ExtraTokenParams": {},
"oauth2IssuerUrl": "<string>",
"oauth2JwtAudience": "<string>",
"oauth2JwtIssuer": "<string>",
"oauth2JwtPrivateKeyConfigured": true,
"oauth2JwtSubject": "<string>",
"oauth2Pkce": "<string>",
"oauth2Scopes": [
"<string>"
],
"oauth2ScopesSupported": [
"<string>"
],
"oauth2ServiceAuthorized": true,
"oauth2ServiceAuthorizedAsEmail": "<string>",
"oauth2ServiceAuthorizedAsName": "<string>",
"oauth2ServiceAuthorizedAt": "2023-11-07T05:31:56Z",
"oauth2ServiceAuthorizedBy": "<string>",
"oauth2TokenEndpointAuthMethod": "<string>",
"oauth2TokenUrl": "<string>",
"sourceAppId": "<string>",
"toolPrefix": "<string>",
"tunnelApplianceId": "<string>",
"tunnelBridgeId": "<string>",
"tunnelServiceName": "<string>",
"tunneled": true,
"updatedAt": "2023-11-07T05:31:56Z"
},
"toolCount": "<string>"
}
],
"nextPageToken": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
This API uses OAuth2 with the Client Credential flow. Client Credentials must be sent in the BODY, not the headers. For an example of how to implement this, refer to the c1TokenSource.Token() function.
Path Parameters
App identifier (required).
Body
MCPServerServiceSearchWithToolCountRequest searches MCP servers for an app with filters and returns per-server tool counts by state.
When true, the server populates MCPServerView.last_called_at on each
returned row by querying TSDB for the most recent mcp_tool_calls
raw emit time per (app_id, connector_id). Costs one Dynamo Limit(1)
read per row; callers that don't render the "Last used" value should
leave false.
Page size (max 100).
Page token for pagination.
Optional text query matched against display_name.
Which tool state to return count for on each server.
MCP_TOOL_STATE_UNSPECIFIED, MCP_TOOL_STATE_PENDING_REVIEW, MCP_TOOL_STATE_APPROVED, MCP_TOOL_STATE_DISABLED, MCP_TOOL_STATE_REMOVED Response
MCPServerServiceSearchWithToolCountResponse returns matching MCP servers with tool counts.
Was this page helpful?