cURL
curl 'https://api.orchestrivo.com/api/v1/mcp/tools/call' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"team_id": "team_4f8c92ab",
"calls": [
{
"ref": "send-1",
"server_id": "slack",
"tool_name": "send_message",
"arguments": {"channel": "#general", "text": "Hello from Orchestrivo"}
}
]
}'
from orchestrivo import Orchestrivo
client = Orchestrivo(access_token="YOUR_ACCESS_TOKEN")
response = client.mcp.execute(
server_id="slack",
tool_name="send_message",
arguments={"channel": "#general", "text": "Hello from Orchestrivo"},
ref="send-1",
team_id="team_4f8c92ab",
)
for result in response.results:
print(result.ref, result.status)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
calls: [
{
server_id: 'slack',
tool_name: 'send_message',
ref: 'send-1',
arguments: {channel: '#general', text: 'Hello from Orchestrivo'}
}
],
team_id: 'team_4f8c92ab'
})
};
fetch('https://api.orchestrivo.com/api/v1/mcp/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.orchestrivo.com/api/v1/mcp/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([
'calls' => [
[
'server_id' => 'slack',
'tool_name' => 'send_message',
'ref' => 'send-1',
'arguments' => [
'channel' => '#general',
'text' => 'Hello from Orchestrivo'
]
]
],
'team_id' => 'team_4f8c92ab'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.orchestrivo.com/api/v1/mcp/tools/call"
payload := strings.NewReader("{\n \"calls\": [\n {\n \"server_id\": \"slack\",\n \"tool_name\": \"send_message\",\n \"ref\": \"send-1\",\n \"arguments\": {\n \"channel\": \"#general\",\n \"text\": \"Hello from Orchestrivo\"\n }\n }\n ],\n \"team_id\": \"team_4f8c92ab\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.orchestrivo.com/api/v1/mcp/tools/call")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"calls\": [\n {\n \"server_id\": \"slack\",\n \"tool_name\": \"send_message\",\n \"ref\": \"send-1\",\n \"arguments\": {\n \"channel\": \"#general\",\n \"text\": \"Hello from Orchestrivo\"\n }\n }\n ],\n \"team_id\": \"team_4f8c92ab\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orchestrivo.com/api/v1/mcp/tools/call")
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 \"calls\": [\n {\n \"server_id\": \"slack\",\n \"tool_name\": \"send_message\",\n \"ref\": \"send-1\",\n \"arguments\": {\n \"channel\": \"#general\",\n \"text\": \"Hello from Orchestrivo\"\n }\n }\n ],\n \"team_id\": \"team_4f8c92ab\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"ref": "send-1",
"server_id": "slack",
"tool_name": "send_message",
"status": "success",
"content": [
{
"type": "text",
"text": "Message sent to #general"
}
],
"error": null
}
]
}
Call MCP tools
Execute a batch of 1–5 MCP tool calls. Calls run concurrently and each result reports its own status.
POST
/
mcp
/
tools
/
call
cURL
curl 'https://api.orchestrivo.com/api/v1/mcp/tools/call' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"team_id": "team_4f8c92ab",
"calls": [
{
"ref": "send-1",
"server_id": "slack",
"tool_name": "send_message",
"arguments": {"channel": "#general", "text": "Hello from Orchestrivo"}
}
]
}'
from orchestrivo import Orchestrivo
client = Orchestrivo(access_token="YOUR_ACCESS_TOKEN")
response = client.mcp.execute(
server_id="slack",
tool_name="send_message",
arguments={"channel": "#general", "text": "Hello from Orchestrivo"},
ref="send-1",
team_id="team_4f8c92ab",
)
for result in response.results:
print(result.ref, result.status)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
calls: [
{
server_id: 'slack',
tool_name: 'send_message',
ref: 'send-1',
arguments: {channel: '#general', text: 'Hello from Orchestrivo'}
}
],
team_id: 'team_4f8c92ab'
})
};
fetch('https://api.orchestrivo.com/api/v1/mcp/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.orchestrivo.com/api/v1/mcp/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([
'calls' => [
[
'server_id' => 'slack',
'tool_name' => 'send_message',
'ref' => 'send-1',
'arguments' => [
'channel' => '#general',
'text' => 'Hello from Orchestrivo'
]
]
],
'team_id' => 'team_4f8c92ab'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.orchestrivo.com/api/v1/mcp/tools/call"
payload := strings.NewReader("{\n \"calls\": [\n {\n \"server_id\": \"slack\",\n \"tool_name\": \"send_message\",\n \"ref\": \"send-1\",\n \"arguments\": {\n \"channel\": \"#general\",\n \"text\": \"Hello from Orchestrivo\"\n }\n }\n ],\n \"team_id\": \"team_4f8c92ab\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.orchestrivo.com/api/v1/mcp/tools/call")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"calls\": [\n {\n \"server_id\": \"slack\",\n \"tool_name\": \"send_message\",\n \"ref\": \"send-1\",\n \"arguments\": {\n \"channel\": \"#general\",\n \"text\": \"Hello from Orchestrivo\"\n }\n }\n ],\n \"team_id\": \"team_4f8c92ab\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orchestrivo.com/api/v1/mcp/tools/call")
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 \"calls\": [\n {\n \"server_id\": \"slack\",\n \"tool_name\": \"send_message\",\n \"ref\": \"send-1\",\n \"arguments\": {\n \"channel\": \"#general\",\n \"text\": \"Hello from Orchestrivo\"\n }\n }\n ],\n \"team_id\": \"team_4f8c92ab\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"ref": "send-1",
"server_id": "slack",
"tool_name": "send_message",
"status": "success",
"content": [
{
"type": "text",
"text": "Message sent to #general"
}
],
"error": null
}
]
}
How are errors and credit checks reported?
How are errors and credit checks reported?
When Orchestrivo accepts the request, MCP execution failures such as target server authentication, policy blocks, invalid tools, upstream HTTP errors, and connection failures are returned in
results[*].status and results[*].error. A credit check runs before the tool calls; insufficient credits return HTTP 402 credit_limit_exceeded. Top-level 4xx responses are reserved for Orchestrivo request, authentication, permission, and credit failures. 200 covers homogeneous execution outcomes (all calls succeeded or all calls failed); mixed success/failure batches return 207. If you previously treated non-2xx HTTP statuses as MCP execution failures, update your integration to inspect each result’s status and error.Authorizations
Body
application/json
Response
Batch processed. Inspect each result's status and error; this can include all-success and all-failed execution outcomes.
Show child attributes
Show child attributes
Was this page helpful?