curl --request GET \
--url https://api.agents.slng.ai/v1/agents/tools/{tool_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.agents.slng.ai/v1/agents/tools/{tool_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.agents.slng.ai/v1/agents/tools/{tool_id}', 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.agents.slng.ai/v1/agents/tools/{tool_id}",
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.agents.slng.ai/v1/agents/tools/{tool_id}"
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.agents.slng.ai/v1/agents/tools/{tool_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agents.slng.ai/v1/agents/tools/{tool_id}")
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{
"id": "7b2a1c34-5d6e-4f70-8a90-1b2c3d4e5f60",
"organisation_id": "0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9",
"name": "lookup_customer",
"tool_type": "api_request",
"config": {
"type": "api_request",
"url": "https://api.example.com/lookup",
"http_method": "POST"
},
"description": "Look up a customer by id",
"declared_secrets": [],
"dependencies": [],
"argument_defaults": {},
"code_src": null,
"last_run_status": "succeeded",
"source": "org",
"latest_version": 3,
"content_hash": "3f1ab2c4d5e6f708",
"is_current_hash_green": true,
"is_current_version": true,
"schema_stale": false,
"gate_status": {
"static": {
"config_valid": {
"passed": true
},
"secrets_exist": {
"passed": true
},
"name_unique": {
"passed": true
}
},
"green_run": {
"passed": true
}
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}Get Tool
Return one tool visible to your organisation with its current publish gates. Custom Code responses include code_src, dependencies, declared secrets, and the introspected argument schema. Curated tools are returned with source set to curated and are read-only. A tool owned by another organisation returns 404.
curl --request GET \
--url https://api.agents.slng.ai/v1/agents/tools/{tool_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.agents.slng.ai/v1/agents/tools/{tool_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.agents.slng.ai/v1/agents/tools/{tool_id}', 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.agents.slng.ai/v1/agents/tools/{tool_id}",
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.agents.slng.ai/v1/agents/tools/{tool_id}"
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.agents.slng.ai/v1/agents/tools/{tool_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agents.slng.ai/v1/agents/tools/{tool_id}")
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{
"id": "7b2a1c34-5d6e-4f70-8a90-1b2c3d4e5f60",
"organisation_id": "0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9",
"name": "lookup_customer",
"tool_type": "api_request",
"config": {
"type": "api_request",
"url": "https://api.example.com/lookup",
"http_method": "POST"
},
"description": "Look up a customer by id",
"declared_secrets": [],
"dependencies": [],
"argument_defaults": {},
"code_src": null,
"last_run_status": "succeeded",
"source": "org",
"latest_version": 3,
"content_hash": "3f1ab2c4d5e6f708",
"is_current_hash_green": true,
"is_current_version": true,
"schema_stale": false,
"gate_status": {
"static": {
"config_valid": {
"passed": true
},
"secrets_exist": {
"passed": true
},
"name_unique": {
"passed": true
}
},
"green_run": {
"passed": true
}
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}{
"detail": "The tool is attached to an active agent.",
"error": {
"code": "TOOL_DELETE_BLOCKED",
"message": "The tool is attached to an active agent.",
"retryable": false
}
}Authorizations
Your SLNG consumer API key.
Path Parameters
The tool UUID. Curated tools are visible but read-only, and a tool owned by another organisation returns 404.
Response
The requested tool. Curated tools are returned with source set to curated.
A tool and its current draft state, including config, publish gates, and version info.
Vault secret names this tool is allowed to read at runtime.
Pinned Python package dependencies installed for this tool.
curated tools are built in and maintained by SLNG; org tools were created by your organisation.
curated, org Gate set is selected by tool_type (V2): data → static + green_run; code also reports config_valid; ctx-bound → config_valid ONLY.
Show child attributes
Show child attributes
code, api_request, end_call, voicemail_detection, transfer_call, send_sms, current_datetime, user_phone_number Configuration for a Custom Code tool. Custom code runs sandboxed with no internet access.
- CodeConfig
- ApiRequestConfig
- EndCallConfig
- VoicemailDetectionConfig
- TransferCallConfig
- SendSmsConfig
- CurrentDatetimeConfig
- UserPhoneNumberConfig
Show child attributes
Show child attributes
Current default values for the tool arguments, keyed by argument name. Each value is a literal (string, number, or boolean) or a Vault variable reference using the {{$NAME}} syntax. Applied when a caller does not supply that argument.
Current Python source for the tool, populated for Custom Code tools only. Custom Code runs sandboxed with no internet access.