from engini import Engini
client = Engini() # reads ENGINI_API_KEY
toolset = client.toolsets.create(
name="Support agent",
connections=[
{"connectionId": 42, "toolSlugs": ["gmail_send_mail"]},
{"connectionId": 17, "applicationSlug": "monday"},
],
)import { Engini } from "@engini/sdk";
const client = new Engini(); // reads ENGINI_API_KEY
const toolset = await client.toolsets.create({
name: "Support agent",
connections: [
{ connectionId: 42, toolSlugs: ["gmail_send_mail"] },
{ connectionId: 17, applicationSlug: "monday" },
],
});engini toolsets create --name support-agent --connection 42:gmail_send_mail --application mondayconst options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
connections: [{connectionId: 123, applicationSlug: '<string>', toolSlugs: ['<string>']}],
workflows: ['<string>']
})
};
fetch('https://api.engini.io/v1/toolsets', 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.engini.io/v1/toolsets",
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([
'name' => '<string>',
'connections' => [
[
'connectionId' => 123,
'applicationSlug' => '<string>',
'toolSlugs' => [
'<string>'
]
]
],
'workflows' => [
'<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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.engini.io/v1/toolsets"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"connections\": [\n {\n \"connectionId\": 123,\n \"applicationSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ],\n \"workflows\": [\n \"<string>\"\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.engini.io/v1/toolsets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"connections\": [\n {\n \"connectionId\": 123,\n \"applicationSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ],\n \"workflows\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engini.io/v1/toolsets")
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 \"name\": \"<string>\",\n \"connections\": [\n {\n \"connectionId\": 123,\n \"applicationSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ],\n \"workflows\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"toolsetId": "<string>",
"name": "<string>",
"connections": [
{
"connectionId": 123,
"applicationSlug": "<string>",
"toolSlugs": [
"<string>"
],
"applicationName": "<string>"
}
],
"workflows": [
"<string>"
],
"createdDate": "2023-11-07T05:31:56Z",
"updatedDate": "2023-11-07T05:31:56Z",
"createdByAccountUserId": 123,
"updatedByAccountUserId": 123
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}Create toolset
Creates a new toolset owned by the caller, with the given connections (and their permitted tool slugs) and workflows. A connection entry may omit connectionId and instead supply applicationSlug or at least one tool slug, letting the caller’s default connection for that application be resolved and stored at save time.
from engini import Engini
client = Engini() # reads ENGINI_API_KEY
toolset = client.toolsets.create(
name="Support agent",
connections=[
{"connectionId": 42, "toolSlugs": ["gmail_send_mail"]},
{"connectionId": 17, "applicationSlug": "monday"},
],
)import { Engini } from "@engini/sdk";
const client = new Engini(); // reads ENGINI_API_KEY
const toolset = await client.toolsets.create({
name: "Support agent",
connections: [
{ connectionId: 42, toolSlugs: ["gmail_send_mail"] },
{ connectionId: 17, applicationSlug: "monday" },
],
});engini toolsets create --name support-agent --connection 42:gmail_send_mail --application mondayconst options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
connections: [{connectionId: 123, applicationSlug: '<string>', toolSlugs: ['<string>']}],
workflows: ['<string>']
})
};
fetch('https://api.engini.io/v1/toolsets', 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.engini.io/v1/toolsets",
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([
'name' => '<string>',
'connections' => [
[
'connectionId' => 123,
'applicationSlug' => '<string>',
'toolSlugs' => [
'<string>'
]
]
],
'workflows' => [
'<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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.engini.io/v1/toolsets"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"connections\": [\n {\n \"connectionId\": 123,\n \"applicationSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ],\n \"workflows\": [\n \"<string>\"\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.engini.io/v1/toolsets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"connections\": [\n {\n \"connectionId\": 123,\n \"applicationSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ],\n \"workflows\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engini.io/v1/toolsets")
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 \"name\": \"<string>\",\n \"connections\": [\n {\n \"connectionId\": 123,\n \"applicationSlug\": \"<string>\",\n \"toolSlugs\": [\n \"<string>\"\n ]\n }\n ],\n \"workflows\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"toolsetId": "<string>",
"name": "<string>",
"connections": [
{
"connectionId": 123,
"applicationSlug": "<string>",
"toolSlugs": [
"<string>"
],
"applicationName": "<string>"
}
],
"workflows": [
"<string>"
],
"createdDate": "2023-11-07T05:31:56Z",
"updatedDate": "2023-11-07T05:31:56Z",
"createdByAccountUserId": 123,
"updatedByAccountUserId": 123
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}{
"errorCode": "<string>",
"message": "<string>",
"requestId": "<string>",
"timestamp": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>"
}
]
}Authorizations
Enter your JWT token
Body
The toolset creation payload.
Response
The newly created toolset.
Public-shape DTO for a toolset (per-account-user, named scope bundling specific connections + an allowed tool set).
Unique identifier of the toolset (the MCPServer token GUID).
Display name of the toolset.
Connections included in this toolset and their permitted tools.
Show child attributes
Show child attributes
Workflow token GUIDs included in this toolset.
When the toolset was created.
When the toolset was last updated; null if never updated.
Account-user ID that created the toolset.
Account-user ID that last updated the toolset; null/0 until first updated.