curl --request POST \
--url https://flowra.dev/api/v1/tools \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"slug": "send_slack_digest",
"name": "Send Slack digest",
"description": "Posts a daily summary to a Slack channel",
"toolkitSlug": "my-custom-toolkit",
"inputParameters": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
},
"required": [
"channel"
]
},
"outputParameters": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
}
}
},
"deprecatedInfo": {
"displayName": "<string>",
"version": "<string>",
"availableVersions": [
"<string>"
],
"isDeprecated": true,
"toolkit": {
"logo": "<string>"
}
},
"instructions": "Call when the user asks to share a digest in Slack.",
"noAuth": false,
"scopes": [
"chat:write"
],
"tags": [
"slack",
"digest"
],
"isImportant": false,
"popularityScore": 0,
"type": "action",
"availableVersions": [
"1.0.0",
"1.1.0"
],
"version": "1.0.0",
"isDeprecated": false,
"isDisabled": false,
"triggerThreadKey": "invoice.paid",
"executionCreditCost": 2
}
'import requests
url = "https://flowra.dev/api/v1/tools"
payload = {
"slug": "send_slack_digest",
"name": "Send Slack digest",
"description": "Posts a daily summary to a Slack channel",
"toolkitSlug": "my-custom-toolkit",
"inputParameters": {
"type": "object",
"properties": { "channel": { "type": "string" } },
"required": ["channel"]
},
"outputParameters": {
"type": "object",
"properties": { "ok": { "type": "boolean" } }
},
"deprecatedInfo": {
"displayName": "<string>",
"version": "<string>",
"availableVersions": ["<string>"],
"isDeprecated": True,
"toolkit": { "logo": "<string>" }
},
"instructions": "Call when the user asks to share a digest in Slack.",
"noAuth": False,
"scopes": ["chat:write"],
"tags": ["slack", "digest"],
"isImportant": False,
"popularityScore": 0,
"type": "action",
"availableVersions": ["1.0.0", "1.1.0"],
"version": "1.0.0",
"isDeprecated": False,
"isDisabled": False,
"triggerThreadKey": "invoice.paid",
"executionCreditCost": 2
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
slug: 'send_slack_digest',
name: 'Send Slack digest',
description: 'Posts a daily summary to a Slack channel',
toolkitSlug: 'my-custom-toolkit',
inputParameters: {type: 'object', properties: {channel: {type: 'string'}}, required: ['channel']},
outputParameters: {type: 'object', properties: {ok: {type: 'boolean'}}},
deprecatedInfo: {
displayName: '<string>',
version: '<string>',
availableVersions: ['<string>'],
isDeprecated: true,
toolkit: {logo: '<string>'}
},
instructions: 'Call when the user asks to share a digest in Slack.',
noAuth: false,
scopes: ['chat:write'],
tags: ['slack', 'digest'],
isImportant: false,
popularityScore: 0,
type: 'action',
availableVersions: ['1.0.0', '1.1.0'],
version: '1.0.0',
isDeprecated: false,
isDisabled: false,
triggerThreadKey: 'invoice.paid',
executionCreditCost: 2
})
};
fetch('https://flowra.dev/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://flowra.dev/api/v1/tools",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'slug' => 'send_slack_digest',
'name' => 'Send Slack digest',
'description' => 'Posts a daily summary to a Slack channel',
'toolkitSlug' => 'my-custom-toolkit',
'inputParameters' => [
'type' => 'object',
'properties' => [
'channel' => [
'type' => 'string'
]
],
'required' => [
'channel'
]
],
'outputParameters' => [
'type' => 'object',
'properties' => [
'ok' => [
'type' => 'boolean'
]
]
],
'deprecatedInfo' => [
'displayName' => '<string>',
'version' => '<string>',
'availableVersions' => [
'<string>'
],
'isDeprecated' => true,
'toolkit' => [
'logo' => '<string>'
]
],
'instructions' => 'Call when the user asks to share a digest in Slack.',
'noAuth' => false,
'scopes' => [
'chat:write'
],
'tags' => [
'slack',
'digest'
],
'isImportant' => false,
'popularityScore' => 0,
'type' => 'action',
'availableVersions' => [
'1.0.0',
'1.1.0'
],
'version' => '1.0.0',
'isDeprecated' => false,
'isDisabled' => false,
'triggerThreadKey' => 'invoice.paid',
'executionCreditCost' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flowra.dev/api/v1/tools"
payload := strings.NewReader("{\n \"slug\": \"send_slack_digest\",\n \"name\": \"Send Slack digest\",\n \"description\": \"Posts a daily summary to a Slack channel\",\n \"toolkitSlug\": \"my-custom-toolkit\",\n \"inputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ]\n },\n \"outputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"deprecatedInfo\": {\n \"displayName\": \"<string>\",\n \"version\": \"<string>\",\n \"availableVersions\": [\n \"<string>\"\n ],\n \"isDeprecated\": true,\n \"toolkit\": {\n \"logo\": \"<string>\"\n }\n },\n \"instructions\": \"Call when the user asks to share a digest in Slack.\",\n \"noAuth\": false,\n \"scopes\": [\n \"chat:write\"\n ],\n \"tags\": [\n \"slack\",\n \"digest\"\n ],\n \"isImportant\": false,\n \"popularityScore\": 0,\n \"type\": \"action\",\n \"availableVersions\": [\n \"1.0.0\",\n \"1.1.0\"\n ],\n \"version\": \"1.0.0\",\n \"isDeprecated\": false,\n \"isDisabled\": false,\n \"triggerThreadKey\": \"invoice.paid\",\n \"executionCreditCost\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flowra.dev/api/v1/tools")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"slug\": \"send_slack_digest\",\n \"name\": \"Send Slack digest\",\n \"description\": \"Posts a daily summary to a Slack channel\",\n \"toolkitSlug\": \"my-custom-toolkit\",\n \"inputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ]\n },\n \"outputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"deprecatedInfo\": {\n \"displayName\": \"<string>\",\n \"version\": \"<string>\",\n \"availableVersions\": [\n \"<string>\"\n ],\n \"isDeprecated\": true,\n \"toolkit\": {\n \"logo\": \"<string>\"\n }\n },\n \"instructions\": \"Call when the user asks to share a digest in Slack.\",\n \"noAuth\": false,\n \"scopes\": [\n \"chat:write\"\n ],\n \"tags\": [\n \"slack\",\n \"digest\"\n ],\n \"isImportant\": false,\n \"popularityScore\": 0,\n \"type\": \"action\",\n \"availableVersions\": [\n \"1.0.0\",\n \"1.1.0\"\n ],\n \"version\": \"1.0.0\",\n \"isDeprecated\": false,\n \"isDisabled\": false,\n \"triggerThreadKey\": \"invoice.paid\",\n \"executionCreditCost\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowra.dev/api/v1/tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"slug\": \"send_slack_digest\",\n \"name\": \"Send Slack digest\",\n \"description\": \"Posts a daily summary to a Slack channel\",\n \"toolkitSlug\": \"my-custom-toolkit\",\n \"inputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ]\n },\n \"outputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"deprecatedInfo\": {\n \"displayName\": \"<string>\",\n \"version\": \"<string>\",\n \"availableVersions\": [\n \"<string>\"\n ],\n \"isDeprecated\": true,\n \"toolkit\": {\n \"logo\": \"<string>\"\n }\n },\n \"instructions\": \"Call when the user asks to share a digest in Slack.\",\n \"noAuth\": false,\n \"scopes\": [\n \"chat:write\"\n ],\n \"tags\": [\n \"slack\",\n \"digest\"\n ],\n \"isImportant\": false,\n \"popularityScore\": 0,\n \"type\": \"action\",\n \"availableVersions\": [\n \"1.0.0\",\n \"1.1.0\"\n ],\n \"version\": \"1.0.0\",\n \"isDeprecated\": false,\n \"isDisabled\": false,\n \"triggerThreadKey\": \"invoice.paid\",\n \"executionCreditCost\": 2\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed successfully",
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"slug": "gmail_send_email",
"name": "Send Email",
"description": "Sends an email via Gmail",
"instructions": "Use when the user asks to send an email.",
"toolkitSlug": "gmail",
"inputParameters": {
"type": "object",
"properties": {
"to": {
"type": "string"
}
}
},
"outputParameters": {
"type": "object",
"properties": {
"messageId": {
"type": "string"
}
}
},
"noAuth": false,
"availableVersions": [
"1.0.0"
],
"version": "1.0.0",
"scopes": [
"gmail.send"
],
"tags": [
"email"
],
"isImportant": false,
"isDeprecated": false,
"isDisabled": false,
"popularityScore": 12,
"provider": "COMPOSIO",
"type": "action",
"ragContentHash": "",
"ragSyncedAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"fieldModifiers": {},
"script": "javascript",
"executionCreditCost": 0
}
}Create a new tool
Create a custom tool (e.g. API call, script, or custom logic) that your workflows and agents can call. Define name, description, and input schema.
curl --request POST \
--url https://flowra.dev/api/v1/tools \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"slug": "send_slack_digest",
"name": "Send Slack digest",
"description": "Posts a daily summary to a Slack channel",
"toolkitSlug": "my-custom-toolkit",
"inputParameters": {
"type": "object",
"properties": {
"channel": {
"type": "string"
}
},
"required": [
"channel"
]
},
"outputParameters": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
}
}
},
"deprecatedInfo": {
"displayName": "<string>",
"version": "<string>",
"availableVersions": [
"<string>"
],
"isDeprecated": true,
"toolkit": {
"logo": "<string>"
}
},
"instructions": "Call when the user asks to share a digest in Slack.",
"noAuth": false,
"scopes": [
"chat:write"
],
"tags": [
"slack",
"digest"
],
"isImportant": false,
"popularityScore": 0,
"type": "action",
"availableVersions": [
"1.0.0",
"1.1.0"
],
"version": "1.0.0",
"isDeprecated": false,
"isDisabled": false,
"triggerThreadKey": "invoice.paid",
"executionCreditCost": 2
}
'import requests
url = "https://flowra.dev/api/v1/tools"
payload = {
"slug": "send_slack_digest",
"name": "Send Slack digest",
"description": "Posts a daily summary to a Slack channel",
"toolkitSlug": "my-custom-toolkit",
"inputParameters": {
"type": "object",
"properties": { "channel": { "type": "string" } },
"required": ["channel"]
},
"outputParameters": {
"type": "object",
"properties": { "ok": { "type": "boolean" } }
},
"deprecatedInfo": {
"displayName": "<string>",
"version": "<string>",
"availableVersions": ["<string>"],
"isDeprecated": True,
"toolkit": { "logo": "<string>" }
},
"instructions": "Call when the user asks to share a digest in Slack.",
"noAuth": False,
"scopes": ["chat:write"],
"tags": ["slack", "digest"],
"isImportant": False,
"popularityScore": 0,
"type": "action",
"availableVersions": ["1.0.0", "1.1.0"],
"version": "1.0.0",
"isDeprecated": False,
"isDisabled": False,
"triggerThreadKey": "invoice.paid",
"executionCreditCost": 2
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
slug: 'send_slack_digest',
name: 'Send Slack digest',
description: 'Posts a daily summary to a Slack channel',
toolkitSlug: 'my-custom-toolkit',
inputParameters: {type: 'object', properties: {channel: {type: 'string'}}, required: ['channel']},
outputParameters: {type: 'object', properties: {ok: {type: 'boolean'}}},
deprecatedInfo: {
displayName: '<string>',
version: '<string>',
availableVersions: ['<string>'],
isDeprecated: true,
toolkit: {logo: '<string>'}
},
instructions: 'Call when the user asks to share a digest in Slack.',
noAuth: false,
scopes: ['chat:write'],
tags: ['slack', 'digest'],
isImportant: false,
popularityScore: 0,
type: 'action',
availableVersions: ['1.0.0', '1.1.0'],
version: '1.0.0',
isDeprecated: false,
isDisabled: false,
triggerThreadKey: 'invoice.paid',
executionCreditCost: 2
})
};
fetch('https://flowra.dev/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://flowra.dev/api/v1/tools",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'slug' => 'send_slack_digest',
'name' => 'Send Slack digest',
'description' => 'Posts a daily summary to a Slack channel',
'toolkitSlug' => 'my-custom-toolkit',
'inputParameters' => [
'type' => 'object',
'properties' => [
'channel' => [
'type' => 'string'
]
],
'required' => [
'channel'
]
],
'outputParameters' => [
'type' => 'object',
'properties' => [
'ok' => [
'type' => 'boolean'
]
]
],
'deprecatedInfo' => [
'displayName' => '<string>',
'version' => '<string>',
'availableVersions' => [
'<string>'
],
'isDeprecated' => true,
'toolkit' => [
'logo' => '<string>'
]
],
'instructions' => 'Call when the user asks to share a digest in Slack.',
'noAuth' => false,
'scopes' => [
'chat:write'
],
'tags' => [
'slack',
'digest'
],
'isImportant' => false,
'popularityScore' => 0,
'type' => 'action',
'availableVersions' => [
'1.0.0',
'1.1.0'
],
'version' => '1.0.0',
'isDeprecated' => false,
'isDisabled' => false,
'triggerThreadKey' => 'invoice.paid',
'executionCreditCost' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flowra.dev/api/v1/tools"
payload := strings.NewReader("{\n \"slug\": \"send_slack_digest\",\n \"name\": \"Send Slack digest\",\n \"description\": \"Posts a daily summary to a Slack channel\",\n \"toolkitSlug\": \"my-custom-toolkit\",\n \"inputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ]\n },\n \"outputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"deprecatedInfo\": {\n \"displayName\": \"<string>\",\n \"version\": \"<string>\",\n \"availableVersions\": [\n \"<string>\"\n ],\n \"isDeprecated\": true,\n \"toolkit\": {\n \"logo\": \"<string>\"\n }\n },\n \"instructions\": \"Call when the user asks to share a digest in Slack.\",\n \"noAuth\": false,\n \"scopes\": [\n \"chat:write\"\n ],\n \"tags\": [\n \"slack\",\n \"digest\"\n ],\n \"isImportant\": false,\n \"popularityScore\": 0,\n \"type\": \"action\",\n \"availableVersions\": [\n \"1.0.0\",\n \"1.1.0\"\n ],\n \"version\": \"1.0.0\",\n \"isDeprecated\": false,\n \"isDisabled\": false,\n \"triggerThreadKey\": \"invoice.paid\",\n \"executionCreditCost\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flowra.dev/api/v1/tools")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"slug\": \"send_slack_digest\",\n \"name\": \"Send Slack digest\",\n \"description\": \"Posts a daily summary to a Slack channel\",\n \"toolkitSlug\": \"my-custom-toolkit\",\n \"inputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ]\n },\n \"outputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"deprecatedInfo\": {\n \"displayName\": \"<string>\",\n \"version\": \"<string>\",\n \"availableVersions\": [\n \"<string>\"\n ],\n \"isDeprecated\": true,\n \"toolkit\": {\n \"logo\": \"<string>\"\n }\n },\n \"instructions\": \"Call when the user asks to share a digest in Slack.\",\n \"noAuth\": false,\n \"scopes\": [\n \"chat:write\"\n ],\n \"tags\": [\n \"slack\",\n \"digest\"\n ],\n \"isImportant\": false,\n \"popularityScore\": 0,\n \"type\": \"action\",\n \"availableVersions\": [\n \"1.0.0\",\n \"1.1.0\"\n ],\n \"version\": \"1.0.0\",\n \"isDeprecated\": false,\n \"isDisabled\": false,\n \"triggerThreadKey\": \"invoice.paid\",\n \"executionCreditCost\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowra.dev/api/v1/tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"slug\": \"send_slack_digest\",\n \"name\": \"Send Slack digest\",\n \"description\": \"Posts a daily summary to a Slack channel\",\n \"toolkitSlug\": \"my-custom-toolkit\",\n \"inputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"channel\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel\"\n ]\n },\n \"outputParameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"deprecatedInfo\": {\n \"displayName\": \"<string>\",\n \"version\": \"<string>\",\n \"availableVersions\": [\n \"<string>\"\n ],\n \"isDeprecated\": true,\n \"toolkit\": {\n \"logo\": \"<string>\"\n }\n },\n \"instructions\": \"Call when the user asks to share a digest in Slack.\",\n \"noAuth\": false,\n \"scopes\": [\n \"chat:write\"\n ],\n \"tags\": [\n \"slack\",\n \"digest\"\n ],\n \"isImportant\": false,\n \"popularityScore\": 0,\n \"type\": \"action\",\n \"availableVersions\": [\n \"1.0.0\",\n \"1.1.0\"\n ],\n \"version\": \"1.0.0\",\n \"isDeprecated\": false,\n \"isDisabled\": false,\n \"triggerThreadKey\": \"invoice.paid\",\n \"executionCreditCost\": 2\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed successfully",
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"slug": "gmail_send_email",
"name": "Send Email",
"description": "Sends an email via Gmail",
"instructions": "Use when the user asks to send an email.",
"toolkitSlug": "gmail",
"inputParameters": {
"type": "object",
"properties": {
"to": {
"type": "string"
}
}
},
"outputParameters": {
"type": "object",
"properties": {
"messageId": {
"type": "string"
}
}
},
"noAuth": false,
"availableVersions": [
"1.0.0"
],
"version": "1.0.0",
"scopes": [
"gmail.send"
],
"tags": [
"email"
],
"isImportant": false,
"isDeprecated": false,
"isDisabled": false,
"popularityScore": 12,
"provider": "COMPOSIO",
"type": "action",
"ragContentHash": "",
"ragSyncedAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"fieldModifiers": {},
"script": "javascript",
"executionCreditCost": 0
}
}Authorizations
Project API key. Create and manage keys in the dashboard under Project → API Keys. Send as header: x-api-key:
Body
Tool slug
100"send_slack_digest"
Tool name
200"Send Slack digest"
Tool description
"Posts a daily summary to a Slack channel"
Toolkit slug
100"my-custom-toolkit"
JSON Schema for tool arguments
{
"type": "object",
"properties": { "channel": { "type": "string" } },
"required": ["channel"]
}
JSON Schema for the tool result
{
"type": "object",
"properties": { "ok": { "type": "boolean" } }
}
Show child attributes
Show child attributes
Tool instructions
"Call when the user asks to share a digest in Slack."
Whether the tool requires no authentication
Required OAuth/API scopes
["chat:write"]
Tool tags
["slack", "digest"]
Whether the tool is important
Popularity score
x >= 0Tool type
action, poll, webhook Available versions
["1.0.0", "1.1.0"]
Tool version
50Whether the tool is deprecated
Whether the tool is disabled
Trigger thread key (for webhook type)
"invoice.paid"
Show child attributes
Show child attributes
Credits charged per successful execution. Omit or null for platform default (2). Admin only.
x >= 02
Response
Tool created successfully
Success status
true
Success message
"Operation completed successfully"
Show child attributes
Show child attributes
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"slug": "gmail_send_email",
"name": "Send Email",
"description": "Sends an email via Gmail",
"instructions": "Use when the user asks to send an email.",
"toolkitSlug": "gmail",
"inputParameters": {
"type": "object",
"properties": { "to": { "type": "string" } }
},
"outputParameters": {
"type": "object",
"properties": { "messageId": { "type": "string" } }
},
"noAuth": false,
"availableVersions": ["1.0.0"],
"version": "1.0.0",
"scopes": ["gmail.send"],
"tags": ["email"],
"isImportant": false,
"isDeprecated": false,
"isDisabled": false,
"popularityScore": 12,
"provider": "COMPOSIO",
"type": "action",
"ragContentHash": "",
"ragSyncedAt": "2024-01-01T00:00:00.000Z",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z",
"fieldModifiers": {},
"script": "javascript",
"executionCreditCost": 0
}
Was this page helpful?