curl --request POST \
--url https://api.atako.ai/integrations/mcp/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"displayName": "<string>",
"tools": [
{
"name": "<string>",
"enabled": true
}
]
}
'import requests
url = "https://api.atako.ai/integrations/mcp/connections"
payload = {
"url": "<string>",
"displayName": "<string>",
"tools": [
{
"name": "<string>",
"enabled": True
}
]
}
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({
url: '<string>',
displayName: '<string>',
tools: [{name: '<string>', enabled: true}]
})
};
fetch('https://api.atako.ai/integrations/mcp/connections', 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.atako.ai/integrations/mcp/connections",
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([
'url' => '<string>',
'displayName' => '<string>',
'tools' => [
[
'name' => '<string>',
'enabled' => true
]
]
]),
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.atako.ai/integrations/mcp/connections"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"displayName\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"enabled\": true\n }\n ]\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.atako.ai/integrations/mcp/connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"displayName\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"enabled\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/integrations/mcp/connections")
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 \"url\": \"<string>\",\n \"displayName\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"enabled\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"providerKey": "<string>",
"displayName": "<string>",
"authType": "api_key",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "company",
"isMine": true,
"actions": [
{
"key": "<string>",
"scope": "read",
"description": "<string>"
}
],
"mcp": {
"host": "<string>",
"slug": "<string>",
"lastSyncedAt": "<string>",
"toolCount": 123,
"enabledCount": 123,
"pendingReview": 123
},
"externalLabel": "<string>",
"config": {},
"scopes": [
"<string>"
],
"lastUsedAt": "2023-11-07T05:31:56Z",
"createdBy": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Connect a remote MCP server as a custom integration
Re-probes the server: only tools the server really announces are stored; the body only chooses which are enabled and their read/write scope. visibility follows the usual rule (‘company’ = admins only, ‘personal’ = any member). Several connections may target the same server (one token each). Agents see enabled tools as <slug>.<tool> through the usual grants.
curl --request POST \
--url https://api.atako.ai/integrations/mcp/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"displayName": "<string>",
"tools": [
{
"name": "<string>",
"enabled": true
}
]
}
'import requests
url = "https://api.atako.ai/integrations/mcp/connections"
payload = {
"url": "<string>",
"displayName": "<string>",
"tools": [
{
"name": "<string>",
"enabled": True
}
]
}
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({
url: '<string>',
displayName: '<string>',
tools: [{name: '<string>', enabled: true}]
})
};
fetch('https://api.atako.ai/integrations/mcp/connections', 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.atako.ai/integrations/mcp/connections",
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([
'url' => '<string>',
'displayName' => '<string>',
'tools' => [
[
'name' => '<string>',
'enabled' => true
]
]
]),
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.atako.ai/integrations/mcp/connections"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"displayName\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"enabled\": true\n }\n ]\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.atako.ai/integrations/mcp/connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"displayName\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"enabled\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/integrations/mcp/connections")
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 \"url\": \"<string>\",\n \"displayName\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"enabled\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"providerKey": "<string>",
"displayName": "<string>",
"authType": "api_key",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "company",
"isMine": true,
"actions": [
{
"key": "<string>",
"scope": "read",
"description": "<string>"
}
],
"mcp": {
"host": "<string>",
"slug": "<string>",
"lastSyncedAt": "<string>",
"toolCount": 123,
"enabledCount": 123,
"pendingReview": 123
},
"externalLabel": "<string>",
"config": {},
"scopes": [
"<string>"
],
"lastUsedAt": "2023-11-07T05:31:56Z",
"createdBy": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
An aik_… programmatic API key (app.atako.ai → Settings → API keys) or a Supabase session JWT.
Body
80company, personal How the platform authenticates to the MCP server. The token is encrypted at rest and never returned nor shown to agents.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Never includes credential material.
api_key, oauth2, mcp, internal active, error, revoked 'company' = shared with the whole company, managed by its admins; 'personal' = visible to, managed and grantable (to their own agents) by its creator only. Another member's personal connections are never returned.
company, personal Created by the caller.
List endpoint, custom MCP connections only (providerKey 'mcp', no catalog entry): the active tools, catalog-shaped.
Show child attributes
Show child attributes
List endpoint, custom MCP connections only.
Show child attributes
Show child attributes
Show child attributes
Show child attributes