List tools
curl --request GET \
--url https://app.useduckie.ai/api/v1/tools \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.useduckie.ai/api/v1/tools"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.useduckie.ai/api/v1/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://app.useduckie.ai/api/v1/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: 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://app.useduckie.ai/api/v1/tools"
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://app.useduckie.ai/api/v1/tools")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.useduckie.ai/api/v1/tools")
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": [
{
"id": "<string>",
"object": "tool",
"name": "<string>",
"description": "<string>",
"is_write_action": true,
"requires_approval": true,
"enabled": true,
"parameters": [
{
"name": "<string>",
"type": "<string>",
"required": true,
"description": "<string>",
"has_preset_value": true
}
],
"duckie": {
"category": "<string>",
"availability": "<string>"
},
"app": {
"integration_id": "<string>",
"integration_name": "<string>",
"connection_status": "<string>"
},
"custom": {
"endpoint": "<string>",
"method": "<string>",
"body_format": "<string>",
"headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"http_timeout_sec": 123,
"auth": {}
},
"mcp": {
"server_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"server_name": "<string>",
"mcp_tool_name": "<string>",
"input_schema": {}
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"limit": 123,
"next_cursor": "<string>",
"has_more": true
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}Tools
List tools
Returns the organization’s tool catalog, including Duckie tools, app tools, custom tools, and MCP tools.
GET
https://app.useduckie.ai
/
api
/
v1
/
tools
List tools
curl --request GET \
--url https://app.useduckie.ai/api/v1/tools \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.useduckie.ai/api/v1/tools"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.useduckie.ai/api/v1/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://app.useduckie.ai/api/v1/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: 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://app.useduckie.ai/api/v1/tools"
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://app.useduckie.ai/api/v1/tools")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.useduckie.ai/api/v1/tools")
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": [
{
"id": "<string>",
"object": "tool",
"name": "<string>",
"description": "<string>",
"is_write_action": true,
"requires_approval": true,
"enabled": true,
"parameters": [
{
"name": "<string>",
"type": "<string>",
"required": true,
"description": "<string>",
"has_preset_value": true
}
],
"duckie": {
"category": "<string>",
"availability": "<string>"
},
"app": {
"integration_id": "<string>",
"integration_name": "<string>",
"connection_status": "<string>"
},
"custom": {
"endpoint": "<string>",
"method": "<string>",
"body_format": "<string>",
"headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"http_timeout_sec": 123,
"auth": {}
},
"mcp": {
"server_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"server_name": "<string>",
"mcp_tool_name": "<string>",
"input_schema": {}
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"pagination": {
"limit": 123,
"next_cursor": "<string>",
"has_more": true
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}{
"error": {
"message": "<string>",
"request_id": "<string>",
"retry_after": 2
}
}Authorizations
API key created in Duckie Settings -> API Access.
Query Parameters
Maximum number of records to return. Defaults to 100 and is capped at 200.
Required range:
1 <= x <= 200Opaque cursor from the previous page's pagination.next_cursor value.
Filter by one or more tool types. Repeat the parameter for OR matching.
Available options:
duckie_tool, app_tool, custom_tool, mcp_tool Search tool name, description, app integration name, and MCP server name.
Filter tools by whether they perform write actions.
Filter tools by whether they require approval.
Filter app tools by integration ID.
Filter MCP tools by server UUID.
⌘I