List Tools
curl --request GET \
--url https://api.bland.ai/v2/tools \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/tools"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/tools', 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.bland.ai/v2/tools",
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: <authorization>"
],
]);
$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.bland.ai/v2/tools"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v2/tools")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": {
"tools": [
{
"id": "TL-abc123def456",
"name": "SendSlackMessage",
"description": "Sends a message to a Slack channel",
"integration": "slack",
"action": "send_message",
"input_schema": {
"type": "object",
"properties": {
"channel": { "type": "string" },
"message": { "type": "string" }
},
"required": ["channel", "message"]
},
"speech": "Sending that message to Slack now.",
"timeout": 10000,
"cache": false,
"max_retries": 0,
"cooldown": null,
"label": null,
"is_active": true,
"is_draft": false,
"public": false,
"created_at": "2025-09-23T15:13:36.348Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"hasMore": false,
"nextPage": null
}
},
"errors": null
}
Tools
List Tools
Retrieve a paginated list of your tools. Returns tools that are not tied to a specific resource connection.
GET
/
v2
/
tools
List Tools
curl --request GET \
--url https://api.bland.ai/v2/tools \
--header 'authorization: <authorization>'import requests
url = "https://api.bland.ai/v2/tools"
headers = {"authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {authorization: '<authorization>'}};
fetch('https://api.bland.ai/v2/tools', 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.bland.ai/v2/tools",
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: <authorization>"
],
]);
$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.bland.ai/v2/tools"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "<authorization>")
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.bland.ai/v2/tools")
.header("authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bland.ai/v2/tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"data": {
"tools": [
{
"id": "TL-abc123def456",
"name": "SendSlackMessage",
"description": "Sends a message to a Slack channel",
"integration": "slack",
"action": "send_message",
"input_schema": {
"type": "object",
"properties": {
"channel": { "type": "string" },
"message": { "type": "string" }
},
"required": ["channel", "message"]
},
"speech": "Sending that message to Slack now.",
"timeout": 10000,
"cache": false,
"max_retries": 0,
"cooldown": null,
"label": null,
"is_active": true,
"is_draft": false,
"public": false,
"created_at": "2025-09-23T15:13:36.348Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"hasMore": false,
"nextPage": null
}
},
"errors": null
}
Headers
string
required
Your API key for authentication.
Query Parameters
integer
Page number for pagination. Minimum
1. Defaults to 1.integer
Number of results per page. Minimum
1, maximum 1000. Defaults to 50.string
Filter results by searching the tool’s
name and description fields.string
Field to sort results by. Currently only
"created_at" is supported.string
Sort direction. Allowed values:
"asc", "desc". Defaults to "desc".This endpoint only returns tools that are not tied to a specific resource connection (
resource_id: null). Tools created as part of a connected integration resource are excluded.Response
array
Array of integration tool objects.
Show tool object
Show tool object
string
Unique identifier for the tool (prefixed with
TL-).string
The tool’s name.
string
The tool’s description.
string
The integration key (e.g.
"slack").string
The action within the integration.
object
JSON Schema for the tool’s input parameters.
string
Text the AI says while using this tool.
number
Timeout in milliseconds.
boolean
Whether response caching is enabled.
number
Maximum retry attempts.
number
Seconds between retries.
string
Human-readable label, if set.
boolean
Whether the tool is active and available for use.
boolean
Whether the tool is in draft state.
boolean
Whether the tool is publicly visible.
string
ISO 8601 timestamp of when the tool was created.
object
null|array
null on success, or a list of error objects if the request failed.{
"data": {
"tools": [
{
"id": "TL-abc123def456",
"name": "SendSlackMessage",
"description": "Sends a message to a Slack channel",
"integration": "slack",
"action": "send_message",
"input_schema": {
"type": "object",
"properties": {
"channel": { "type": "string" },
"message": { "type": "string" }
},
"required": ["channel", "message"]
},
"speech": "Sending that message to Slack now.",
"timeout": 10000,
"cache": false,
"max_retries": 0,
"cooldown": null,
"label": null,
"is_active": true,
"is_draft": false,
"public": false,
"created_at": "2025-09-23T15:13:36.348Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"hasMore": false,
"nextPage": null
}
},
"errors": null
}
Docs for agents: llms.txt
Was this page helpful?
⌘I