Manually run a tool from an External MCP Connection
curl --request POST \
--url https://api.example.com/v1/mcp-connections/{connectionId}/tools/call \
--header 'Content-Type: application/json' \
--data '
{
"toolName": "<string>",
"arguments": {}
}
'import requests
url = "https://api.example.com/v1/mcp-connections/{connectionId}/tools/call"
payload = {
"toolName": "<string>",
"arguments": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({toolName: '<string>', arguments: {}})
};
fetch('https://api.example.com/v1/mcp-connections/{connectionId}/tools/call', 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}/tools/call",
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([
'toolName' => '<string>',
'arguments' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/mcp-connections/{connectionId}/tools/call"
payload := strings.NewReader("{\n \"toolName\": \"<string>\",\n \"arguments\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/mcp-connections/{connectionId}/tools/call")
.header("Content-Type", "application/json")
.body("{\n \"toolName\": \"<string>\",\n \"arguments\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/mcp-connections/{connectionId}/tools/call")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"toolName\": \"<string>\",\n \"arguments\": {}\n}"
response = http.request(request)
puts response.read_body{
"referenceId": "<string>",
"durationMs": 1,
"result": "<unknown>",
"inspection": {
"diagnosis": {
"summary": "<string>"
},
"request": {
"method": "<string>",
"url": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
},
"response": {
"status": 349,
"statusText": "<string>",
"durationMs": 1,
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
}
}
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}{
"error": "<string>"
}{
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<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>"
},
"inspection": {
"diagnosis": {
"summary": "<string>"
},
"request": {
"method": "<string>",
"url": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
},
"response": {
"status": 349,
"statusText": "<string>",
"durationMs": 1,
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
}
}
}Authentication
Manually run a tool from an External MCP Connection
Workspace owner/admin diagnostic runner. Executes one named MCP tool with caller-supplied JSON arguments using the Den-managed shared credential or the calling admin’s connected credential. Returns an ephemeral inspection of the actual tools/call HTTP request and response with credential and session headers redacted. The caller must already be granted access to the connection. Credentials, arguments, results, and inspection payloads are never written to logs.
POST
/
v1
/
mcp-connections
/
{connectionId}
/
tools
/
call
Manually run a tool from an External MCP Connection
curl --request POST \
--url https://api.example.com/v1/mcp-connections/{connectionId}/tools/call \
--header 'Content-Type: application/json' \
--data '
{
"toolName": "<string>",
"arguments": {}
}
'import requests
url = "https://api.example.com/v1/mcp-connections/{connectionId}/tools/call"
payload = {
"toolName": "<string>",
"arguments": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({toolName: '<string>', arguments: {}})
};
fetch('https://api.example.com/v1/mcp-connections/{connectionId}/tools/call', 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}/tools/call",
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([
'toolName' => '<string>',
'arguments' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/mcp-connections/{connectionId}/tools/call"
payload := strings.NewReader("{\n \"toolName\": \"<string>\",\n \"arguments\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/mcp-connections/{connectionId}/tools/call")
.header("Content-Type", "application/json")
.body("{\n \"toolName\": \"<string>\",\n \"arguments\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/mcp-connections/{connectionId}/tools/call")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"toolName\": \"<string>\",\n \"arguments\": {}\n}"
response = http.request(request)
puts response.read_body{
"referenceId": "<string>",
"durationMs": 1,
"result": "<unknown>",
"inspection": {
"diagnosis": {
"summary": "<string>"
},
"request": {
"method": "<string>",
"url": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
},
"response": {
"status": 349,
"statusText": "<string>",
"durationMs": 1,
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
}
}
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}{
"error": "<string>"
}{
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<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>"
},
"inspection": {
"diagnosis": {
"summary": "<string>"
},
"request": {
"method": "<string>",
"url": "<string>",
"startedAt": "2023-11-07T05:31:56Z",
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
},
"response": {
"status": 349,
"statusText": "<string>",
"durationMs": 1,
"headers": [
{
"name": "<string>",
"value": "<string>",
"redacted": true
}
],
"body": {
"text": "<string>",
"bytes": 4503599627370495,
"truncated": true,
"unavailable": true
}
}
}
}Path Parameters
Den TypeID with 'emc_' prefix and a 26-character base32 suffix.
Required string length:
30Pattern:
^emc_.*Body
application/json
Was this page helpful?
⌘I