List custom tool runtimes
curl --request GET \
--url https://api.conduit.ai/v1/custom-tools/runtimes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.conduit.ai/v1/custom-tools/runtimes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.conduit.ai/v1/custom-tools/runtimes', 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.conduit.ai/v1/custom-tools/runtimes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.conduit.ai/v1/custom-tools/runtimes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.conduit.ai/v1/custom-tools/runtimes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conduit.ai/v1/custom-tools/runtimes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"language": "python",
"display_name": "Python",
"file_extension": "py",
"package_manager": "pip",
"entrypoint_signature": "def main(**params) -> dict",
"return_contract": "Return a dict containing a string `message` key. Optionally include `rawData` for structured data the agent can read. Example: `return {\"message\": \"Found 3 results\", \"rawData\": {...}}`.",
"starter_template": "def main(**params):\n result = \"Hello from custom tool!\"\n return {\"message\": result, \"rawData\": {\"any\": \"additional data\"}}",
"builtin_modules": [
"json",
"math",
"datetime",
"re",
"urllib"
],
"available_packages": [
"httpx",
"numpy",
"pandas",
"requests"
]
},
{
"language": "javascript",
"display_name": "JavaScript",
"file_extension": "js",
"package_manager": "bun",
"entrypoint_signature": "async function main(params) -> object",
"return_contract": "Return an object containing a string `message` key. Optionally include `rawData` for structured data the agent can read. Example: `return { message: 'Found 3 results', rawData: {...} }`.",
"starter_template": "async function main(params) {\n const result = \"Hello from custom tool!\";\n return { message: result, rawData: { any: \"additional data\" } };\n}",
"builtin_modules": [
"fs",
"path",
"crypto",
"https"
],
"available_packages": []
}
]
}{
"error": "Invalid workspace id"
}{
"error": "Invalid workspace id"
}Custom Tools
List Custom Tool Runtimes
Returns the supported runtimes (Python, JavaScript) with the entrypoint signature, required return shape, starter template, built-in modules, and auto-installable packages for each. Read this before authoring tool code.
GET
/
v1
/
custom-tools
/
runtimes
List custom tool runtimes
curl --request GET \
--url https://api.conduit.ai/v1/custom-tools/runtimes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.conduit.ai/v1/custom-tools/runtimes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.conduit.ai/v1/custom-tools/runtimes', 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.conduit.ai/v1/custom-tools/runtimes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.conduit.ai/v1/custom-tools/runtimes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.conduit.ai/v1/custom-tools/runtimes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conduit.ai/v1/custom-tools/runtimes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"language": "python",
"display_name": "Python",
"file_extension": "py",
"package_manager": "pip",
"entrypoint_signature": "def main(**params) -> dict",
"return_contract": "Return a dict containing a string `message` key. Optionally include `rawData` for structured data the agent can read. Example: `return {\"message\": \"Found 3 results\", \"rawData\": {...}}`.",
"starter_template": "def main(**params):\n result = \"Hello from custom tool!\"\n return {\"message\": result, \"rawData\": {\"any\": \"additional data\"}}",
"builtin_modules": [
"json",
"math",
"datetime",
"re",
"urllib"
],
"available_packages": [
"httpx",
"numpy",
"pandas",
"requests"
]
},
{
"language": "javascript",
"display_name": "JavaScript",
"file_extension": "js",
"package_manager": "bun",
"entrypoint_signature": "async function main(params) -> object",
"return_contract": "Return an object containing a string `message` key. Optionally include `rawData` for structured data the agent can read. Example: `return { message: 'Found 3 results', rawData: {...} }`.",
"starter_template": "async function main(params) {\n const result = \"Hello from custom tool!\";\n return { message: result, rawData: { any: \"additional data\" } };\n}",
"builtin_modules": [
"fs",
"path",
"crypto",
"https"
],
"available_packages": []
}
]
}{
"error": "Invalid workspace id"
}{
"error": "Invalid workspace id"
}Authorizations
Conduit API token. Use Authorization: Bearer <token>. Read/write endpoints require a token with write access.
Response
Supported custom tool runtimes
Supported custom tool runtimes, with the entrypoint signature, return contract, and available dependencies per language.
Show child attributes
Show child attributes
Was this page helpful?
⌘I