package main
import(
"context"
"github.com/conductorone/conductorone-sdk-go/pkg/models/shared"
conductoronesdkgo "github.com/conductorone/conductorone-sdk-go"
"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.TestConnection(ctx, nil)
if err != nil {
log.Fatal(err)
}
if res.MCPServerServiceTestConnectionResponse != nil {
// handle response
}
}curl --request POST \
--url https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"appId": "<string>",
"connectorId": "<string>",
"externalConfig": {
"basicAuth": {
"password": "<string>",
"username": "<string>"
},
"bearerToken": {
"token": "<string>"
},
"customHeader": {
"headerName": "<string>",
"headerValue": "<string>"
},
"none": {},
"oauth2": {
"authorizeUrl": "<string>",
"clientId": "<string>",
"clientSecret": "<string>",
"codeChallengeMethodsSupported": [
"<string>"
],
"extraAuthorizeParams": {},
"extraTokenParams": {},
"issuerUrl": "<string>",
"jwtAudience": "<string>",
"jwtIssuer": "<string>",
"jwtPrivateKey": "<string>",
"jwtSubject": "<string>",
"pkce": "<string>",
"scopes": [
"<string>"
],
"scopesSupported": [
"<string>"
],
"tokenEndpointAuthMethod": "<string>",
"tokenUrl": "<string>"
},
"url": "<string>"
},
"updateMask": "<string>"
}
'import requests
url = "https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection"
payload = {
"appId": "<string>",
"connectorId": "<string>",
"externalConfig": {
"basicAuth": {
"password": "<string>",
"username": "<string>"
},
"bearerToken": { "token": "<string>" },
"customHeader": {
"headerName": "<string>",
"headerValue": "<string>"
},
"none": {},
"oauth2": {
"authorizeUrl": "<string>",
"clientId": "<string>",
"clientSecret": "<string>",
"codeChallengeMethodsSupported": ["<string>"],
"extraAuthorizeParams": {},
"extraTokenParams": {},
"issuerUrl": "<string>",
"jwtAudience": "<string>",
"jwtIssuer": "<string>",
"jwtPrivateKey": "<string>",
"jwtSubject": "<string>",
"pkce": "<string>",
"scopes": ["<string>"],
"scopesSupported": ["<string>"],
"tokenEndpointAuthMethod": "<string>",
"tokenUrl": "<string>"
},
"url": "<string>"
},
"updateMask": "<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({
appId: '<string>',
connectorId: '<string>',
externalConfig: {
basicAuth: {password: '<string>', username: '<string>'},
bearerToken: {token: '<string>'},
customHeader: {headerName: '<string>', headerValue: '<string>'},
none: {},
oauth2: {
authorizeUrl: '<string>',
clientId: '<string>',
clientSecret: '<string>',
codeChallengeMethodsSupported: ['<string>'],
extraAuthorizeParams: {},
extraTokenParams: {},
issuerUrl: '<string>',
jwtAudience: '<string>',
jwtIssuer: '<string>',
jwtPrivateKey: '<string>',
jwtSubject: '<string>',
pkce: '<string>',
scopes: ['<string>'],
scopesSupported: ['<string>'],
tokenEndpointAuthMethod: '<string>',
tokenUrl: '<string>'
},
url: '<string>'
},
updateMask: '<string>'
})
};
fetch('https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection', 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/mcp_servers/test_connection",
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([
'appId' => '<string>',
'connectorId' => '<string>',
'externalConfig' => [
'basicAuth' => [
'password' => '<string>',
'username' => '<string>'
],
'bearerToken' => [
'token' => '<string>'
],
'customHeader' => [
'headerName' => '<string>',
'headerValue' => '<string>'
],
'none' => [
],
'oauth2' => [
'authorizeUrl' => '<string>',
'clientId' => '<string>',
'clientSecret' => '<string>',
'codeChallengeMethodsSupported' => [
'<string>'
],
'extraAuthorizeParams' => [
],
'extraTokenParams' => [
],
'issuerUrl' => '<string>',
'jwtAudience' => '<string>',
'jwtIssuer' => '<string>',
'jwtPrivateKey' => '<string>',
'jwtSubject' => '<string>',
'pkce' => '<string>',
'scopes' => [
'<string>'
],
'scopesSupported' => [
'<string>'
],
'tokenEndpointAuthMethod' => '<string>',
'tokenUrl' => '<string>'
],
'url' => '<string>'
],
'updateMask' => '<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/mcp_servers/test_connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"appId\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"externalConfig\": {\n \"basicAuth\": {\n \"password\": \"<string>\",\n \"username\": \"<string>\"\n },\n \"bearerToken\": {\n \"token\": \"<string>\"\n },\n \"customHeader\": {\n \"headerName\": \"<string>\",\n \"headerValue\": \"<string>\"\n },\n \"none\": {},\n \"oauth2\": {\n \"authorizeUrl\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"codeChallengeMethodsSupported\": [\n \"<string>\"\n ],\n \"extraAuthorizeParams\": {},\n \"extraTokenParams\": {},\n \"issuerUrl\": \"<string>\",\n \"jwtAudience\": \"<string>\",\n \"jwtIssuer\": \"<string>\",\n \"jwtPrivateKey\": \"<string>\",\n \"jwtSubject\": \"<string>\",\n \"pkce\": \"<string>\",\n \"scopes\": [\n \"<string>\"\n ],\n \"scopesSupported\": [\n \"<string>\"\n ],\n \"tokenEndpointAuthMethod\": \"<string>\",\n \"tokenUrl\": \"<string>\"\n },\n \"url\": \"<string>\"\n },\n \"updateMask\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection")
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 \"appId\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"externalConfig\": {\n \"basicAuth\": {\n \"password\": \"<string>\",\n \"username\": \"<string>\"\n },\n \"bearerToken\": {\n \"token\": \"<string>\"\n },\n \"customHeader\": {\n \"headerName\": \"<string>\",\n \"headerValue\": \"<string>\"\n },\n \"none\": {},\n \"oauth2\": {\n \"authorizeUrl\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"codeChallengeMethodsSupported\": [\n \"<string>\"\n ],\n \"extraAuthorizeParams\": {},\n \"extraTokenParams\": {},\n \"issuerUrl\": \"<string>\",\n \"jwtAudience\": \"<string>\",\n \"jwtIssuer\": \"<string>\",\n \"jwtPrivateKey\": \"<string>\",\n \"jwtSubject\": \"<string>\",\n \"pkce\": \"<string>\",\n \"scopes\": [\n \"<string>\"\n ],\n \"scopesSupported\": [\n \"<string>\"\n ],\n \"tokenEndpointAuthMethod\": \"<string>\",\n \"tokenUrl\": \"<string>\"\n },\n \"url\": \"<string>\"\n },\n \"updateMask\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"failureReason": "<string>",
"reachable": true,
"toolCount": "<string>"
}Test Connection
TestConnection probes an MCP server with the supplied URL + transport + plaintext credentials and reports whether a real MCP initialize + tools/list succeeded.
package main
import(
"context"
"github.com/conductorone/conductorone-sdk-go/pkg/models/shared"
conductoronesdkgo "github.com/conductorone/conductorone-sdk-go"
"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.TestConnection(ctx, nil)
if err != nil {
log.Fatal(err)
}
if res.MCPServerServiceTestConnectionResponse != nil {
// handle response
}
}curl --request POST \
--url https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"appId": "<string>",
"connectorId": "<string>",
"externalConfig": {
"basicAuth": {
"password": "<string>",
"username": "<string>"
},
"bearerToken": {
"token": "<string>"
},
"customHeader": {
"headerName": "<string>",
"headerValue": "<string>"
},
"none": {},
"oauth2": {
"authorizeUrl": "<string>",
"clientId": "<string>",
"clientSecret": "<string>",
"codeChallengeMethodsSupported": [
"<string>"
],
"extraAuthorizeParams": {},
"extraTokenParams": {},
"issuerUrl": "<string>",
"jwtAudience": "<string>",
"jwtIssuer": "<string>",
"jwtPrivateKey": "<string>",
"jwtSubject": "<string>",
"pkce": "<string>",
"scopes": [
"<string>"
],
"scopesSupported": [
"<string>"
],
"tokenEndpointAuthMethod": "<string>",
"tokenUrl": "<string>"
},
"url": "<string>"
},
"updateMask": "<string>"
}
'import requests
url = "https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection"
payload = {
"appId": "<string>",
"connectorId": "<string>",
"externalConfig": {
"basicAuth": {
"password": "<string>",
"username": "<string>"
},
"bearerToken": { "token": "<string>" },
"customHeader": {
"headerName": "<string>",
"headerValue": "<string>"
},
"none": {},
"oauth2": {
"authorizeUrl": "<string>",
"clientId": "<string>",
"clientSecret": "<string>",
"codeChallengeMethodsSupported": ["<string>"],
"extraAuthorizeParams": {},
"extraTokenParams": {},
"issuerUrl": "<string>",
"jwtAudience": "<string>",
"jwtIssuer": "<string>",
"jwtPrivateKey": "<string>",
"jwtSubject": "<string>",
"pkce": "<string>",
"scopes": ["<string>"],
"scopesSupported": ["<string>"],
"tokenEndpointAuthMethod": "<string>",
"tokenUrl": "<string>"
},
"url": "<string>"
},
"updateMask": "<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({
appId: '<string>',
connectorId: '<string>',
externalConfig: {
basicAuth: {password: '<string>', username: '<string>'},
bearerToken: {token: '<string>'},
customHeader: {headerName: '<string>', headerValue: '<string>'},
none: {},
oauth2: {
authorizeUrl: '<string>',
clientId: '<string>',
clientSecret: '<string>',
codeChallengeMethodsSupported: ['<string>'],
extraAuthorizeParams: {},
extraTokenParams: {},
issuerUrl: '<string>',
jwtAudience: '<string>',
jwtIssuer: '<string>',
jwtPrivateKey: '<string>',
jwtSubject: '<string>',
pkce: '<string>',
scopes: ['<string>'],
scopesSupported: ['<string>'],
tokenEndpointAuthMethod: '<string>',
tokenUrl: '<string>'
},
url: '<string>'
},
updateMask: '<string>'
})
};
fetch('https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection', 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/mcp_servers/test_connection",
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([
'appId' => '<string>',
'connectorId' => '<string>',
'externalConfig' => [
'basicAuth' => [
'password' => '<string>',
'username' => '<string>'
],
'bearerToken' => [
'token' => '<string>'
],
'customHeader' => [
'headerName' => '<string>',
'headerValue' => '<string>'
],
'none' => [
],
'oauth2' => [
'authorizeUrl' => '<string>',
'clientId' => '<string>',
'clientSecret' => '<string>',
'codeChallengeMethodsSupported' => [
'<string>'
],
'extraAuthorizeParams' => [
],
'extraTokenParams' => [
],
'issuerUrl' => '<string>',
'jwtAudience' => '<string>',
'jwtIssuer' => '<string>',
'jwtPrivateKey' => '<string>',
'jwtSubject' => '<string>',
'pkce' => '<string>',
'scopes' => [
'<string>'
],
'scopesSupported' => [
'<string>'
],
'tokenEndpointAuthMethod' => '<string>',
'tokenUrl' => '<string>'
],
'url' => '<string>'
],
'updateMask' => '<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/mcp_servers/test_connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"appId\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"externalConfig\": {\n \"basicAuth\": {\n \"password\": \"<string>\",\n \"username\": \"<string>\"\n },\n \"bearerToken\": {\n \"token\": \"<string>\"\n },\n \"customHeader\": {\n \"headerName\": \"<string>\",\n \"headerValue\": \"<string>\"\n },\n \"none\": {},\n \"oauth2\": {\n \"authorizeUrl\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"codeChallengeMethodsSupported\": [\n \"<string>\"\n ],\n \"extraAuthorizeParams\": {},\n \"extraTokenParams\": {},\n \"issuerUrl\": \"<string>\",\n \"jwtAudience\": \"<string>\",\n \"jwtIssuer\": \"<string>\",\n \"jwtPrivateKey\": \"<string>\",\n \"jwtSubject\": \"<string>\",\n \"pkce\": \"<string>\",\n \"scopes\": [\n \"<string>\"\n ],\n \"scopesSupported\": [\n \"<string>\"\n ],\n \"tokenEndpointAuthMethod\": \"<string>\",\n \"tokenUrl\": \"<string>\"\n },\n \"url\": \"<string>\"\n },\n \"updateMask\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenantDomain}.conductor.one/api/v1/mcp_servers/test_connection")
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 \"appId\": \"<string>\",\n \"connectorId\": \"<string>\",\n \"externalConfig\": {\n \"basicAuth\": {\n \"password\": \"<string>\",\n \"username\": \"<string>\"\n },\n \"bearerToken\": {\n \"token\": \"<string>\"\n },\n \"customHeader\": {\n \"headerName\": \"<string>\",\n \"headerValue\": \"<string>\"\n },\n \"none\": {},\n \"oauth2\": {\n \"authorizeUrl\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"codeChallengeMethodsSupported\": [\n \"<string>\"\n ],\n \"extraAuthorizeParams\": {},\n \"extraTokenParams\": {},\n \"issuerUrl\": \"<string>\",\n \"jwtAudience\": \"<string>\",\n \"jwtIssuer\": \"<string>\",\n \"jwtPrivateKey\": \"<string>\",\n \"jwtSubject\": \"<string>\",\n \"pkce\": \"<string>\",\n \"scopes\": [\n \"<string>\"\n ],\n \"scopesSupported\": [\n \"<string>\"\n ],\n \"tokenEndpointAuthMethod\": \"<string>\",\n \"tokenUrl\": \"<string>\"\n },\n \"url\": \"<string>\"\n },\n \"updateMask\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"failureReason": "<string>",
"reachable": true,
"toolCount": "<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.
Body
MCPServerServiceTestConnectionRequest exercises an MCPServerExternalConfig against the upstream server and reports whether the supplied URL + transport + credentials accept a real MCP initialize + tools/list.
App ID of an existing external MCP connector. When set together with connector_id, the request runs in edit mode (see above).
Connector ID of an existing external MCP connector. When set together with app_id, the request runs in edit mode (see above).
MCPServerExternalConfig configures an external MCP server accessed via HTTP transport. The server is routed through the MCP gateway for credential decryption.
This message contains a oneof named auth_config. Only a single field of the following list may be set at a time:
- none
- bearerToken
- oauth2
- customHeader
- basicAuth
Show child attributes
Show child attributes
Response
Successful response
The MCPServerServiceTestConnectionResponse message.
Sanitized, human-readable explanation of why the probe failed, set only when reachable=false (e.g. "MCP server unreachable or rejected the credentials (HTTP 401 Unauthorized)"). Empty when reachable=true. Never contains raw upstream response bytes.
True when the MCP initialize handshake AND a tools/list call both succeeded against the upstream with the supplied credentials. False when the probe ran but the upstream was unreachable or rejected the request — see failure_reason. Malformed requests (missing/invalid config, bad permissions) are returned as a gRPC error, not reachable=false.
Number of tools advertised by the upstream's tools/list response. Zero when reachable=false; can also legitimately be zero when the server is reachable but exposes no tools. int64 to match MCPServerSearchWithToolCountResult.tool_count.
Was this page helpful?