What are tools?
Tools are actions that your workflows and agents can run: send a Slack message, create a Google Calendar event, search the web, or run your own code. Instead of wiring each integration yourself, you pick from Flowra’s 20,000+ tools (grouped into toolkits like Slack, Gmail, GitHub) or build custom tools from JavaScript or Python scripts. When a workflow runs, the AI can decide to call a tool (e.g. “send this to Slack”) and Flowra runs it with the right credentials and returns the result. So: tools are the “hands” of your agent — they let it do real things in the world (APIs, databases, your code) instead of only generating text.Example use cases
- Pre-built tools — Search for “send message” or filter by toolkit (e.g.
slack). Attach the tools you need to a workflow; when the agent runs, it can send messages, create events, or query data. - Custom tools — You have internal APIs or business logic. Write a small script (e.g. “call our CRM API with these params”), test it in the sandbox, then create a tool. The agent can now call that logic like any other tool.
- Execute from your app — Call
POST /tools/execute/{toolSlug}with inputs and (if needed) a connected account ID. Useful for running a tool on behalf of a user from your backend.
How it works
- Discover — List and search tools by keyword, toolkit, or tags. Get a tool’s slug and input schema.
- Create (optional) — For custom tools: test a script with
/tools/script/run, then create the tool with/tools. It gets a slug and appears in your project. - Use in workflows — Attach tools to a workflow; the agent chooses when to call them. Or execute a tool directly via the API with the right auth (API key + optional connected account).
API endpoints
Browse and search tools
GET/api/v1/tools returns a paginated list of tools. Use query parameters to search and filter.
Search and filter parameters
| Parameter | Type | Description |
|---|---|---|
q | string | Search keyword — Filters by name, description, or other searchable fields (e.g. send message, calendar, email). |
toolkitSlug | string | Filter by toolkit slug (e.g. slack, gmail, github). |
toolSlugs | string | Comma-separated tool slugs. When set, returns only these tools (e.g. slack_send_message,slack_get_channels). |
provider | string | Filter by provider: COMPOSIO or LOCAL. |
tags | string | Filter by tags (e.g. productivity, communication). |
scopes | string | Filter by required scopes. |
authConfigIds | string | Comma-separated auth config IDs — return only tools that work with these configs. |
important | string | Set to true to return only important/featured tools. |
includeDeprecated | boolean | Include deprecated tools (default false). |
toolkitVersions | string | Toolkit version; use latest or bracket notation for specific versions. |
Pagination and sorting
| Parameter | Type | Description |
|---|---|---|
page | number | Page number (1-based). Default: 1. |
limit | number | Items per page (1–100). Default: 20. |
offset | number | Number of items to skip. |
cursor | string | Cursor for cursor-based pagination. |
sortBy | string | Field to sort by (e.g. createdAt, name). |
sortOrder | string | ASC or DESC. Default: DESC. |
fields | string | Comma-separated fields to include in the response. |
selectedToolSlugs | string | Comma-separated tool slugs; can put certain tools first in the response. |
Example: search by keyword
Example: filter by toolkit
Example: get specific tools by slug
Example: filter by tags
Create custom tools (from code)
You can build custom tools from code so workflows and agents can run your logic (API calls, calculations, custom integrations).- Test your script — Use POST
/api/v1/tools/script/runto run a script in a secure sandbox with optional sample state. You get a tool-shaped result (output, errors) without saving anything. Request body: RunScriptDto (see API reference). You can also use POST/api/v1/code-sandbox/runfor JavaScript or Python (RunCodeDto). - Create the tool — When the script behaves as you want, use POST
/api/v1/toolsto create a new tool. Request body: CreateToolDto (name, description, input schema, and the script or configuration). The new tool gets a slug and appears in the tools list. - Update or delete — PATCH
/api/v1/tools/byId/{id}updates a tool; DELETE/api/v1/tools/byId/{id}removes it. PATCH/api/v1/tools/byId/{id}/statusenables or disables a tool without deleting it.
provider=LOCAL or in your project’s toolkits.
Get tool by ID
GET/api/v1/tools/byId/{id} returns one tool. Use the tool’s ID (or slug). Optional query params: version, toolkitVersions.
Execute a tool
POST/api/v1/tools/execute/{toolSlug} runs a tool with the given arguments and auth.
Request body: ExecuteToolDto (see API reference for schema). Include the tool slug in the path and the required inputs in the body.
Tool execution logs
GET/api/v1/tools/execution-logs returns paginated execution logs for your project. Filter with toolSlug, page, limit, sortBy, sortOrder, and similar query params (see API reference).
Related
- Workflows — Attach tools to workflows and run them.
- Toolkits — List and search toolkits (groups of tools) with the API.
- Auth configs — Configure OAuth/API keys for tools.
- API reference: Tools — Full request/response schemas.