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.