curl --request GET \
--url https://api.danubeai.com/v1/tools/{tool_id} \
--header 'danube-api-key: <api-key>'import requests
url = "https://api.danubeai.com/v1/tools/{tool_id}"
headers = {"danube-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'danube-api-key': '<api-key>'}};
fetch('https://api.danubeai.com/v1/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.danubeai.com/v1/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 => [
"danube-api-key: <api-key>"
],
]);
$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.danubeai.com/v1/tools/{tool_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("danube-api-key", "<api-key>")
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.danubeai.com/v1/tools/{tool_id}")
.header("danube-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.danubeai.com/v1/tools/{tool_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["danube-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"description": "<string>",
"service_id": "<string>",
"tags": [
"<string>"
],
"method": "<string>",
"path": "<string>",
"parameters": {},
"output": {},
"tips": "<string>",
"version": "<string>",
"is_paid": true,
"price_per_call_cents": 123,
"readiness": "ready",
"configuration_url": "<string>",
"reliability": {},
"deprecated": true,
"deprecation_message": "<string>",
"sunset_date": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Get Tool by ID
Retrieve a specific tool by its unique identifier
curl --request GET \
--url https://api.danubeai.com/v1/tools/{tool_id} \
--header 'danube-api-key: <api-key>'import requests
url = "https://api.danubeai.com/v1/tools/{tool_id}"
headers = {"danube-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'danube-api-key': '<api-key>'}};
fetch('https://api.danubeai.com/v1/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.danubeai.com/v1/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 => [
"danube-api-key: <api-key>"
],
]);
$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.danubeai.com/v1/tools/{tool_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("danube-api-key", "<api-key>")
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.danubeai.com/v1/tools/{tool_id}")
.header("danube-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.danubeai.com/v1/tools/{tool_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["danube-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"description": "<string>",
"service_id": "<string>",
"tags": [
"<string>"
],
"method": "<string>",
"path": "<string>",
"parameters": {},
"output": {},
"tips": "<string>",
"version": "<string>",
"is_paid": true,
"price_per_call_cents": 123,
"readiness": "ready",
"configuration_url": "<string>",
"reliability": {},
"deprecated": true,
"deprecation_message": "<string>",
"sunset_date": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Example
curl -X GET "https://api.danubeai.com/v1/tools/abc123" \
-H "danube-api-key: YOUR_API_KEY"
Authorizations
Your Danube API key
Path Parameters
The unique identifier of the tool
Response
Tool details
Unique identifier for the tool
Human-readable identifier (e.g. gmail-send-email); accepted anywhere a tool id is
Display name of the tool
What the tool does
ID of the service this tool belongs to
Tags for categorizing the tool
HTTP method, for tools on an api service
Request path, or service_id/ for MCP tools
Map of parameter name to its schema (type, location, description, required, default, enum)
Declared output fields, when the publisher provided them
Usage tips for agents, when set
Whether the caller can run the tool right now
ready, needs_credential, unavailable Where to connect the service when readiness is needs_credential
30-day reliability block for tools called recently: calls_30d, success_rate_30d, p50_seconds, last_error_class, faults, flagged, ...
After this date the tool leaves search and refuses calls
