Skip to content

Grounding tools

Artekis reads the gateway through 15 read-only, bounded tools; the analyzers use them, and in Ask the model calls them. GET /data/artekis/web/tools lists them with their caps and argument schemas; POST /data/artekis/web/tools/call with {tool, args} (Write) makes one call under the current policy and records it as a test run, and the Test run page lists the recent ones.

Tool Reads Caps
alarm_journal journal transitions, oldest first; sources takes alarm paths ([provider]Tag|Alarm), tag paths or folder paths (every alarm under the folder), and a filter that matches nothing in a window holding events says so (sourcesNote) 7-day window (7 calendar days: 169 h, so a week across a daylight-saving change is one call), 200 events, 100 sources
alarm_status the status table now; sources as for alarm_journal; when some alarms went active and cleared in the same instant, restartTripsNote says how many and that they are a configuration problem 150 alarms
alarm_config alarm settings and engineering range, through UDT inheritance 50 tags
historian history of tags with historyEnabled and a historyProvider, always aggregated (LastValue by default) 31-day window (plus the daylight-saving hour: 745 h), 20 tags, 288 points per tag
audit_log audit records, newest first, filtered by actor, action and target; sign-in and sign-out records are left out (counted in loginsLeftOut) unless includeLogins is true 7-day window (169 h, as alarm_journal), 500 records
named_query a select-type named query in a policy.read.projects project; a date-time value comes back as the database holds it, with no time zone (2026-11-01T09:20:00, and the result's timesNote says so), so a column stored in plant time reads as plant time 1,000 rows, 4,096 characters a cell, 64 KB, 30 s
named_queries the select and scalar named queries of a policy.read.projects project, by path, with their description and parameters (name and kind); runnable: false marks one named_query would refuse (a QueryString or Database parameter); update queries are not listed; folder and text narrow it 200 queries
tag_browse one folder's children, no values 500 nodes
tag_read value, quality, timestamp 100 paths
gateway_logs log events, newest first, secret-scrubbed; a logger filter scans at most 20,000 events and says when it stopped 200 events
metrics performance, Store and Forward, OPC and database state one snapshot
documents the collection's document passages (section 7.4) 6 hits (at most 12)
findings the collection's stored findings by asset, tag text, kind and status (default the live ones: open, confirmed, hidden, suppressed, known): title, status, severity, tag, asset, first and last seen in plant time, seen count; under Ask, the turn's own collection plus the findings other collections hold on its assets (each row names its collection) 50 rows
downtime offered only where the collection maps a statePeriods source (from 1.5.6); stops from the collection's statePeriods shape (section 7.6) over a window (default the last 30 days): per asset, state and reason (or by asset or by reason alone) the stops, minutes down and the longest stop, largest first; per asset the minutes down, planned and running, and stops and minutes down per running hour. A stop is a period whose state is not in costs.runningStates (default Running, without case); a planned period is counted apart unless includePlanned. Periods are clipped to the window and an open one ends at now; the read starts lookBackHours before the window (default 24, at most 168), so a stop that began earlier and runs into the window counts for its part inside, and the result's window.lookBackHours says how far it looked; a read cut at the row cap says from when it counts. Under Ask, the turn's own collection only 366-day window, 50 groups, the shape row cap
anomaly_setup_draft an Anomaly Watch setup draft for a collection (section 8.5): per asset the tags with and without history, a suggested run signal, candidate tags; excluded paths never appear; under Ask, only the turn's own collection 2,000 assets

Every call refuses unknown or malformed arguments, checks the policy before reading, is cut to 64 KB and 30 s, and is recorded on the run as the tool name, the hash of its arguments (the arguments themselves are never stored), rows, whether it was cut, and milliseconds; a refused call also keeps its refusal message, secret-scrubbed and cut at 300 characters (message), which Test run → Recent tool calls shows beside each call's time. A tool answering busy has two earlier calls still running: retry later.