Begin the OAuth handshake for an External MCP Connection
curl --request GET \
--url https://api.example.com/v1/mcp-connections/{connectionId}/connect/startimport requests
url = "https://api.example.com/v1/mcp-connections/{connectionId}/connect/start"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/mcp-connections/{connectionId}/connect/start', 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.example.com/v1/mcp-connections/{connectionId}/connect/start",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/mcp-connections/{connectionId}/connect/start"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/mcp-connections/{connectionId}/connect/start")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/mcp-connections/{connectionId}/connect/start")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"authorizeUrl": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"callbackUrl": "<string>",
"clientMetadataUrl": "<string>",
"manualRequirements": [
"<string>"
]
}{
"error": "<string>",
"message": "<string>",
"diagnostic": {
"referenceId": "<string>",
"category": "<string>",
"code": "<string>",
"retryable": true,
"operatorAction": "<string>",
"message": "<string>",
"httpStatus": 349,
"outbound": {
"origin": "<string>",
"pathHash": "<string>"
},
"providerRequestId": "<string>",
"providerStatus": 0,
"providerCode": "<string>",
"payloadBytes": 0,
"jsonRpcCode": 0,
"connectUrl": "<string>"
}
}Authentication
Begin the OAuth handshake for an External MCP Connection
Runs RFC 9728 discovery, dynamic client registration if needed, and returns an authorize URL to redirect the admin’s browser to.
GET
/
v1
/
mcp-connections
/
{connectionId}
/
connect
/
start
Begin the OAuth handshake for an External MCP Connection
curl --request GET \
--url https://api.example.com/v1/mcp-connections/{connectionId}/connect/startimport requests
url = "https://api.example.com/v1/mcp-connections/{connectionId}/connect/start"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/mcp-connections/{connectionId}/connect/start', 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.example.com/v1/mcp-connections/{connectionId}/connect/start",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/mcp-connections/{connectionId}/connect/start"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/mcp-connections/{connectionId}/connect/start")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/mcp-connections/{connectionId}/connect/start")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"authorizeUrl": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"callbackUrl": "<string>",
"clientMetadataUrl": "<string>",
"manualRequirements": [
"<string>"
]
}{
"error": "<string>",
"message": "<string>",
"diagnostic": {
"referenceId": "<string>",
"category": "<string>",
"code": "<string>",
"retryable": true,
"operatorAction": "<string>",
"message": "<string>",
"httpStatus": 349,
"outbound": {
"origin": "<string>",
"pathHash": "<string>"
},
"providerRequestId": "<string>",
"providerStatus": 0,
"providerCode": "<string>",
"payloadBytes": 0,
"jsonRpcCode": 0,
"connectUrl": "<string>"
}
}Path Parameters
Den TypeID with 'emc_' prefix and a 26-character base32 suffix.
Required string length:
30Pattern:
^emc_.*Was this page helpful?
Disconnect the calling member's account for a per-member External MCP ConnectionShared OAuth callback for External MCP Connections
⌘I