Built-in tools reference
Look up the inputs, outputs, permissions, validation rules, and failure behavior for all nine built-in workflow tools.
Use this reference to configure the nine built-in tools by their stable names. Every tool validates its input before execution; fields not listed in an input schema are rejected.
Common behavior
All built-ins are enabled system tools and do not require tool-level authentication. Eight are classified as READ. mock_task_creator is the only WRITE tool and requires human approval.
The registry reports four common failures:
| Failure | Meaning | Retry behavior |
|---|---|---|
| Tool not found | The stable tool name is not registered. | Correct the name. |
| Tool disabled | The registered tool is disabled. | Enable it or choose another tool. |
| Invalid input | One or more fields failed validation. The error lists the field issues. | Correct the input; validation failures are not retried. |
| Timeout | The tool exceeded its wall-clock budget. | Reduce the work or timeout where supported; timeouts are not retried. |
| Execution failure | The tool implementation or a dependency rejected the call. | Inspect the underlying message and dependency health. |
calculator
Performs deterministic arithmetic. Category: COMPUTE. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Allowed values and validation |
|---|---|---|---|
action | string | Yes | add, subtract, multiply, divide, percentage, power, or sqrt. |
a | finite number | Yes | First operand; must be nonnegative for sqrt. |
b | finite number | Except sqrt | Second operand; cannot be 0 for divide. |
Output
Returns action (string), expression (string), and result (number). Results are rounded to remove floating-point noise.
{ "action": "percentage", "a": 15, "b": 240 }The result is 36, with an expression describing the calculation. Validation rejects unknown actions, missing operands, division by zero, and the square root of a negative number.
document_search
Searches ingested documents and knowledge bases, with a PostgreSQL system-history fallback. Category: SEARCH. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Default and validation |
|---|---|---|---|
query | string | Yes | Trimmed; 1–200 characters. |
limit | integer | No | Default 5; range 1–10. |
Output
Returns query, total, and results. Each result includes title, snippet, and relevance from 0 to 1. The runtime can also identify the result source.
{ "query": "support escalation policy", "limit": 5 }An empty results array is a successful search with no matches. Validation rejects an empty or oversized query and an out-of-range limit. A database or retrieval failure can surface as an execution failure; check the tool health state.
record_lookup
Looks up supported records through NocoDB when configured, otherwise through PostgreSQL-backed history. Category: DATA. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Default and validation |
|---|---|---|---|
entity | string | Yes | employees, customers, orders, banks, or audit_reports. |
id | string | No | Trimmed, nonempty exact identifier. Takes precedence over search. |
search | string | No | Trimmed, 1–100 characters. |
limit | integer | No | Default 10; range 1–50. |
Output
Returns entity, query, count, and a records array of objects.
{ "entity": "orders", "id": "ORD-1042" }Validation rejects an unsupported entity, blank identifier or search term, and an invalid limit. When NocoDB is selected but the entity table is not configured, the call fails with a configuration error. Connection and query failures surface as execution failures.
mock_task_creator
Creates a task in PostgreSQL. Category: TASK. Permission: WRITE. Approval: required.
Input
| Field | Type | Required | Default and validation |
|---|---|---|---|
title | string | Yes | Trimmed; 1–120 characters. |
description | string | No | Trimmed; at most 500 characters. |
priority | string | No | low, medium, or high; defaults to medium. |
dueDate | string | No | Date in YYYY-MM-DD format. |
Output
Returns taskId, status, title, priority, and createdAt. When supplied, the response also includes description and dueDate. A newly created task has status TODO.
{
"title": "Review support escalation",
"description": "Confirm the escalation owner for ticket SUP-1042.",
"priority": "high",
"dueDate": "2026-10-02"
}The action must pass its human approval gate before execution. Validation rejects unsupported priorities, malformed dates, and length violations. Database write failures surface as execution failures. Because the action persists data, confirm whether a task already exists before retrying an uncertain result.
ai_extraction
Extracts requested fields from unstructured text. Category: DATA. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Validation |
|---|---|---|---|
text | string | Yes | Must contain at least one character. |
fieldsToExtract | string array | Yes | Must contain at least one field name. |
sourceDocument | string | No | Optional document identifier or reference. |
Output
Returns extractedData, confidenceScore, sourceDocument, extractedFieldCount, and method. method is llm or regex_heuristic_fallback; fallback output can also include fallbackReason. Missing extracted values can be null.
{
"text": "Ticket SUP-1042, priority: high, owner: Casey",
"fieldsToExtract": ["ticket", "priority", "owner"],
"sourceDocument": "support-note"
}Validation rejects empty text or an empty field list. If the language model provider is missing, unavailable, or returns malformed data, the tool uses a regex heuristic instead of failing the call. Check method, confidenceScore, and null values before using extracted data in a consequential action.
ai_classification
Classifies text into one of the supplied categories. Category: DATA. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Validation |
|---|---|---|---|
input | string | Yes | Must contain at least one character. |
categories | string array | Yes | Must contain at least one candidate category. |
context | string | No | Optional business rules or classification context. |
Output
Returns assignedCategory, confidence, reasoning, and categoryScores. The assigned value is one of the candidate categories.
{
"input": "Customer cannot access the account after resetting a password.",
"categories": ["ACCOUNT_ACCESS", "BILLING", "GENERAL"],
"context": "Route support tickets to the correct queue."
}Validation rejects empty input or an empty category list. If the language model call fails, the tool uses a keyword heuristic and prefixes reasoning with a fallback disclosure. Treat the fallback and low-confidence results as signals for review, not as execution failures.
deterministic_condition
Evaluates one explicit condition and identifies a workflow branch. Category: COMPUTE. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Validation |
|---|---|---|---|
field | string | Yes | Nonempty name used in the explanation. |
operator | string | Yes | equals, not_equals, greater_than, less_than, greater_than_or_equal, less_than_or_equal, contains, not_contains, in, or not_in. |
threshold | any JSON value | Yes | Target value or set for comparison. |
actualValue | any JSON value | Yes | Value from the workflow state. |
context | string | No | Optional business-rule note. |
Output
Returns conditionMet, decisionExplanation, selectedBranch, and evaluationDetails. selectedBranch is TRUE_BRANCH or FALSE_BRANCH.
{
"field": "priority",
"operator": "in",
"actualValue": "high",
"threshold": ["high", "urgent"]
}Validation rejects missing fields and unsupported operators. Equality and containment are case-insensitive string comparisons. Relational operators compare numerically when both values parse as numbers; otherwise they use string comparison. For in and not_in, threshold can be an array or a comma-separated value.
final_report
Builds a structured Markdown report from workflow results. Category: TASK. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Default and validation |
|---|---|---|---|
title | string | Yes | Must contain at least one character. |
summary | string | Yes | Must contain at least one character. |
stepResults | object | No | Defaults to {}. |
recommendation | string | No | Optional next action. |
status | string | No | APPROVED, REJECTED, FLAGGED, COMPLETED, or INFO; default COMPLETED. |
Output
Returns reportId, title, status, executiveSummary, formattedMarkdown, generatedAt, and includedStepsCount.
{
"title": "Support triage report",
"summary": "One high-priority access issue requires review.",
"stepResults": { "classification": { "category": "ACCOUNT_ACCESS" } },
"recommendation": "Assign the ticket to identity support.",
"status": "FLAGGED"
}Validation rejects a blank title or summary, an invalid status, and unrecognized fields. The generated report ID and timestamp vary on every successful call.
code_execution
Runs JavaScript or Python in an isolated sandbox for data processing and algorithmic work. Category: COMPUTE. Permission: READ. Approval: not required.
Input
| Field | Type | Required | Default and validation |
|---|---|---|---|
language | string | Yes | javascript or python. |
code | string | Yes | 1–50,000 characters. |
timeout | integer | No | Execution timeout in milliseconds; default 10000, maximum 30000. |
Output
Returns language, stdout, stderr, exitCode, durationMs, and timedOut. Output is limited to 100 KB by the sandbox implementation.
{
"language": "javascript",
"code": "const tickets = [3, 5, 2]; console.log(tickets.reduce((a, b) => a + b, 0));",
"timeout": 5000
}Validation rejects unsupported languages, empty or oversized code, and a timeout outside the allowed range. A program error is represented by stderr and a nonzero exitCode; a sandbox timeout sets timedOut. Sandbox startup failures surface as execution failures.
Next steps
Use Navigate the Tool Registry to inspect live health and usage. Before attaching a write-capable tool, review Configure skill permissions and Review and cancel approval requests.