Skip to main content

Tool Plugins

Tool plugins are workflow step implementations for the automation system. Each tool defines its inputs, outputs, and execution logic. Custom tools are Python files -- no registration needed.

Built-In Tools

AI Tools

Tool IDNameDescription
ai.promptAI PromptExecute LLM prompts with chunking support for long text
ai.extract_jsonAI Extract JSONStructured data extraction using LLM with schema validation
ai.generate_embeddingAI Generate EmbeddingGenerate vector embeddings for text or entities
ai.vector_searchAI Vector SearchSemantic similarity search across indexed content

Data Tools

Tool IDNameDescription
data.extractExtract DataExtract nested data using dot notation paths
data.mergeMerge DataMerge multiple objects with shallow or deep strategy

Logic Tools

Tool IDNameDescription
logic.conditionalConditionalBranch workflow based on boolean conditions
logic.loopLoopIterate over collections with optional limit

HTTP Tools

Tool IDNameDescription
http.requestHTTP RequestMake HTTP requests with auth, headers, and SSRF protection

Template Tools

Tool IDNameDescription
templates.listTemplates ListList available graph templates

Tool Configuration Reference

Each tool is used as a workflow step. The configuration object maps tool-specific parameters.

ai.prompt

Execute LLM prompts with optional chunking for long documents.

ParameterTypeRequiredDefaultDescription
promptstringYesMain prompt text
system_promptstringNoSystem prompt for the LLM
contextstringNoAdditional context text
output_formatstringNo"text""text" or "json"
temperaturefloatNoFrom settingsLLM temperature (0.0--2.0)
max_tokensintNoFrom settingsMax response tokens
chunk_strategystringNo"none""none", "quick", or "full"
chunk_overlapintNo500Character overlap between chunks
thinking_modestringNoOverride LLM thinking mode

Output: result (string), model (string), tokens_used (int)

ai.extract_json

Structured data extraction from text using LLM with schema validation.

ParameterTypeRequiredDefaultDescription
textstringYesText to extract from
json_schemaobjectYesJSON Schema defining expected structure
system_promptstringNoGeneric extraction promptSystem prompt
user_instructionsstringNoAdditional instructions
temperaturefloatNo0.1Low temperature for consistency
max_retriesintNoFrom settingsRetry count on validation failure
max_tokensintNo16384Max response tokens
enable_quality_checkboolNotrueValidate output against schema

Output: extracted_data (object matching schema)

ai.generate_embedding

Generate vector embeddings for text or graph entities.

ParameterTypeRequiredDescription
textstringOne of theseDirect text to embed
entity_id + entity_typestring + stringOne of theseEntity ID with type ("node" or "edge")

Output: embedding (array), model (string), text (string)

Semantic similarity search across indexed content.

ParameterTypeRequiredDefaultDescription
querystringYesSearch query text
template_idstringNoFilter results by template
limitintNo10Max results (1--100)
thresholdfloatNo0.7Min similarity score (0.0--1.0)

Output: nodes (array of matching nodes), similarities (array of scores)

data.extract

Extract nested data from objects using dot notation paths.

ParameterTypeRequiredDefaultDescription
sourceobjectYesSource object to extract from
pathstringYesDot notation path (e.g., "user.name", "items.0.title")
defaultanyNoDefault value if path not found

Output: value (any), found (boolean)

data.merge

Merge multiple objects/dictionaries.

ParameterTypeRequiredDefaultDescription
objectsarrayYesObjects to merge (later overrides earlier)
strategystringNo"shallow""shallow" (top-level) or "deep" (recursive)

Output: result (merged object)

logic.conditional

Evaluate conditions and branch workflow execution.

ParameterTypeRequiredDescription
conditionbooleanYesCondition to evaluate
if_trueanyYesValue returned when condition is true
if_falseanyNoValue returned when condition is false

Output: result (any), branch_taken ("true" or "false"), condition_value (boolean)

logic.loop

Iterate over collections with optional iteration limit.

ParameterTypeRequiredDefaultDescription
collectionarrayYesCollection to iterate over
iterator_namestringNo"item"Variable name for current item
max_iterationsintNoCollection lengthMax iterations

Output: results (array of items), iterations (int)

http.request

Make HTTP requests with security validation and timeout.

ParameterTypeRequiredDefaultDescription
urlstringYesRequest URL (SSRF-validated)
methodstringNo"GET"HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)
headersobjectNoRequest headers
bodyanyNoRequest body (object sent as JSON, string as raw)
authobjectNo{ "type": "bearer"/"basic", "credentials": "..." }
timeoutnumberNo60Request timeout in seconds (1--300)

Output: status (int), headers (object), body (any), success (boolean)

templates.list

List all graph templates with optional system template filtering.

ParameterTypeRequiredDefaultDescription
include_systemboolNotrueInclude system templates

Output: templates (array of template objects)


Custom Tools

Custom tools are Python files placed in data/plugins/tools/. Files must end with _plugin.py for auto-discovery. User plugins override built-in plugins with the same tool_id.

data/
plugins/
tools/
my_tool_plugin.py

Minimal plugin:

from typing import Any

class MyToolPlugin:
@property
def tool_id(self) -> str:
return "custom.my_tool"

@property
def category(self) -> str:
return "custom"

@property
def icon(self) -> str:
return "Extension" # MUI icon name

@property
def name(self) -> str:
return "My Custom Tool"

@property
def description(self) -> str:
return "Does something custom"

@property
def input_schema(self) -> dict[str, Any]:
return {
"type": "object",
"properties": {
"input": {"type": "string", "description": "Input text"}
},
"required": ["input"]
}

@property
def output_schema(self) -> dict[str, Any]:
return {
"type": "object",
"properties": {
"result": {"type": "string"}
},
"required": ["result"]
}

async def execute(self, inputs: dict[str, Any], context) -> dict[str, Any]:
value = inputs["input"]
return {"result": f"Processed: {value}"}

The context parameter provides access to graph operations (context.graph_manager), LLM services (context.llm_service), search (context.search_repository), settings (context.settings), and outputs from previous workflow steps (context.workflow_state).

See also

For the full plugin interface and advanced patterns, see the Building Tool Plugins guide.