Verb Reference

Every verb in OcaltQL, organized by section. Each entry links conceptually back to its full tutorial page for worked examples — this page is the compact reference, not a replacement for those pages.

Jump to a section:

Getting Started

Verb Description
[CHAIN] [SUBJECT] VERB [MODE] [ARGS] [PREPOSITION TARGET] [SET ?var]The general statement grammar every OcaltQL line follows
EMIT "text"Output a value or literal
STRING "value" SET ?varDeclare a string variable
NUMBER n SET ?varDeclare a number variable
SET ?var AS valueGeneric assignment form
SET ?var2 AS ?var1Copy a variable to another variable
VARIABLE ?var1 SET ?var2Copy a variable — alternate form
UNSET ?varDestroy a variable entirely
IF ?var IS SETCheck whether a variable currently exists
ANDChain — parallel branches, random resolution if multiple SET the same var
AFTERChain — sequential, waits for prior statement(s)
ORChain — fallback when the preceding statement fails/returns false/null
COLLAPSE ?multivar SET ?arrConvert a multivariable into an ordered array
CATCH ERROR SET ?errCapture the error from a failed statement without stopping the chain
WARNING stateA syntactically legal but risky statement (e.g. an UPDATE with no WHERE) — executes, but is flagged distinct from FATAL
!ERROR('message')/'code'Read fields of the most recent caught error
!THIS('state')Inside a block, true/false — whether this branch executed
!THIS('some')Inside an IF SOME/ARE block, the matching indices/keys
SWITCH ?var OPEN CASE ... DEFAULT ... CLOSEMulti-branch dispatch, BREAK per case, fallthrough if BREAK omitted
BREAKExit a LOOP/WHILE or SWITCH CASE early
CONTINUESkip to the next LOOP/WHILE iteration
EXITEnd the script immediately
EXIT nEnd the script, setting HTTP status n
NEW OPERATION name WITH ?params OPEN...CLOSEDefine a reusable operation
NEW PERSISTENT OPERATION name ... / RUN PERSISTENT nameRegister an operation across executions, and call it from a later script
RUN name WITH args SET ?resultExecute a defined operation
RETURN valueReturn a value from an operation, ending it immediately
INCLUDE "path or url"Execute another script file, sharing scope, capturing its top-level RETURN
SIDELOAD "code string"Execute a string of OQL as code, sharing scope
START SESSION / KILL SESSIONOpen/destroy server-side session state
SET "key" AS value OF !SESSIONWrite a session value
EMIT !SESSION('key')Read a session value
COOKIE SET/GET/REMOVEClient-side cookie management, with PATH/EXPIRES/DOMAIN/SECURE/HTTPONLY
HEADER "name" AS "value"Set an HTTP response header
!POST / !GET / !REQUESTRead POST/GET/merged request data — Site Mode, or opt-in via the API
!FILES('field')Web-accessible URL of an uploaded file
!SERVER('KEY')Server/environment variables — real keys include HTTP_HOST, REQUEST_METHOD, REMOTE_ADDR
!COOKIE('name') / !SESSION('key')Read cookie/session values as globals
!ENV('NAME')Read a system environment variable
!GLOBALS('CATEGORY')('key')Full request context by category
!NOW('unit')Current server datetime component
!QUERYThe OcaltQL script currently being executed, as submitted
!THATAuto-updating global — result of the most recently completed statement

OcaltQL Web

Verb Description
NEW HTML SET ?html OPEN...CLOSEBuild a native HTML document tree
HTML "tag" ATTR "name" WITH "value"Create an element with attributes
HTML "tag" TEXT "content"Create an element with text content
HTML TEXT NODE "text"Insert a raw text node
NEW HTML NODE SET ?node OPEN...CLOSEBuild a detached node for later insertion
HTML APPEND ?node TO ?htmlAppend a node to a document
HTML APPEND ?node INTO ?html WHERE ID "x"Insert at a specific element by ID
HTML APPEND ?node INTO ?html WHERE TAG "x"Insert at the first matching tag
HTML REVERSE ?html SET ?oqlParse raw HTML/fetched markup into OQL's native node form
HTML GET ".selector" SET ?elSelect a single element (querySelector)
HTML GET ALL ".selector" SET ?elarraySelect every matching element (querySelectorAll)
HTML "script" TEXT `code`Embed raw inline JavaScript
HTML "script" SRC "url"Include an external script
ONBROWSER JAVASCRIPT ONLOAD|ONPAGESHOW|ONFOCUS|... ENTER `code`Bind a page-level browser event by its real name, event object in scope
ONBROWSER JAVASCRIPT ONLOADED ENTER `code`First pageshow only — does not re-run on a back/forward cache restore
ONBROWSER JAVASCRIPT ?el ONCLICK|ONFOCUS ENTER `code`Bind an event to a specific element, or to every element in an array
NEW ONBROWSER AJAX TO SELF NAMED "fn" ON SUCCESS `code` SET ?scriptGenerate a credential-free AJAX function calling back into the current Site Mode script
UX TYPE "name" WITH ?data STYLE THEME FORMAT ICONS COLOR ID SET ?nodeGenerate an interface component as a native HTML node - 45 types, see OcaltQL UX Components
UX ICON "name" SIZE COLOR STROKE STYLE SET ?svg / UX ICONS "set" SET ?namesOne icon as pure SVG, or every name in an icon set
UX ?c ANIMATE ENTER|EXIT|EMPHASIS "type" DELAY DURATIONAttach motion - same vocabulary as Presentations & Animations
UX ?c TRANSITION FROM "state" TO "state" STYLE DURATION / UX ?c STATE "name"Movement between named states, and the initial state
UX ?c STATES SET ?arr / UX MANIFEST SET ?mDeclared states of one component, or every component generated this execution
NEW ONBROWSER AJAX TO "/path" NAMED "fn" ON SUCCESS `code` [ON ERROR `code`] SET ?scriptSame, targeting a different page on the same site - result holds the response body
GATHER STRING|NUMBER|DATE|EMAIL|REGEX LABEL "..." SET ?varHalt-and-resume popup collecting one input value
GATHER STRING LENGTH MIN n MAX nString length constraint
GATHER NUMBER VALUE MIN n MAX nNumber range constraint
GATHER DATE RANGE MIN "date" MAX "date"Date range constraint
GATHER ... AND GATHER ...Combine multiple fields into one popup
GATHER ... AFTER GATHER ...Sequential, separate popups
... OR GATHER ...GATHER as a fallback when an existing value is missing/invalid
CONFIRM BOOLEAN LABEL "..." SET ?boolHalt-and-resume yes/no popup
USER DEVICE LABEL "..." SET ?deviceRequest every permission and device property at once
USER DEVICE CAMERA|MICROPHONE|GEOLOCATION|PUSH|CLIPBOARD_READ|CLIPBOARD_WRITERequest a single named permission
USER DEVICE SCREENSHOTReal screen/window/tab capture via native browser picker — returns captured content, not just a status
USER DEVICE PERMISSIONLESSSilently collect only free device properties, no popup
USER DEVICE PERMISSIONSRequest all six status-based permissions together, no screenshot
NEW SYNC CHANNEL SET ?channelOpen a real-time WebSocket relay channel
SYNC CHANNEL ?channel SEND ?payloadPush data to the browser with no incoming request
SYNC CHANNEL ?channel RECEIVE SET ?dataNon-blocking read of the next queued message, or null
SYNC CHANNEL ?channel CLOSEClose a channel

OcaltQL Filesystem

Verb Description
FILE WRITE "content" TO "path" [BASE64]Write a file. A bytes value needs no modifier - it is already binary. BASE64 is for when the script holds base64 text and wants the decoded bytes on disk
FILE READ "path" SET ?contentRead a file
FILE EXISTS "path" SET ?boolCheck existence
FILE STAT "path" SET ?infoFile metadata
FILE LIST "path" SET ?itemsDirectory listing
FILE MKDIR "path"Create a directory
FILE MOVE "from" TO "to"Move/rename a file
FILE COPY "from" TO "to"Copy a file, or a folder with everything in it
FILE DELETE "path"Delete a file
STORAGE USAGE SET ?infoBytes used and the size of /root and /mounted
FTP CONNECT "host" [ON "port"] AS "user" WITH "password"|KEY "path" [SECURE] SET ?connConnect to an FTP, FTPS or SFTP server
FTP ?conn LIST/STAT/UPLOAD/DOWNLOAD/MKDIR/MOVE/DELETE/CLOSEOperate on the remote server - see FTP & External Storage
FTP ?src TRANSFER "path" TO ?dst "path" SET ?anchor / FTP STATUS ?anchorServer-to-server transfer, non-blocking
EXTERNAL BIND FTP ?conn SET ?statusBind a server as /external — a namespace location alongside /root and /mounted
FILE SELECT "a" AND "b" SET ?selarraySelect multiple paths for batch operations
FILE SELECT ALL "folder" SET ?selarraySelect every item in a folder
FILE SELECTION ?selarray COPY/DELETE TO "path"Batch operate on a selection
FILE COMPRESS ZIP|TAR ?selarray TO "path"Archive a selection, each item under its own name
FILE SHARE "path" SET ?urlGenerate a public share URL
FILE SHARE LIST SET ?arr / FILE UNSHARE "path"/ALLManage active shares

OcaltQL Database

Verb Description
NEW DB "name" / DROP DB "name"Create/destroy a database
NEW TABLE "name" IN DB "db" COLUMNS ADD ...Define a table — TYPE STRING/NUMBER/DATE, LENGTH, PRIMARY, AUTOINCREMENT, UNIQUE, REQUIRED, DEFAULT, AUTOTIMESTAMP, AUTOUPDATED
FLUSH TABLE "name" FROM DB "db"Empty a table, keep its schema
DROP TABLE "name" FROM DB "db"Delete a table entirely
INSERT INTO DB "db" TABLE "t" ROW "col" AS val AND ... SET ?idInsert a row
SELECT ROWS FROM DB "db" TABLE "t" WHERE ... ORDER BY ... LIMIT n SET ?rowsQuery rows
WHERE "col" IS GREATER/LESS THAN, IS EQUAL/IDENTICAL TO, IS PREFIX SIMILAR TO, IS NOT EMPTYWHERE clause conditions
WHERE ... AND ...Combine multiple WHERE conditions
UPDATE ROWS FROM DB "db" TABLE "t" WHERE ... SET "col" AS val AND ...Update matching rows
DELETE ROW/ROWS FROM DB "db" TABLE "t" WHERE ...Delete matching row(s)
COUNT ROWS FROM DB "db" TABLE "t" WHERE ... SET ?nCount matching rows
GROUP BY "col" FROM DB "db" TABLE "t" SET ?groupedGroup rows by column value
JOIN SELECT DB "db" TABLES "a" AND "b" WHERE ... SET ?resultsInner join
JOIN LEFT SELECT DB "db" TABLES "a" AND "b" WHERE ... SET ?resultsLeft join

OcaltQL Services

Verb Description
OCR "url or path" AS "lang" SET ?textExtract text from an image/PDF via OCR
MAP GEOCODE "address" LIMIT n COUNTRY "cc" BOUNDS ?box SET ?locAddress to coordinates
MAP REVERSE "lat,lon" DETAIL "level" SET ?addrCoordinates to address
MAP BOUNDARY "place" SET ?shapeAdministrative region polygon
MAP SEARCH "query" BOUNDS ?box SET ?placesPoints-of-interest search
MAP POINT LAT n LON n LABEL "..." ICON "..." POPUP "..." SET ?pointBuild a map point
MAP LINE ?points SET ?line / MAP POLYGON ?points SET ?poly / MAP CIRCLE LAT n LON n RADIUS n UNIT "km"Build map shapes
MAP RENDER ?points LINES/POLYGONS/CIRCLES/HEATMAP ZOOM n STYLE "..." AUTOFIT SET ?urlCompose and render a full map
MAP ROUTE "from" TO "to" VIA "waypoint" PROFILE "mode" ALTERNATIVES SET ?routeDriving/cycling/walking directions
MAP MATRIX ?points SET ?tableMany-to-many distance/duration matrix
MAP SNAP LAT n LON n SET ?snappedSnap a point to the nearest road
MAP DISTANCE "a" TO "b" SET ?kmStraight-line (Haversine) distance
MAP CLUSTER ?places SET ?clusters / MAP BOUNDS ?places SET ?boundsCluster points / bounding box
GRAPH TYPE "type" WITH ?data TITLE FORMAT THEME AXIS SET ?svgNative SVG chart — 40+ types, see Graphs - SVG Charts for the full catalog
GRAPH OPEN "chart.svg" SET ?svgRead a saved chart back into the same native node value
GRAPHIC ?img SELECT LASSO POINTS "x,y x,y ..."Freeform selection defined by a list of coordinate points
GRAPHIC ?img SELECT COLOR ?color TOLERANCE nSelect all pixels within n of a sampled color
DOC CREATE FROM STRING/URL AS "html"|"text" OUTPUT "pdf"|"docx" SET ?pathConvert HTML/text/a URL into a finished document
RICH OPEN/NEW/READ/SAVE/PAGE/HEADER/FOOTER/INSERT/FORMAT/MOVE/RESIZE/DELETE/EXPORTBuild a rich text document from scratch — see Documents & Rich Text
RICH OPEN "path.rtf"|"path.pdf"|"path.docx"|"path.html" SET ?docReopen any format RICH EXPORT can write
RICH PAGE ?doc SIZE ORIENTATION "portrait"|"landscape" MARGIN TOP n BOTTOM n LEFT n RIGHT nPage setup — size, orientation, margins
RICH INSERT ... ITALIC true|false UNDERLINE true|false STRIKETHROUGH true|falseText style booleans on a paragraph/heading
RICH MOVE/RESIZE/DELETE ?doc ELEMENT ?el("id")ELEMENT is the modifier keyword identifying which inserted item to target by id
NEW PRESENTATION INTO "path" SET ?file AS OPEN SLIDE...CLOSEBuild a PPTX presentation
PRESENTATION OPEN "path" SET ?fileOpen an existing deck for editing
PRESENTATION ?file SAVE / SAVE INTO "path"Write the deck back, or write a copy
PRESENTATION ?file ADD SLIDE LAYOUT "type" [AT n] OPEN...CLOSEInsert a slide at a position, or append when AT is omitted
PRESENTATION ?file SLIDE n REPLACE ... / MOVE TO n / DELETERewrite, reorder, or remove a slide
SLIDE LAYOUT "type" DURATION "3s" TRANSITION "type" DURATION "..s"Slide layout, auto-advance, and transition
TITLE/SUBTITLE/BODY/IMAGE/VIDEO/GRAPH/TABLE/BULLET/NOTE/BACKGROUND/THEME/FONT/COLORSlide content verbs, positioned with AT/FORMAT/ALIGN
BULLET OPEN ITEM "text" ... CLOSEITEM is the child verb — one bullet point per ITEM inside a BULLET block
ALIGN LEFT|CENTER|CENTRE|RIGHT TOP|MIDDLE|BOTTOMFull alignment value set — horizontal then vertical
ANIMATE ENTER/EXIT/EMPHASIS "type" DELAY "..s" DURATION "..s"Per-element animation
PRESENTATION ?file SLIDE COUNT/EXPORT AS "png" / EXPORT AS "gif"|"mp4"Frame control and animated export
WEATHER "city" SET ?wCurrent weather
CURRENCY RATE FROM "a" TO "b" SET ?rate / CURRENCY CONVERT n FROM "a" TO "b" SET ?amountExchange rates and conversion
GEOIP ADDRESS/CITY/COUNTRY/ALL SET ?geoGeolocate the current request or a given IP
DNS "domain" AS "A"|"MX"|"TXT" SET ?rDNS record lookup
dns1.ocalt.com / dns2.ocalt.comOcalt’s nameservers - delegate a domain to them when you have no DNS provider of your own
NOTIFY CHECK PUSH STATUS FOR ?uid / REQUEST PUSH GRANT FOR ?uid WITH "url"Web push subscription status and consent flow
PUSH SUBSCRIBE ?sub AS ?uid / PUSH UNSUBSCRIBE ?uidManual push subscription management
NOTIFICATION "text"Notify the namespace owner - for watch, cron and schedule outcomes
NOTIFY "body" TO ?uid WITH "title" ICON IMAGE LINK ACTIONS SET ?idSend a push notification
NOTIFY LIST FOR ?uid / MARK READ / CLEAR / CLEAR ALLNotification history management
WEBHOOK SEND ?payload TO "url" SECRET "key" SET ?responseSigned outbound webhook
NEW WEBHOOK RECEIVE SECRET "key" TRIGGER [RUN op] SET ?webhookSigned inbound webhook endpoint
WEBHOOK LIST / WEBHOOK DELETEWebhook registry
SCHEDULE [RUN op] AT ?datetime SET ?jobRun an expression once, at a future moment
NEW CRON [RUN op] EVERY n UNIT STARTING NOW|?datetime SET ?jobRun an expression repeatedly, on an interval
SCHEDULE/CRON LIST / DESCRIBE / DELETEJob registry
NEW WATCH [FETCH "url"] EVERY n UNIT ONCHANGE [RUN op]React to an external resource changing
WATCH LIST / DESCRIBE / DELETEWatch registry
NEW TRANSCODE STREAM FROM "rtsp://"|"file" FORMAT "hls"|"mse" SET ?streamLive/continuous media streaming
TRANSCODE STREAM ?stream STOPStop a stream
EDITOR OPEN "path" SET ?docOpen a file for text/code editing
NEW EDITOR [AS "lang"] SET ?docStart a document with no file behind it - first write is SAVE INTO
EDITOR ?doc GOTO/SELECT/SELECTION/PASTE/INSERT/DELETE/BACKSPACE/REPLACE/EXTRACT/FIND/DUPLICATE/MOVE/JOIN/INDENT/SORT LINES/DEDUPLICATE LINES/TRIM/CONVERT/BOOKMARK/COUNT/SAVE/LANGFull text editor verb set
EDITOR ?doc SELECT BLOCK FROM LINE n COL n TO LINE n COL nRectangular/column block selection, distinct from linear FROM..TO
EDITOR ?doc OUTDENT LINE n / SELECTION ?sel OUTDENTRemove one indent level
EDITOR ?doc BOOKMARK LINE n / BOOKMARK REMOVE LINE n / BOOKMARKS SET ?linesSet, remove, and list line bookmarks
EDITOR ?doc TRIM TRAILING WHITESPACERemove trailing whitespace from every line
EDITOR ?doc CONVERT LINE ENDINGS TO "LF"|"CRLF"Normalize line ending style
EDITOR ?doc CONVERT TABS TO SPACES / SPACES TO TABSIndentation character conversion
EDITOR ?doc CONVERT ENCODING TO "UTF-8"Change file text encoding

OcaltQL Advanced

Verb Description
NEW CLASS Name WITH "prop" AS TYPE REQUIRED|DEFAULT val AND "method" AS METHOD OPEN...CLOSEDefine a class
SPAWN Name WITH "prop" AS val AND ... SET ?instanceInstantiate a class
CALL "method" ON ?instanceInvoke an instance method — THIS bound inside
EXTENDS ParentClassClass inheritance, child overrides same-named members
NEW QUERY "word" CASE "sensitive" SEPARATOR "." OPEN...CLOSERegister a custom natural-language phrase-tree command
SKIPPABLEMarks a phrase-tree node as optional to invoke
QUERY prefix ...Invoke a phrase colliding with a reserved OQL verb
ACCOUNT REGISTER/LOGIN/SESSION/LOGOUT/REFRESH/REVOKE/VERIFY/COMPARE/DELETE/UPDATE EMAIL|PASSWORDFull end-user accounts system, see Accounts System
CHAT WITH "n" PEERS "a" AND "b"... SET ?roomCreate a chat room
CHAT ENTRY FROM "user" MESSAGE `text` TO ?room SET ?msgSend a chat message
DIRECTIVE "id" EXEC "cmd" [BACKGROUND] SET ?r / KILL ?pidRemote shell execution
DIRECTIVE "id" DOWNLOAD/UPLOAD "path" TO "path" SET ?h / STATUS ?hRemote file transfer with progress
DIRECTIVE "id" SCREENSHOT / WAKERemote screen capture / Wake-on-LAN
DIRECTIVE "id" SERVE "path" SET ?srcServe one file straight off the machine — returns a public url at serve.ocalt.com/<token>.<ext> plus the local port
DIRECTIVE "id" TUNNEL PORT n SET ?tunnel / TUNNEL END ?tunnelExpose a local port publicly with no port forwarding
DIRECTIVE PEERS "id" AND "id" SET ?networkGroup machines into a peer network
DIRECTIVE NETWORK ?network TRANSFER FROM "id://path" TO "id://path" SET ?anchorDirect machine-to-machine file transfer, non-blocking
DIRECTIVE STATUS ?anchor SET ?progressPeer transfer progress
DIRECTIVE "id" POLL n SECONDS|MINUTESAgent check-in interval, 1 SECOND to 60 MINUTES
DIRECTIVE NETWORK ?n SHARE "id" PORT n AS n SET ?statusExpose a peer's port on every other peer's localhost
DIRECTIVE "id" LIST FROM "path" / LIST DRIVESBrowse the machine's folders and drives
DIRECTIVE LIST / STATUS "id"Agent registry
SUBDOMAIN ADD "name" [ON "tld.com"] [AT "path"] SET ?resultRegister a subdomain - ON puts it on a pointed domain, AT chooses the folder, default /root/sites/{subdomain}
SUBDOMAIN REMOVE/LIST/SEARCH "name" SET ?resultocalt.site subdomain management
DOMAIN "tld.com" TO "subdomain.ocalt.site" SET ?varPoint a domain you own at a subdomain or tunnel - ?var("status"), ?var("message")
DOMAIN STATUS "tld.com" SET ?statusCurrent pointing state and reason
DOMAIN SSL "tld.com" SET ?sslIssue and track the certificate - already in progress | failed try again | successful - certificate is live
SET PERSISTENT ?var AS val / typed-verb form / EMIT PERSISTENT ?varCross-request value with no expiry, scoped to the session — PERSISTENT is written on every use
START PERSIST / KILL PERSISTStanding execution timeline, no time limit, until explicitly killed
SET CONSISTENT "key" AS val / CONSISTENT "key" SET ?var / [CONSISTENT "key"]Sessionless value shared across the whole namespace — never across namespaces
NEW VIDEO|AUDIO BRIDGE n PEERS SET ?roomWebRTC signaling room — connect_url per peer, no bundled UI
BRIDGE CLOSE ?room("id")Close a bridge room
NEW TRANSCODE STREAM ... (see Services)Live streaming shares the same relay as SYNC CHANNEL/Bridge
BROWSER OPEN "url" SET ?sessionStart a headless browser automation session
BROWSER ?s NAVIGATE/CLICK/TYPE/SELECT/HOVER/UPLOAD/CLEAR/SCROLL/BACK/FORWARD/RELOAD/CLOSEPage interaction
BROWSER ?s READ/EXTRACT/EVALUATEContent extraction and raw JS execution
BROWSER ?s WAIT n / WAIT FOR selector/text/NETWORKExplicit and conditional waits
BROWSER ?s TAB NEXT|PREV / FOCUS CHECKKeyboard tab-order interaction
BROWSER ?s STORAGE READ|WRITE / COOKIES / COOKIE WRITE / AUTHStorage, cookies, HTTP auth
BROWSER ?s VIEWPORT / MOBILE "device"Viewport size and device emulation
BROWSER ?s SCREENSHOT / PDF / DOWNLOAD / NETWORK LOG / INTERCEPT / STREAM TOCapture, network inspection, live frame streaming
SSH "user" AT "host" PASSWORD|KEY "..." [ON "port"] ENTER `cmd` SET ?resultRemote SSH command execution
SSH ... UPLOAD/DOWNLOAD "path" TO/INTO "path"SSH file transfer
WEBASSEMBLY GRANT ?var AS "alias"Expose an OQL variable to an embedded runtime
WEBASSEMBLY TYPE "php"|"python"|"node"|"ruby"|"perl"|"bash"|"java"|"rust"|"go"|"wasm" ENTER `code`|"module.wasm" SET ?resultRun code in PHP, Python, Node, Ruby, Perl, Bash, Java, Rust or Go, or a compiled WASM module
NEW EVENT "title" ON "date" FROM/TO TIMEZONE WITH DESCRIPTION/ATTENDEES AT LOCATION REMIND SET ?evCreate a calendar event
NEW EVENT ... ALL DAY / EVERY weekday ... STARTING ... UNTIL ...All-day and recurring events — EVERY accepts any weekday name (MONDAY, TUESDAY, etc.)
NEW EVENT ... REMIND n MINUTES BEFORE [THEN action]Reminder timing, optionally firing a follow-up action
... THEN actionAttach an action to fire alongside a reminder
GET EVENTS TODAY|THIS WEEK|THIS MONTH|FROM..TO / GET NEXT EVENT / GET EVENT ?idQuery events
GET EVENTS ... WHERE ...Filter event queries
UPDATE ?ev SET TITLE TO / MOVE TO / ADD ATTENDEE / REMOVE ATTENDEEModify an event
REMOVE EVENT ?ev [AND ALL OCCURRENCES]Delete an event or its whole series
NEW CALENDAR "name" WITH DESCRIPTION COLOR SET ?cal / LIST CALENDARS / DROP CALENDARCalendar management
CHECK AVAILABILITY FROM..TO FOR n MINUTES SET ?slots / BOOK SLOTScheduling/booking
EXPORT/IMPORT CALENDAR TO/FROM FILE "path.ics"iCal import/export
APPLICATE TYPE "platform/format" FROM "folder" TO "path" SIGN WITH IDENTIFIER TITLE SET ?filePackage OQL/HTML/JS/assets into native apps — Android, Windows, macOS, iOS, Linux
APPLICATE TYPE "web/pwa" AT "path"In-place PWA injection into an already-live Site Mode folder
ocalt.manifest.jsonExternal app metadata file read by APPLICATE

Conditions, Loops & Operators

Verb Description
IF condition OPEN...CLOSE OR OPEN...CLOSEIf/else — OR branch runs when condition is false
OR IF condition OPEN...CLOSEChained else-if
IS EQUAL TO / IS NOT EQUAL TOLoose value equality
IS IDENTICAL TO / IS NOT IDENTICAL TOStrict/type-sensitive equality
IS GREATER THAN / IS LESS THANNumeric comparison
IS GREATER THAN OR EQUAL TO / IS LESS THAN OR EQUAL TOInclusive numeric comparison
CONTAINS "substr"Substring/containment check
IS SET / IS NOT SETVariable existence
IS EMPTY / IS NOT EMPTYEmpty string/array/object check
IS NULL / IS NOT NULLNull check
... AND ... / ... OR ... (inside a condition)Combine multiple conditions in one IF
?arr ARE EQUAL TO xTrue only if every element matches
SOME ?arr ARE EQUAL TO xTrue if at least one element matches
SOME ?arr ARE GREATER/LESS THAN xAt-least-one numeric match across an array/object
!THIS('some')Inside a SOME/ARE block — the matching indices/keys
WHILE condition OPEN...CLOSELoop while a condition holds
WHILE SOME ?arr ARE ...Loop while at least one element matches
LOOP a TO b SET ?i OPEN...CLOSECounted loop, ascending
LOOP a TO b STEP n SET ?iCounted loop with a custom step
LOOP b TO a STEP -n SET ?iDescending counted loop
LOOP INFINITE OPEN...CLOSEInfinite loop — deliberately never terminates
BREAKExit the current LOOP/WHILE early
CONTINUESkip to the next LOOP/WHILE iteration
SWITCH ?var OPEN CASE "v" ... BREAK ... DEFAULT ... CLOSEMulti-branch dispatch
CASE "a" CASE "b" (no BREAK between)Fallthrough — multiple case values share one body

Execution States

Verb Description
?var IS true / IS falseExplicit boolean state
?var IS NULLNever declared, or explicitly returned as null
?var IS EMPTYDeclared but holds an empty string/array/object
?var IS WAITINGA PROMISE that has not yet resolved
?var IS INFINITEA PROMISE whose connection broke — will never resolve
LOOP INFINITEDeliberate infinite-loop execution state

Math & CALCULATE

Verb Description
CALCULATE expr SET ?resultEvaluate a math expression — +, -, *, /, parentheses, standard precedence
CALCULATE ABS(n) / ROUND(n) / FLOOR(n) / CEIL(n)Built-in CALCULATE functions
CALCULATE POWER(a,b) / SQRT(n) / MOD(a,b)More CALCULATE functions
COMPUTE fibonacci|factorial|prime|sqrt|abs|round|floor|ceil OF n SET ?rNamed single-argument computations
COMPUTE power|mod OF a AND b SET ?rNamed two-argument computations
ADD a TO b SET ?ansNatural-language addition
SUBTRACT a FROM b SET ?ansNatural-language subtraction
MULTIPLY a BY|WITH b SET ?ansNatural-language multiplication — BY/WITH interchangeable
DIVIDE a BY b SET ?ansNatural-language division
SQUARE ROOT OF n SET ?ansNatural-language square root
LOGARITHM OF n [BASE b] SET ?ansNatural log by default, or a specified base
FIBONACCI OF n / FACTORIAL OF n / PRIME OF n SET ?ansNatural-language named computations
ABSOLUTE VALUE OF n / ROUND OF n / FLOOR OF n / CEILING OF n SET ?ansNatural-language rounding functions
RAISE a TO b SET ?ansNatural-language exponentiation
MODULO a BY b SET ?ansNatural-language modulo
[expr] nested inlineBracket syntax nests any expression inline as a value, e.g. inside another CALCULATE/MULTIPLY
!THATAuto-updating result of the last statement — chains naturally through ADD/MULTIPLY/etc.

Strings

Verb Description
STRING "text" SET ?varDeclare a string, supports & concatenation inline
LENGTH ?str SET ?nString length
STRING UPPERCASE ?str / STRING LOWERCASE ?str SET ?outCase conversion
TRIM STRING ?str SET ?outTrim whitespace
REVERSE STRING ?str SET ?outReverse a string
REPLACE STRING ALL "a" WITH "b" WHERE "text" SET ?outReplace every occurrence
REPLACE STRING ONCE "a" WITH "b" WHERE "text"Replace the first occurrence only
REPLACE STRING FROM n TO n WITH "b" WHERE "text"Replace by position range
SEARCH STRING ?str FOR "substr" SET ?posFind substring position, or null
SELECT STRING "text" FROM n TO n SET ?subSubstring by position range
SPLIT "text" BY "," SET ?partsSplit into an array by separator (empty separator splits into characters)

Arrays, Objects & Multiarrays

Verb Description
NEW ARRAY SET ?arr / APPEND val TO ?arrCreate an array and append values
?arr(n)Index access
COUNT ?arr SET ?nElement count
REMOVE KEY n FROM ?arr SET ?arrRemove by index, array repacks automatically
REVERSE ARRAY ?arr SET ?revReverse order
SEARCH ARRAY ?arr FOR val SET ?foundFind index of a value, or null
JOIN ?arr [WITH "sep"] SET ?strJoin into a string, separator optional. JOIN ARRAY is an accepted alias
SLICE ?arr FROM n TO n SET ?subSubset by index range
SORT ?arr SET ?sortedSort ascending
MERGE ARRAY ?a WITH ?b SET ?combinedConcatenate two arrays
DEDUPLICATE ?arr SET ?uniqueRemove duplicate values
NEW OBJECT SET ?obj / SET ?obj("key") AS valCreate an object and set keys
?obj("key") / "key" OF ?objTwo equivalent access notations
COUNT ?obj SET ?nProperty count
REMOVE KEY "k" FROM ?obj SET ?objRemove a property entirely — not null, gone
KEYS ?obj SET ?arr / VALUES ?obj SET ?arrList all keys / all values
APPEND "key" AS val TO ?objAdd a property via APPEND form
SEARCH OBJECT ?obj FOR val SET ?keyFind the key holding a value, or null
MERGE OBJECT ?a WITH ?b SET ?combinedMerge two objects — right side wins on key collision
NEW OBJECT ["k" AS v AND "k2" AS v2] SET ?objInline object literal
[item1 AND item2 AND item3]Inline array literal
FOREACH ?arr SET ?value OPEN...CLOSEIterate an array's values
FOREACH ?arr SET ?key AS ?valueIterate with index/key and value
FOREACH ?obj SET ?key AS ?valueIterate an object's properties
NEW MULTIARRAY SET ?m / APPEND ?row TO ?mArray-of-arrays for grid/nested data
?m(row)(col) / col OF row OF ?mTwo equivalent nested-access notations
FLATTEN ?m SET ?flatCollapse a multiarray into one flat array

Date & Time

Verb Description
NEW DATE / NEW TIME / NEW DATE AND TIME SET ?varCurrent date/time/both
NEW DATE FROM "..." / NEW TIME FROM "..." / NEW DATE AND TIME FROM "..."Parse from a specific string
CALCULATE ?date +/- n DAY|WEEK|MONTH|YEARDate arithmetic
CALCULATE ?dt +/- n MINUTES|HOURSDatetime arithmetic
CALCULATE ?date FIRST DAY / LAST DAYFirst/last day of the month
GET ?date DAY FULLNAME|SHORTNAME / MONTH FULLNAME|SHORTNAMENamed day/month components
GET ?dt YEAR|MONTH|DAY|HOUR|MINUTE|SECONDNumeric components
GET ?dt TIMESTAMP SET ?unixUnix timestamp
FORMAT DATE|TIME|DATE AND TIME ?var AS "pattern" SET ?strCustom format string
CALCULATE ?a - ?b AS days|hours|years SET ?diffDifference between two dates, in a chosen unit
CONVERT TIMEZONE ?dt TO "tz" SET ?convertedTimezone conversion
RANDOMIZE DATE|TIME|DATE AND TIME FROM RANGE "a" TO "b" SET ?rRandom date/time within a range

Convert & Cast

Verb Description
CONVERT IMAGE "path" TO FORMAT [AS "path"|SET ?path]Convert image format
CONVERT DOCUMENT "path" TO FORMAT AS "path"Convert document format
CONVERT VIDEO "path" TO FORMAT AS "path"Convert video format
CONVERT AUDIO "path" TO FORMAT AS "path"Convert audio format
... SET PROMISE ?jobAny CONVERT can run in the background — WAIT FOR to collect
CAST ?var AS STRING|NUMBER|BOOL|DATE|JSON|OQLOBJECTType conversion between OQL values
CAST ?date FROM "pattern"Custom input format when casting to DATE
ENCODE ?str AS BASE64|URL|HEX SET ?outEncode a string
DECODE ?str AS BASE64|URL|HEX SET ?outDecode a string
FORMAT NUMBER ?n WITH n DECIMALS SET ?strFixed decimal places
FORMAT NUMBER ?n AS INTEGER|SCIENTIFIC|CURRENCY SET ?strOther number formats
PARSE ?str AS JSON|OQLOBJECT|CSV|XML|YAML|TOML|QUERY STRING|HTML|MARKDOWN SET ?outParse a string in a given format into a usable OQL value

Crypto & Compute

Verb Description
GENERATE HASH FOR ?v AS sha256|sha384|sha512|sha1|md5 SET ?hashOne-way hash of a string or bytes value, as hex
GENERATE HASH FOR ?v AS hmac-sha256|hmac-sha512|hmac-sha1|hmac-md5 KEY ?key SET ?sigKeyed hash (HMAC), as hex; the key may be text or bytes
ENCRYPT ?str USING ?key AS aes|chacha20|des SET ?outSymmetric encryption
DECRYPT ?str USING ?key AS aes|chacha20|des SET ?outSymmetric decryption
GENERATE KEY AS aes|chacha20|rsa|ecc SET ?keyGenerate a cryptographic key
GENERATE UUID SET ?idGenerate a UUID
RANDOMIZE FROM RANGE a TO b AS integer|decimal [PLACES n] SET ?rRandom number in a range
RANDOMIZE STRING LENGTH n AS alphanumeric|hex|numeric|uppercase|lowercase SET ?rRandom string of a given charset
RANDOMIZE FROM STRING "charset" [LENGTH n] SET ?rRandom string from a custom charset

HTTP, Network & Sockets

Verb Description
FETCH "url" SET ?dataBasic GET request
FETCH "url" SET PROMISE ?dataNon-blocking fetch — collect later with WAIT FOR
... METHOD "post" BODY "..." HEADER "..." TIMEOUT n SECONDSFETCH modifiers
... IP "x.x.x.x" / IP ALIAS "..."Force a specific outbound IP
... PROXY "http://..."|"socks5://..."Route through a proxy
... USER AGENT "..."Custom user agent string
... INTO "path"Save the response directly to a file
... SET ?code WITH STATUS AND SET ?body WITH DATACapture status code and body separately
CURL ...Direct alias for FETCH, identical modifiers
STATUS nSet the HTTP response status code — does not stop execution
WEBSOCKET "wss://..." SET ?ws / SEND ?ws "msg" / RECEIVE ?ws SET ?msg / CLOSE ?wsRaw WebSocket client
TCP "host" PORT n SET ?tcp / SEND / RECEIVERaw TCP client
UDP "host" PORT n SEND "msg"Raw UDP send

Image Processing

Verb Description
NEW RAW IMAGE WIDTH w HEIGHT h SET ?img AS OPEN PIXEL X n Y n AS "r,g,b[,a]" CLOSEBuild an image pixel-by-pixel from scratch
IMAGE LOAD "path or url" SET ?imgLoad an existing image
GRAPHIC ?img EXPORT AS "png"|"jpg"|"bmp"|"webp"|"gif" SET ?b64Export to a format, returned as base64 text
GRAPHIC ?img RESIZE WIDTH w [HEIGHT h] SET ?imgResize, aspect-preserved if height omitted
GRAPHIC ?img CROP POSITION X n Y n WIDTH w HEIGHT hCrop
GRAPHIC ?img ROTATE n / FLIP HORIZONTAL|VERTICALRotate/flip
GRAPHIC ?img THUMBNAIL WIDTH w HEIGHT hGenerate a thumbnail
GRAPHIC ?img FILTER AS GREYSCALE|SEPIA|BLUR|SHARPEN|INVERTApply a filter, optionally scoped to a selection
GRAPHIC ?img SELECT RECTANGLE|ELLIPSE|LASSO|COLOR ... SET ?selMake a selection
GRAPHIC ?img REPLACE "color" WITH "color"Replace a color throughout the image
GRAPHIC ?img FILL X n Y n WITH "color"Flood fill
GRAPHIC ?img GET COLOR OF X n Y n SET ?colorSample a pixel's color
GRAPHIC ?img TEXT "..." POSITION FONT SIZE COLOR WEIGHT OUTLINE SHADOW BACKGROUNDDraw text onto an image
GRAPHIC ?img WATERMARK WITH "text"|?logo_imgApply a watermark
GRAPHIC ?img COMPOSITE WITH ?overlay AT X n Y nComposite one image onto another
GRAPHIC ?img REMOVE BACKGROUNDBackground removal
GRAPHIC ?img HISTOGRAM SET ?dataRGB histogram data
NEW GRAPHIC LAYER SET ?layer / GRAPHIC ?img ADD LAYER ?layerLayer system
GRAPHIC ?layer ORDER ABOVE|BELOW / OPACITY n / BLEND "mode" / HIDE / SHOWLayer stacking and blending
GRAPHIC ?img FLATTEN SET ?finalMerge all layers into one image
GRAPHIC ?img CUT|COPY|DELETE|MOVE|PASTE ?sel ...Selection-based editing operations

Media (Video & Audio) Processing

Verb Description
MEDIA LOAD "path" SET ?mediaLoad a video/audio file
MEDIA ?media PROBE [VIDEO|AUDIO] SET ?infoInspect codec/format/duration metadata
MEDIA ?media EXPORT AS "format" SET ?outExport to mp4/webm/avi/mkv/mov/gif/mp3/wav/ogg/flac/aac
MEDIA ?media TRANSCODE AS "format" SET ?outTranscode to another container/codec
MEDIA ?media SCALE WIDTH w [HEIGHT h] SET ?outResize video, aspect-preserved if height omitted
MEDIA ?media SPEED n SET ?outPlayback speed, audio pitch auto-corrected
MEDIA ?media TRIM FROM "hh:mm:ss" TO "hh:mm:ss" SET ?clipCut a clip
MEDIA ?a SPLICE WITH ?b SET ?joinedConcatenate clips
MEDIA ?media EXTRACT FRAME AT "time" SET ?frameGrab a single still frame, as an image value: path, format, width, height
MEDIA ?media INSERT FRAME ?img AT "time" DURATION n SET ?outInsert a still image as a frame
MEDIA ?media INSERT CLIP ?clip AT "time" DURATION n [LOOP]Insert another clip
MEDIA ?media REPLACE FRAME WITH ?img FROM..TOReplace a frame range with an image
MEDIA ?media REPLACE CLIP WITH ?clip FROM..TOReplace a clip range
MEDIA ?media EXTRACT AUDIO SET ?audio / REPLACE AUDIO WITH ?a / MUTEAudio track manipulation
MEDIA ?audio NORMALIZE / VOLUME n / PITCH nAudio level and pitch
MEDIA ?a MIX WITH ?b SET ?mixedMix two audio tracks
MEDIA ?media FADE IN|OUT DURATION n FROM nAudio/video fade
MEDIA ?media OVERLAY ?img AT X n Y n / SUBTITLE WITH "file.srt"Overlay an image / burn in subtitles
MEDIA ?media TEXT "..." POSITION SIZE COLOR FONTDraw text onto video
MEDIA ?media BLUR RADIUS n / COLOR GRADE CONTRAST SATURATION BRIGHTNESS GAMMAVisual effects and color grading
MEDIA ?media MIRROR HORIZONTAL|VERTICAL / REVERSE / STABILIZEFlip, reverse playback, stabilize shake
MEDIA ?media FREEZE FRAME AT "time" DURATION n / BOOMERANG / LOOP TIMES nFreeze-frame, boomerang, repeat
MEDIA ?media GREEN SCREEN WITH ?bg KEY "0xHEX" SIMILARITY n BLEND nChroma key compositing
MEDIA ?a SPLIT SCREEN WITH ?b HORIZONTAL|VERTICALSide-by-side/stacked composite
MEDIA ?a TRANSITION WITH ?b DURATION n SET ?finalCross-fade transition between two clips
NEW TIMELINE SET ?t / TIMELINE ?t ADD TRACK "video"|"audio"Multi-track timeline editing
TIMELINE ?t SAVE / SAVE INTO "path.oql" / TIMELINE OPEN "path.oql"Persist a timeline as native OcaltQL source text and reopen it
TIMELINE ?t TRACK n PLACE ?clip AT "time" / RENDER SET ?finalPlace clips on tracks, render the final composite
MEDIA ?media SPEED RAMP FROM..TO RATE nVariable speed ramping over a time range
MEDIA ?media AUTO CAPTION [LANGUAGE STYLE COLOR POSITION]Automatic caption generation

Mail & Mailbox Management

Verb Description
MAIL TEXT|HTML BODY "..." TO "..." SUBJECT "..."Send an email
... CC "..." / BCC "..."Carbon copy / blind carbon copy
... HEADER "Name: value"Custom email header
... REPLY TO "..."Set reply-to address
... ATTACH "path"Attach a file
REDIRECT "url" [AS "302"]HTTP redirect, ends the script
NEW EMAIL ACCOUNT "name" AT "subdomain.ocalt.site"|"domain.com" WITH PASSWORD "pw" SET ?accCreate a mailbox on a subdomain you own or a domain pointed at Ocalt — returns address, imap_host, pop3_host
NEW EMAIL IMAP "host" WITH "password" AS "user" SET ?connConnect to an IMAP mailbox
EMAIL ?conn LIST FOLDERS / INBOX / SENT / DRAFTS / SPAM / TRASH / FOLDER "name"Mailbox folder access
EMAIL ?conn UNREAD / SEARCH "query"Filter messages
EMAIL ?conn UID uid SET ?msgFetch a specific message by UID
EMAIL ?conn MARK uid AS READ|UNREAD|FLAGGED|UNFLAGGED|DELETEDChange message flags
EMAIL ?conn MOVE uid TO "folder" / COPY uid TO "folder"Move/copy a message between folders
EMAIL ?conn LABELS uid / ADD LABEL / REMOVE LABELGmail-style label management
EMAIL ?conn SAVE DRAFT TO ... SUBJECT ... BODY ...Save a draft
EMAIL ?conn SEND TO ... CC BCC SUBJECT BODY REPLY TO HEADER ATTACHSend via an open IMAP connection
EMAIL ?conn CLOSEClose the connection
NEW EMAIL POP3 "host" WITH "password" AS "user" SET ?connConnect to a POP3 mailbox
EMAIL ?conn LIST SET ?messagesList messages (uid, size only — full fields need UID fetch)
EMAIL ?conn DELETE uidDelete a message

Cache, Remember & Timing

Verb Description
REMEMBER "key" AS valStore a value in namespace-persistent key/value storage, no expiry
RECALL "key" SET ?varRead a remembered value, or null
FORGET "key"Delete a remembered value
CACHE STORE "key" AS val TTL n SECONDS|MINUTES|HOURStore with an expiry
CACHE GET "key" SET ?varRead a cached value, null if expired/missing
CACHE REMOVE "key"Delete a cached value early
SLEEP n MILLISECONDS|SECONDS|MINUTES|HOURBlock execution for a fixed duration
FETCH "url" SET PROMISE ?varStart an async operation without blocking
WAIT FOR ?promise [n SECONDS] SET ?resultBlock until a promise resolves, optional timeout
?promise IS SET|EMPTY|WAITING|INFINITEPromise state checks

Every Verb in the Runtime

All 425 verbs the runtime knows, taken from its own verb table, so this list cannot fall behind the language. Each row shows a verb with its slots in square brackets - those are its parameters and modifiers, exactly as the parser accepts them - what it does, and the page that teaches it in context.

Verb, with its slots What it does Taught on
ABSOLUTE VALUE OF <expr>Natural-language rounding functionsverb-reference
ACCOUNT COMPARE <expr> [WITH <value>]Constant-time string comparison — safe for comparing tokens and secretsaccounts-system
ACCOUNT DELETE <expr>Permanently delete a user account and all its sessionsaccounts-system
ACCOUNT LOGIN <expr> [WITH <value>]Authenticate and place the account in the current sessionaccounts-system
ACCOUNT REGISTER <expr> [WITH <value>]UID (string, permanent) or null if the email is already registeredaccounts-system
ACCOUNT REVOKE <expr>Invalidate all sessions for a useraccounts-system
ACCOUNT UPDATE EMAIL <expr> [TO <new email>]Change the email address on an accountaccounts-system
ACCOUNT UPDATE PASSWORD <expr> [WITH <value>]Change the password on an accountaccounts-system
ACCOUNT VERIFY <expr>Mark a user account as verified (e.g. after email confirmation)accounts-system
ADD <expr> [TO <number>]Natural-language additionverb-reference
ADD ATTENDEE <expr> [TO <event>]Used as: ADD ATTENDEE "carol@co.com"calendar
ANIMATE EMPHASIS <expr> [DELAY <t>] [DURATION <t>]"pulse" , "spin" , "grow" , "shrink" , "shake"presentations-animations
ANIMATE ENTER <expr> [DELAY <t>] [DURATION <t>]"fade-in" , "fly-in-left" , "fly-in-right" , "fly-in-top" , "fly-in-bottom" , "zoom-in" , "bounce-in" , "wipe-in"presentations-animations
ANIMATE EXIT <expr> [DELAY <t>] [DURATION <t>]"fade-out" , "fly-out-left" , "fly-out-right" , "fly-out-top" , "fly-out-bottom" , "zoom-out" , "wipe-out"presentations-animations
APPEND <expr> [AS <value>] [TO <array or object>]Add a property via APPEND formverb-reference
APPLICATE TYPE <expr> [TITLE <s>] [IDENTIFIER <s>] [TO <path>] [FROM <path>] [AT <path>] [SIGN WITH <key>]Package OQL/HTML/JS/assets into native apps — Android, Windows, macOS, iOS, Linuxverb-reference
ASSIGN MATERIAL <expr> [TO <object>]Used as: AFTER ?win1 ASSIGN MATERIAL ?glassMatrendering-visualization
BIM <expr> [LEVEL <name>] [ELEVATION <mm>] [WALL FROM <x,y>] [DOOR IN <wall>] [WINDOW IN <wall>] [COLUMN AT <x,y>] [BEAM FROM <x,y>] [TO <x,y>] [AT <offset>] [SILL <mm>] [WIDTH <mm>] [HEIGHT <mm>] [THICKNESS <mm>] [TYPE <t>] [SCHEDULE <name>] [CATEGORY <c>] [LIST] [EXPORT AS <fmt>]Bring in a building model3d-import-export
BIM OPEN <expr>>— BIM <expr> [LEVEL <name>] [ELEVATION <mm>] [WALL FROM <x,y>] [DOOR IN <wall>] [WINDOW IN <wall>] ...verb-reference
BLOCK <expr> [ADD <kind>] [VALUE <n>] [AT TIME <t>] [P <n>] [I <n>] [D <n>] [NUMERATOR <a>] [DENOMINATOR <a>] [GAIN <n>] [INPUTS <list>] [SIGNS <list>] [CONNECT <from>] [TO <to>] [SIMULATE] [DURATION <s>] [STEP <s>] [PLOT <block>] [STABILITY POLES] [SAVE INTO <path>]r> — BLOCK <expr> [ADD <kind>] [VALUE <n>] [AT TIME <t>] [P <n>] [I <n>] ...verb-reference
BLOCK OPEN <expr>r> — BLOCK <expr> [ADD <kind>] [VALUE <n>] [AT TIME <t>] [P <n>] [I <n>] ...verb-reference
BOOK SLOT <expr> [WITH NAME <s>] [AND EMAIL <s>] [IN CALENDAR <cal>]BOOK SLOT converts a slot into a confirmed event.calendar
BREAKExit a LOOP/WHILE or SWITCH CASE earlyverb-reference
BRIDGE CLOSE <expr>Explicitly close a room and its signaling state (id may be any expression)audio-video-bridge-webrtc
BROWSER <expr>Start a headless browser automation sessionverb-reference
BROWSER OPEN <expr>Start a headless browser automation sessionverb-reference
CACHE GET <expr>Read a cached value, null if expired/missingverb-reference
CACHE REMOVE <expr>Delete a cached value earlyverb-reference
CACHE STORE <expr> [AS <value>] [TTL <n>] [SECONDS] [MINUTES] [HOURS] [DAYS]Store with an expiryverb-reference
CAD <expr> [EDGE AT <xyz>] [FACE AT <xyz>] [RECTANGLE FROM <xy>] [CIRCLE CENTER <xy>] [ARC CENTER <xy>] [TO <xy>] [RADIUS <n>] [START <deg>] [END <deg>] [MEASURE]Bring in CAD geometry3d-import-export
CAD BOOLEAN <expr> [WITH <solid>]xpiry CAD <expr> [EDGE AT <xyz>] [FACE AT <xyz>] [RECTANGLE FROM <xy>] [CIRCLE CENTER <xy>] [ARC CENTER <xy>] ...verb-reference
CAD EXPORT <expr> [TO <path>]Send CAD geometry out3d-import-export
CAD EXTRUDE <expr> [HEIGHT <n>]Used as: AFTER CAD EXTRUDE ?sketch HEIGHT 10 SET ?bracketparametric-surface-modeling
CAD FILLET [EDGES <list>] [RADIUS <n>] [ON <solid>]Used as: AFTER CAD FILLET EDGES [?edge] RADIUS 3 ON ?housing SET ?housingverb-reference
CAD IMPORT <expr>Bring in CAD geometry3d-import-export
CAD INSERT COMPONENT <expr> [INTO <assembly>] [AS <name>]Used as: AFTER CAD ?asm INSERT COMPONENT ?bracket AS "bracket" SET ?c1parametric-surface-modeling
CAD INTERFERENCE CHECK <expr>Used as: AFTER CAD ?asm INTERFERENCE CHECK SET ?clashesparametric-surface-modeling
CAD LOFT [PROFILES <list>]Used as: CAD LOFT PROFILES ?sections SET ?skinparametric-surface-modeling
CAD MATE <expr> [FACE <n>] [COINCIDENT WITH <c>] [CONCENTRIC WITH <c>] [TO FACE <n>] [OFFSET <mm>]Used as: AFTER CAD ?asm MATE ?c1 FACE ?f1 COINCIDENT WITH ?c2 FACE ?f2parametric-surface-modeling
CAD MIRROR <expr> [PLANE <p>]Used as: AFTER CAD MIRROR ?bracket PLANE ?midPlane SET ?mirroredparametric-surface-modeling
CAD OPTIMIZE TOPOLOGY [OF <femesh>] [KEEPING <fraction>] [ITERATIONS <n>] [FORCE <xyz>] [FIXED SUPPORT ON FACE <xyz>] [ON FACE <xyz>] [SMOOTHING <mm>]generative-topologyverb-reference
CAD PATTERN <expr> [DIRECTION <v>] [COUNT <n>] [SPACING <n>]Used as: AFTER CAD PATTERN LINEAR ?holeSolid DIRECTION 1,0,0 COUNT 4 SPACING 20 SET ?bracketparametric-surface-modeling
CAD REVOLVE <expr> [AXIS <a>] [ANGLE <deg>]NEW CAD SKETCH ON PLANE "XZ" SET ?profile AFTER CAD ?profile ARC CENTER 0,0 RADIUS 20 START 0 END 180 SET ?arc AFTER CAD REVOLVE ?profile AXIS ?arc ANGLE 360 SET ?sphereparametric-surface-modeling
CAD SHELL <expr> [THICKNESS <n>] [REMOVE FACES <list>]Used as: CAD SHELL ?bracket THICKNESS 1 REMOVE FACES [?topFace] SET ?bracketverb-reference
CAD SIMULATE MOTION <expr> [DURATION <s>] [STEP <s>] [GRAVITY <mm/s2>]NEW CAD LINK describes one and returns it as a value — nothing is created and no document is touched.verb-reference
CAD SWEEP <expr> [PATH <p>] [TWIST <deg>]Used as: AFTER CAD SWEEP ?circle PATH ?helixPath TWIST 180 SET ?springparametric-surface-modeling
CAD TESSELLATE <expr> [TOLERANCE <n>]CAD TESSELLATE ?solid TOLERANCE 0.01 SET ?mesh AFTER SIM MESH ?solid ELEMENT SIZE 2 SET ?femesh3d-foundation
CAD THICKEN <expr> [THICKNESS <mm>]Used as: AFTER CAD THICKEN ?skin THICKNESS 2 SET ?shellparametric-surface-modeling
CALCULATE <expr>Evaluate a math expression — +, -, *, /, parentheses, standard precedenceverb-reference
CALL <expr> [ON <instance>]Invoke an instance method — THIS bound insideverb-reference
CAST <expr> [AS <type>] [FROM <pattern>]Type conversion between OQL valuesverb-reference
CATCH ERRORCapture the error from a failed statement without stopping the chainverb-reference
CEILING OF <expr>CEILING OF 3.1 SET ?ans AFTER EMIT ?ans (* Output: 4 *)strings-math
CHAT <expr> [APPEND MESSAGE <text>] [APPEND PEER] [LIST MESSAGES] [WITH FILES <array>] [WITH FILE <path>] [FROM <peer>] [SINCE <id>] [LIMIT <n>]Append a message. Timestamp and id are set for youchat-system
CHAT LISTEvery room in the namespacechat-system
CHAT PEER LIST <expr>Every peer id in a room, in seat orderchat-system
CHECK AVAILABILITY [FROM <dt>] [TO <dt>] [FOR <n>] [UNIT]Scheduling/bookingverb-reference
CLOSE <expr>The body is wrapped in OPEN and CLOSE .verb-reference
COLLAPSE <expr>Convert a multivariable into an ordered arrayverb-reference
COMPUTE <expr> [OF <number>] [AND <second number>]Named single-argument computationsverb-reference
CONFIRM BOOLEAN [LABEL <text>]A yes/no popup, returns true or falsegather-confirm
CONSISTENT <expr>Keep the tid in CONSISTENT or PERSISTENT and a later script can ask after the same transfer.verb-reference
CONTINUESkip to the next LOOP/WHILE iterationverb-reference
CONVERT <expr> [FROM <unit>] [TO <unit>]Timezone conversionverb-reference
CONVERT AUDIO <expr> [TO <format>]Convert audio formatverb-reference
CONVERT DOCUMENT <expr> [TO <format>]Convert document formatverb-reference
CONVERT IMAGE <expr> [TO <format>]Convert image formatverb-reference
CONVERT TIMEZONE <expr> [TO <timezone>]Timezone conversionverb-reference
CONVERT VIDEO <expr> [TO <format>]Convert video formatverb-reference
COOKIE GET <expr>session-cookiesverb-reference
COOKIE REMOVE <expr> [PATH <path>]session-cookiesverb-reference
COOKIE SET <expr> [AS <value>] [PATH <path>] [EXPIRES <n>] [DAYS] [DOMAIN <domain>] [SECURE] [HTTPONLY]session-cookiesverb-reference
COUNT <expr>Count matching rowsverb-reference
COUNT ROWS [FROM DB <name>] [TABLE <name>] [WHERE ...]Count matching rowsverb-reference
CRON DELETE <expr>Used as: AFTER CRON DELETE ?jobschedule-cron
CRON DESCRIBE <expr>Used as: CRON DESCRIBE ?job SET ?infoschedule-cron
CRON LISTUsed as: CRON LIST SET ?jobsschedule-cron
CURL <expr> [METHOD <verb>] [HEADER <line>] [BODY <content>] [USER AGENT <string>] [IP <address>] [TIMEOUT <n>] [SECONDS] [INTO <path>]Direct alias for FETCH, identical modifiersverb-reference
CURRENCY CONVERT <expr> [FROM <code>] [TO <code>]weather-currencyverb-reference
CURRENCY RATE [FROM <code>] [TO <code>]Exchange rates and conversionverb-reference
DECODE <expr> [AS <encoding>] [FROM <encoding>]Decode a stringverb-reference
DECRYPT <expr> [WITH <key>] [AS <algorithm>]Symmetric decryptionverb-reference
DEDUPLICATE <expr>Remove duplicate valuesverb-reference
DELETE ROW [FROM DB <name>] [TABLE <name>] [WHERE ...]curl -X POST https://ql.ocalt.com/api \ -d "identity=you@example.ocalt.com" -d "password=your_api_key" \ -d "dry_run=1" \ --data-urlencode 'q=DELETE ROWS FROM DB "shopdb" TABLE "orders" WHERE "id" IS LESS THAN 100' (* Returns whether it parses and what it would do.control-config
DELETE ROWS [FROM DB <name>] [TABLE <name>] [WHERE ...]curl -X POST https://ql.ocalt.com/api \ -d "identity=you@example.ocalt.com" -d "password=your_api_key" \ -d "dry_run=1" \ --data-urlencode 'q=DELETE ROWS FROM DB "shopdb" TABLE "orders" WHERE "id" IS LESS THAN 100' (* Returns whether it parses and what it would do.control-config
DESCRIBE TABLE <expr> [FROM DB <name>]A table's columns DESCRIBE TABLE "people" FROM DB "shopdb" SET ?columns AFTER EMIT ?columns DESCRIBE TABLE returns an array of objects, one per column, in the order the table was defined.verb-reference
DIRECTIVE <expr> [EXEC <cmd>] [DOWNLOAD <path>] [UPLOAD <path>] [SCREENSHOT] [WAKE <mac>] [KILL <pid>] [TUNNEL] [PORT <n>] [TO <path>] [BACKGROUND] [READ <path>] [REDIRECT <url>] [WRITE <path>] [CONTENT <data>] [MOUSE <action>] [KEYBOARD <keys>] [POINTER] [COORDINATES] [X <n>] [Y <n>] [VIEW] [SERVE <path>] [SCREEN] [ON DISPLAY <n|"all">] [POLL <n>] [UPDATE] [LIST DRIVES] [POCKET <name>] [WITH <args>] [LIST FROM <path>] [SECONDS] [MINUTES]Run a shell command, blockingdirective-remote-computing
DIRECTIVE LISTRegistered machines plus slot accounting — ?a("agents") , ?a("used") , ?a("slots")directive-remote-computing
DIRECTIVE NETWORK <expr> [TRANSFER FROM <id://path>] [TO <id://path>] [SHARE <id>] [PORT <n>] [AS <n>]Move a file directly between two peers — non-blocking, returns a status anchordirective-remote-computing
DIRECTIVE PEERS <expr> [AND <id>]Group registered machines into one peer network valuedirective-remote-computing
DIRECTIVE REGISTER <expr>Claim a machine slot — fatal if every slot is in usedirective-remote-computing
DIRECTIVE STATUS <expr>A machine's liveness and location, or a transfer's progress — buffering , done , or in progressdirective-remote-computing
DIRECTIVE TUNNEL END <expr>Close an active tunneldirective-remote-computing
DIRECTIVE UNREGISTER <expr>Release a slot, permitted once it is 24 hours olddirective-remote-computing
DIRECTIVE VIEW END <expr>directive-remote-computingverb-reference
DIVIDE <expr> [BY <number>]Natural-language divisionverb-reference
DNS <expr> [AS <type>]Query A records (default)geoip
DOC CREATE [FROM STRING <s>] [FROM URL <s>] [AS <kind>] [OUTPUT <format>]Convert an HTML string to PDFdocuments
DOMAIN <expr> [TO <target>] [FOR MAIL]Object — current pointing state and reasonsubdomains-site-mode-hosting
DOMAIN REMOVE <expr>SUBDOMAIN REMOVE deregisters one.subdomains-site-mode-hosting
DOMAIN SSL <expr>?ssl("status") — already in progress | failed try again | successful - certificate is livesubdomains-site-mode-hosting
DOMAIN STATUS <expr>Object — current pointing state and reasonsubdomains-site-mode-hosting
DROP CALENDAR <expr>Used as: AFTER DROP CALENDAR ?cal SET ?ncalendar
DROP DB <expr>Example DROP DB "shopdb" Try it DROP DB permanently deletes the entire database — every table, every row, every index inside it.verb-reference
DROP TABLE <expr> [FROM DB <name>]Delete a table entirelyverb-reference
EDITOROpen a file for text/code editingverb-reference
EMAIL <expr>Mailbox folder accessverb-reference
EMAIL ACCOUNT FORWARD <expr> [TO <address>]-verb-reference
EMAIL ACCOUNT LIST-verb-reference
EMAIL ACCOUNT PASSWORD <expr> [TO <s>]Used as: AFTER NEW EMAIL ACCOUNT "hello" AT "tld.com" WITH PASSWORD "Password" SET ?accimap-pop3
EMAIL ACCOUNT REMOVE <expr>-verb-reference
EMAIL DOMAINS-verb-reference
EMIT <expr>Output a value or literalverb-reference
ENCODE <expr> [AS <encoding>]Encode a stringverb-reference
ENCRYPT <expr> [WITH <key>] [AS <algorithm>]Symmetric encryptionverb-reference
EXIT [<expr>]End the script immediatelyverb-reference
EXPORT CALENDAR <expr> [TO FILE <path>]EXPORT CALENDAR ?cal TO FILE "/root/backup.ics" SET ?ical AFTER EMIT "exported"calendar
EXPORT DB <expr> [TABLE <name>] [AS <format>] [INTO <path>] [STRUCTURE ONLY] [DATA ONLY] [NO HEADERS]Writes the whole database outverb-reference
EXTERNAL BIND FTP <expr>Mount the connection as /external — every path-taking verb reaches itftp
EXTERNAL UNBINDUsed as: AFTER EXTERNAL UNBINDftp
FACTORIAL OF <expr>FACTORIAL OF 5 SET ?ans AFTER EMIT ?ansstrings-math
FETCH <expr> [METHOD <verb>] [HEADER <line>] [BODY <content>] [USER AGENT <string>] [IP <address>] [PROXY <url>] [TIMEOUT <n>] [SECONDS] [INTO <path>]Basic GET requestverb-reference
FIBONACCI OF <expr>Natural-language named computationsverb-reference
FILE COMPRESS <expr> [TO <path>] [ZIP] [TAR]Archive a selectionverb-reference
FILE COPY <expr> [TO <path>]Copy a file, or a folder with everything in itfile-manager
FILE DELETE <expr>FILE DELETE "/root/hello.txt"file-manager
FILE EXISTS <expr>Check existenceverb-reference
FILE EXTRACT <expr> [INTO <folder>]FILE EXTRACT is the other half.file-manager
FILE LIST <expr>Directory listingverb-reference
FILE MKDIR <expr>Create a directoryverb-reference
FILE MOVE <expr> [TO <path>]Move/rename a fileverb-reference
FILE READ <expr>DRIVE ?d FILE READ ?path and DRIVE PICK return one object:applicate
FILE SELECT <expr>Select multiple paths for batch operationsverb-reference
FILE SELECTION <expr> [COPY] [MOVE] [DELETE] [TO <path>]Batch operate on a selectionverb-reference
FILE SHARE <expr>Generate a public share URLverb-reference
FILE SHARE LISTManage active sharesverb-reference
FILE STAT <expr>Also works *) AFTER FILE STAT "/root/pixel.png" SET ?s AFTER EMIT "wrote " & ?s("size") & " bytes" (* Emits: wrote 69 bytes — a real 1x1 PNG on disk.file-manager
FILE UNSHARE <expr>Used as: AFTER FILE UNSHARE "/root/file.mp3"file-manager
FILE UNSHARE ALLUsed as: AFTER FILE UNSHARE ALLfile-manager
FILE WRITE <expr> [CONTENT <text>] [TO <path>] [BASE64]Write a file. A bytes value needs no modifier — it is already binary. BASE64 is for when the script holds base64 text and wants the decoded bytes on diskverb-reference
FLATTEN <expr>Collapse a multiarray into one flat arrayverb-reference
FLOOR OF <expr>FLOOR OF 3.9 SET ?ans AFTER EMIT ?ans (* Output: 3 *)strings-math
FLUSH TABLE <expr> [FROM DB <name>]Empty a table, keep its schemaverb-reference
FOREACH <expr>Iterate an array's valuesverb-reference
FORGET <expr>Delete a remembered valueverb-reference
FORMAT DATE <expr> [AS <pattern>]FORMAT DATE AND TIME renders one against a pattern.date-time
FORMAT DATE AND TIME <expr> [AS <pattern>]FORMAT DATE AND TIME renders one against a pattern.date-time
FORMAT NUMBER <expr> [AS <pattern|INTEGER|SCIENTIFIC|CURRENCY>] [WITH <n>] [DECIMALS]Fixed decimal placesverb-reference
FORMAT TIME <expr> [AS <pattern>]FORMAT DATE and FORMAT TIME are documented on the Date & Time page.convert-cast
FTP <expr>Connect by password — FTP, or FTPS with SECUREftp
FTP ACCESS LISTUsed as: AFTER FTP ACCESS LIST SET ?allftp
FTP ACCESS REVOKE <expr>Used as: AFTER FTP ACCESS REVOKE ?access("id")ftp
FTP CONNECT <expr> [ON <port>] [AS <user>] [WITH <password>] [KEY <path>] [SECURE]Connect by password — FTP, or FTPS with SECUREftp
FTP STATUS <expr>Progress of a server-to-server transferftp
GATHER DATE [LABEL <text>] [RANGE] [MIN <n>] [MAX <n>]Collect a date via a native date pickergather-confirm
GATHER EMAIL [LABEL <text>]Collect and validate an email addressgather-confirm
GATHER NUMBER [LABEL <text>] [VALUE] [MIN <n>] [MAX <n>]Collect a numeric valuegather-confirm
GATHER REGEX <expr> [LABEL <text>]Collect a value matching a custom patterngather-confirm
GATHER STRING [LABEL <text>] [LENGTH] [MIN <n>] [MAX <n>]Collect a text valuegather-confirm
GENERATE HASH <expr> [AS <algorithm>] [KEY <secret>]Hashing GENERATE HASH FOR produces a cryptographic hash of a value.crypto-compute
GENERATE HASH FOR <expr> [AS <algorithm>] [KEY <secret>]Hashing GENERATE HASH FOR produces a cryptographic hash of a value.crypto-compute
GENERATE KEY [AS <algorithm>]Generate a cryptographic keyverb-reference
GENERATE UUIDGenerate a UUIDverb-reference
GEOIP <expr>Visitor’s IP address stringgeoip
GEOIP ADDRESSVisitor’s IP address stringgeoip
GEOIP ALLFull object: {ip, city, country, region, lat, lon}geoip
GEOIP CITYUsed as: AFTER GEOIP CITY SET ?citygeoip
GEOIP COUNTRYUsed as: AFTER GEOIP COUNTRY SET ?countrygeoip
GEOIP LATLatitude (number)geoip
GEOIP LNGUsed as: AFTER GEOIP LNG SET ?lnggeoip
GEOIP LONLongitude (number) — LNG accepted as aliasgeoip
GEOIP REGIONState / provincegeoip
GET <expr> [DAY FULLNAME] [DAY SHORTNAME] [MONTH FULLNAME] [MONTH SHORTNAME] [YEAR] [MONTH] [DAY] [HOUR] [MINUTE] [SECOND] [TIMESTAMP]Next event or nullcalendar
GET EVENT <expr>GET EVENTS THIS WEEK WHERE TITLE CONTAINS "Standup" SET ?byTitle AFTER GET EVENTS FROM "2026-07-01" TO "2026-07-31" WHERE LOCATION IS "Conference Room A" SET ?byLocation AFTER EMIT ?byTitlecalendar
GET EVENTS [FROM <date>] [TO <date>] [TODAY] [TOMORROW] [THIS WEEK] [THIS MONTH] [WHERE TITLE] [WHERE LOCATION] [WHERE ATTENDEE] [WHERE CALENDAR] [CONTAINS <s>] [IS <s>]Filter event queriesverb-reference
GET NEXT EVENTNext event or nullcalendar
GRAPH TYPE <expr> [TITLE <s>] [THEME <s>]Embedded SVG chart — any type from Graphs - SVG Chartspresentations-animations
GRAPHIC <expr>Freeform selection defined by a list of coordinate pointsverb-reference
GROUP BY <expr> [FROM DB <name>] [TABLE <name>]Group rows by column valueverb-reference
HEADER <expr> [AS <value>]Set an HTTP response headerverb-reference
HTML <expr>Create an element with attributesverb-reference
HTML APPEND <expr> [TO <node>]Append a node to a documentverb-reference
HTML GET <expr> [FROM <node>]Select a single element (querySelector)verb-reference
HTML GET ALL <expr> [FROM <node>]Select every matching element (querySelectorAll)verb-reference
HTML REVERSE <expr>Parse raw HTML/fetched markup into OQL's native node formverb-reference
HTML TEXT NODE <expr>Insert a raw text nodeverb-reference
IF <expr>Check whether a variable currently existsverb-reference
IMAGE LOAD <expr>Load an existing imageverb-reference
IMPORT CALENDAR [FROM FILE <path>] [INTO <cal>]IMPORT CALENDAR FROM FILE "/root/events.ics" INTO ?cal SET ?n AFTER EMIT "Imported: " & ?n & " events"calendar
IMPORT DB <expr> [TABLE <name>] [FROM <path>] [REPLACE] [CREATING] [NO HEADERS]Reads a whole database inverb-reference
INCLUDE <expr>Execute another script file, sharing scope, capturing its top-level RETURNverb-reference
INSERT [INTO DB <name>] [TABLE <name>] [ROW "col" AS <value>]RICH INSERT ?doc WITH "Annual Report 2026" AS "heading-1" AT LINE 1 FONT "Inter" SIZE 32 WEIGHT 700 COLOR "#0d1117" SET ?docdocuments
JOIN <expr> [WITH <separator>]Join into a string, separator optional. JOIN ARRAY is an accepted aliasverb-reference
JOIN ARRAY <expr> [WITH <separator>]JOIN ARRAY ?arr ...arrays-objects
JOIN LEFT SELECT [DB <name>] [TABLES <a> AND <b>] [WHERE ...]JOIN LEFT SELECT DB "shopdb" TABLES "orders" AND "users" WHERE "user_id" OF "orders" IS IDENTICAL TO "id" OF "users" SET ?resultscolumns-rows
JOIN SELECT [DB <name>] [TABLES <a> AND <b>] [WHERE ...]JOIN SELECT DB "shopdb" TABLES "orders" AND "users" WHERE "user_id" OF "orders" IS IDENTICAL TO "id" OF "users" AND "status" OF "orders" IS IDENTICAL TO "shipped" SET ?resultscolumns-rows
KEYS <expr>List all keys / all valuesverb-reference
KILL PERSISTOnce started, every later script execution in the same session continues within that same open timeline, carrying its state forward, until KILL PERSIST explicitly closes it.verb-reference
KILL SESSIONaccounts-systemverb-reference
LENGTH <expr>Distance from its hinge to its mass, mmparametric-surface-modeling
LIST CALENDARSUsed as: AFTER LIST CALENDARS SET ?allcalendar
LIST DATABASESLIST DATABASES SET ?dbs AFTER EMIT ?dbs (* An array of database names, alphabetically *)databases-tables
LIST TABLES [FROM DB <name>]betically *) Every table in one database LIST TABLES FROM DB "shopdb" SET ?tables AFTER EMIT ?tables (* Output: orders, people, users *) IN DB is accepted wherever FROM DB is, so LIST TABLES IN DB "shopdb" reads the same.verb-reference
LOGARITHM OF <expr> [BASE <number>]Natural log by default, or a specified baseverb-reference
LOOP <expr> [TO <number>] [STEP <number>]Counted loop, ascendingverb-reference
MAIL [TEXT] [HTML] [BODY <content>] [TO <recipients>] [SUBJECT <text>] [CC <recipients>] [BCC <recipients>] [HEADER <line>] [REPLY TO <address>] [ATTACH <path>]Your databases, your files, your namespace, !GET , !POST , sessions, FETCH, MAIL — everything that works through the API works here, because it is the API.applicate
MAP BOUNDARY <expr>Administrative region polygonverb-reference
MAP BOUNDS <expr>MAP BOUNDS ?places SET ?boundsmaps-geocoding
MAP CIRCLE [LAT <n>] [LON <n>] [RADIUS <n>] [UNIT <km|mi>]MAP CIRCLE LAT -33.9249 LON 18.4241 RADIUS 5 UNIT "km" SET ?circle1maps-geocoding
MAP CLUSTER <expr>Cluster points / bounding boxverb-reference
MAP DISTANCE [FROM COORDINATES <s>] [FROM <place>] [TO COORDINATES <s>] [TO <place>] [COUNTRY <cc>] [PROVINCE <name>]Straight-line (Haversine) distanceverb-reference
MAP GEOCODE <expr> [LIMIT <n>] [COUNTRY <cc>] [BOUNDS <box>]Address to coordinatesverb-reference
MAP LINE <expr>Build map shapesverb-reference
MAP LIVE [<expr>] [LINES <arr>] [POLYGONS <arr>] [CIRCLES <arr>] [CENTER VISITOR] [CENTER <lat,lon>] [ZOOM <n>] [STYLE <preset>] [WIDTH <n|pct>] [HEIGHT <n|pct>] [PINS <n|unlimited>] [DRAW LINES] [DRAW POLYGONS] [LABEL <s>] [AUTOFIT] [FULLSCREEN] [AS NODE] [NAME <field>]MAP LIVE CENTER "-33.9249,18.4241" ZOOM 13 PINS 1 LABEL "Tap your delivery location, then press Done" SET ?result AFTER EMIT ?result("points")(0)("lat") & ", " & ?result("points")(0)("lon")maps-geocoding
MAP MATRIX <expr>Many-to-many distance/duration matrixverb-reference
MAP MOVE <expr> [TO <lat,lon>] [LABEL <text>] [ICON <name>] [PIN URL <url>] [HEADING <deg>] [AS <marker-id>]MAP MOVE writes a position.maps-geocoding
MAP POINT [LAT <n>] [LON <n>] [LABEL <text>] [ICON <name>] [POPUP <text>] [PIN URL <url>]Build a map pointverb-reference
MAP POLYGON <expr>MAP POLYGON ?points SET ?polygon1maps-geocoding
MAP POSITIONS <expr>Reading positions back MAP POSITIONS ?track returns what the map is currently showing, as ordinary data — so the same positions driving the map can drive a notification, an ETA calculation, or a row in a database.verb-reference
MAP REMOVE <expr> [MARKER <id>]MAP REMOVE ?track MARKER "driver" takes it off the map when the trip ends.maps-geocoding
MAP RENDER <expr> [LINES <arr>] [POLYGONS <arr>] [CIRCLES <arr>] [HEATMAP <arr>] [ZOOM <n>] [STYLE <preset>] [AS <html|image>] [AUTOFIT]Compose and render a full mapverb-reference
MAP REVERSE [LAT <n>] [LON <n>] [DETAIL <level>]Coordinates to addressverb-reference
MAP ROUTE [FROM COORDINATES <s>] [FROM <place>] [TO COORDINATES <s>] [TO <place>] [VIA COORDINATES <s>] [VIA <place>] [COUNTRY <cc>] [PROVINCE <name>] [PROFILE <type>] [ALTERNATIVES]Driving/cycling/walking directionsverb-reference
MAP SEARCH <expr> [BOUNDS <box>] [LIMIT <n>] [COUNTRY <cc>] [PROVINCE <name>]Points-of-interest searchverb-reference
MAP SNAP [LAT <n>] [LON <n>]Snap a point to the nearest roadverb-reference
MATERIAL <expr> [BASE COLOR <c>] [METALLIC <n>] [ROUGHNESS <n>] [OPACITY <n>] [SAVE INTO <path>]MATERIAL ?mat NODE ADD "noise" CONNECT TO "base_color" AFTER SCENE ?scene LIGHT "area" AT 5,5,10 INTENSITY 800 AFTER SCENE ?scene RENDER ANIMATION FRAMES 0 TO 120 SET PROMISE ?anim AFTER SCENE ?scene RENDER WALKTHROUGH PATH [?p1 AND ?p2 AND ?p3] DURATION 30 SET PROMISE ?video AFTER SCENE ?scene RENDER PANORAMA RESOLUTION "8k" SET PROMISE ?panorendering-visualization
MATERIAL OPEN <expr>Used as: MATERIAL OPEN "/root/materials/brushed-steel.oql" SET ?mat3d-foundation
MATRIX <expr> [SET CELL <r,c>] [AS <v>] [CELL <r,c>] [INVERSE] [TRANSPOSE] [EIGENVALUES] [DETERMINANT] [MULTIPLY <m>] [SAVE INTO <path>]t;expr> — MATRIX <expr> [SET CELL <r,c>] [AS <v>] [CELL <r,c>] [INVERSE] [TRANSPOSE] ...verb-reference
MATRIX OPEN <expr>t;expr> — MATRIX <expr> [SET CELL <r,c>] [AS <v>] [CELL <r,c>] [INVERSE] [TRANSPOSE] ...verb-reference
MATRIX SOLVE <expr> [WITH <b>]Used as: AFTER MATRIX SOLVE ?a WITH ?b SET ?xnumerical-computing-controls
MEDIA <expr>Load a video/audio fileverb-reference
MEDIA LOAD <expr>Load a video/audio fileverb-reference
MERGE ARRAY <expr> [WITH <array>]Concatenate two arraysverb-reference
MERGE OBJECT <expr> [WITH <object>]Merge two objects — right side wins on key collisionverb-reference
MESH <expr> [SUBDIVIDE LEVEL <n>] [SMOOTH] [EXPORT AS <fmt>] [MEASURE] [BONE <name>] [FROM <xyz>] [TO <xyz>] [PARENT <bone>] [SKIN TO <rig>] [WEIGHT PAINT <mode>] [KEYFRAME <bone>] [ROTATION <xyz>] [LOCATION <xyz>] [AT FRAME <n>] [INTERPOLATE <kind>] [BETWEEN FRAME <n>] [AND <n>]Bring in mesh geometry3d-import-export
MESH IMPORT <expr>Bring in mesh geometry3d-import-export
MODULO <expr> [BY <number>]Natural-language moduloverb-reference
MULTIPLY <expr> [BY <number>]Natural-language multiplication — BY/WITH interchangeableverb-reference
NETWORK DELETE <expr>Remove one mappingnamespace-network
NETWORK DELETE ALLRemove every mapping, returning how manynamespace-network
NETWORK LISTEvery mapping, with its address and targetnamespace-network
NETWORK MAP <expr> [TO SITE <s>] [TO DATABASE <d>] [TO MACHINE <m>] [TO FOLDER <p>] [TO PROCESS <name>] [AT <address>]Name one of your subdomains. Returns name , address , targetnamespace-network
NEW ARRAY [<expr>]Create an array and append valuesverb-reference
NEW AUDIO BRIDGE [<expr>] [PEERS]Allocate an audio-only signaling room for n peersaudio-video-bridge-webrtc
NEW BIM PROJECT [<expr>] [UNITS <u>]Used as: NEW BIM PROJECT UNITS "m" SET ?bim3d-scripting-workflows
NEW BLOCK DIAGRAMNEW BLOCK DIAGRAM SET ?model AFTER BLOCK ?model ADD "pid_controller" P 2.0 I 0.5 D 0.1 SET ?controller AFTER BLOCK ?model SAVE INTO "/root/models/pid.oql" SET ?path (* ...any later script...numerical-computing-controls
NEW CAD ASSEMBLYNEW CAD ASSEMBLY SET ?asm AFTER CAD ?asm INSERT COMPONENT ?bracket AS "bracket" SET ?c1 AFTER CAD ?asm INSERT COMPONENT ?housing AS "housing" SET ?c2 AFTER CAD ?asm MATE ?c1 FACE ?f1 COINCIDENT WITH ?c2 FACE ?f2 AFTER CAD ?asm MATE ?c1 AXIS ?a1 CONCENTRIC WITH ?c2 AXIS ?a2 AFTER CAD ?asm INTERFERENCE CHECK SET ?clashesparametric-surface-modeling
NEW CAD LINK [MASS <kg>] [LENGTH <mm>] [ANGLE <deg>] [VELOCITY <deg/s>] [TORQUE <Nmm>] [DAMPING <n>] [INERTIA <n>]NEW CAD LINK describes one and returns it as a value — nothing is created and no document is touched.verb-reference
NEW CAD SKETCH [ON PLANE <p>]/td> — NEW CAD LINK [MASS <kg>] [LENGTH <mm>] [ANGLE <deg>] [VELOCITY <deg/s>] [TORQUE <Nmm>] ...verb-reference
NEW CAD SURFACE [THROUGH <sections>] [SOLID] [RULED]NEW CAD SURFACE FROM CURVES [?c1 AND ?c2 AND ?c3] SET ?surf AFTER CAD SURFACE ?surf CONTROL POINT ?pt(3) MOVE TO 10,5,2 AFTER CAD SURFACE ?surf DEGREE U 5 V 5 AFTER CAD SOLID FROM SURFACES [?surf AND ?base AND ?sides] SET ?solidparametric-surface-modeling
NEW CALENDAR <expr> [WITH DESCRIPTION <s>] [COLOR <s>]Calendar objectcalendar
NEW CHAT [WITH <n>] [PEERS]Create a room with n seats. Returns id and peerschat-system
NEW CLASS <expr>Object Oriented Programming NEW CLASS defines a class — a named template of typed properties and methods.oop
NEW CRON <expr> [EVERY <n>] [UNIT] [STARTING <when>]Run an expression repeatedly, on an intervalverb-reference
NEW DATE [FROM <string>]Current date/time/bothverb-reference
NEW DATE AND TIME [FROM <string>]NEW DATE AND TIME with no FROM is the moment it runs; with FROM it parses a string.date-time
NEW DB <expr>Create/destroy a databaseverb-reference
NEW EMAIL ACCOUNT <expr> [AT <domain>] [WITH PASSWORD <s>] [LABEL <s>]Create a mailbox on a subdomain you own or a domain pointed at Ocalt — returns address, imap_host, pop3_hostverb-reference
NEW EMAIL IMAP <expr> [WITH <password>] [AS <user>] [PORT <n>] [PWTYPE <s>]Connect to an IMAP mailboxverb-reference
NEW EMAIL POP3 <expr> [WITH <password>] [AS <user>] [PORT <n>] [PWTYPE <s>]Connect to a POP3 mailboxverb-reference
NEW EVENT <expr> [ON <date>] [FROM <time>] [TO <time>] [AT LOCATION <s>] [TIMEZONE <s>] [WITH DESCRIPTION <s>] [WITH ATTENDEES <list>] [IN CALENDAR <cal>] [ALL DAY] [EVERY <rule>] [STARTING <date>] [UNTIL <date>] [REMIND <n>] [UNIT] [BEFORE] [THEN <action>]Create a calendar eventverb-reference
NEW FTP ACCESS [TO <path>] [LABEL <s>]px;">Connect to a POP3 mailbox NEW EVENT <expr> [ON <date>] [FROM <time>] [TO <time>] [AT LOCATION <s>] [TIMEZONE <s>] ...verb-reference
NEW GRAPHIC LAYERNEW GRAPHIC LAYER creates a layer with no canvas at all, so it can be created before the image it will eventually cover.image-processing
NEW HTMLBuild a native HTML document treeverb-reference
NEW MAP TRACK [NAMED <name>] [AT <lat,lon>] [ZOOM <n>] [STYLE <s>] [REFRESH <seconds>] [FOLLOW] [TRAIL]Open a Tracked Map NEW MAP TRACK NAMED "Delivery 4821" AT -33.9249,18.4241 ZOOM 14 REFRESH 2 FOLLOW TRAIL SET ?track AFTER EMIT ?track("url") (* https://ocalt.com/maps/t-… — give this to whoever is watching *) The URL is a normal link.verb-reference
NEW MATERIAL <expr>x 14px;">Build a native HTML document tree NEW MAP TRACK [NAMED <name>] [AT <lat,lon>] [ZOOM <n>] [STYLE <s>] [REFRESH <seconds>] ...verb-reference
NEW MATRIX [ROWS <n>] [COLS <n>]Used as: NEW MATRIX ROWS 3 COLS 3 SET ?anumerical-computing-controls
NEW MESH ANIMATION [ON <rig>]NEW MESH ARMATURE SET ?rig MESH ?rig BONE "neck" FROM 0,0,-0.3 TO 0,0,0 PARENT "root" SET ?neckBone AFTER MESH ?head SKIN TO ?rig WEIGHT PAINT AUTO SET ?head NEW MESH ANIMATION ON ?rig SET ?anim AFTER MESH ?anim KEYFRAME ?neckBone ROTATION 0,15,0 AT FRAME 0 AFTER MESH ?anim KEYFRAME ?neckBone ROTATION 0,-15,0 AT FRAME 24 AFTER MESH ?anim INTERPOLATE "bezier" BETWEEN FRAME 0 AND 24mesh-rigging-animation
NEW MESH ARMATURENEW MESH ARMATURE SET ?rig MESH ?rig BONE "neck" FROM 0,0,-0.3 TO 0,0,0 PARENT "root" SET ?neckBone AFTER MESH ?head SKIN TO ?rig WEIGHT PAINT AUTO SET ?head NEW MESH ANIMATION ON ?rig SET ?anim AFTER MESH ?anim KEYFRAME ?neckBone ROTATION 0,15,0 AT FRAME 0 AFTER MESH ?anim KEYFRAME ?neckBone ROTATION 0,-15,0 AT FRAME 24 AFTER MESH ?anim INTERPOLATE "bezier" BETWEEN FRAME 0 AND 24mesh-rigging-animation
NEW MESH PRIMITIVE <expr> [SIZE <n>]NEW MESH PRIMITIVE "sphere" SET ?head MESH ?head SUBDIVIDE LEVEL 2 SMOOTH SET ?head AFTER MESH ?head SCULPT BRUSH "inflate" AT 0,0.5,0 RADIUS 0.3 STRENGTH 0.6 AFTER MESH ?head SCULPT BRUSH "smooth" AT 0,0.3,0.2 RADIUS 0.2 STRENGTH 0.4mesh-rigging-animation
NEW MULTIARRAY [<expr>]Array-of-arrays for grid/nested dataverb-reference
NEW OBJECT [<expr>]Create an object and set keysverb-reference
NEW ONBROWSER AJAX [TO <SELF|path>] [NAMED <id>] [ON SUCCESS <code>] [ON ERROR <code>]Generate a credential-free AJAX function calling back into the current Site Mode scriptverb-reference
NEW OPERATION <expr>Define a reusable operationverb-reference
NEW PCB BOARD [SIZE <w,h>] [LAYERS <n>] [UNIT <u>]A Board, Routed and Manufactured NEW PCB BOARD SIZE 40,30 LAYERS 4 UNIT "mm" SET ?board (* Copper.verb-reference
NEW PERSISTENT OPERATION <expr>Register an operation across executions, and call it from a later scriptverb-reference
NEW PRESENTATION [INTO <path>]Build a PPTX presentationverb-reference
NEW QUERY [CASE <sensitive>] [SEPARATOR <s>] [AS]Define a custom multi-word commandcustom-query
NEW RAW IMAGE [WIDTH <n>] [HEIGHT <n>]Build an image pixel-by-pixel from scratchverb-reference
NEW RICHNEW RICH starts one from nothing; SAVE writes back to the file it was opened from, SAVE INTO writes a copy.verb-reference
NEW SCENE <expr> [UNITS <u>]NEW SCENE "name" UNITS "mm" SET ?scene AFTER SCENE ?scene PLACE ?object AT x,y,z ROTATION x,y,z SET ?instance3d-foundation
NEW SIGNAL [FROM ARRAY <a>] [SAMPLERATE <n>]NEW SIGNAL FROM ARRAY ?data SAMPLERATE 44100 SET ?sig AFTER SIGNAL ?sig FFT SET ?spectrum AFTER SIGNAL ?sig FILTER "lowpass" CUTOFF 5000 SET ?filterednumerical-computing-controls
NEW SIM MATERIAL <expr> [YOUNGS MODULUS <n>] [POISSON RATIO <n>] [DENSITY <n>] [YIELD STRENGTH <n>]simulation-fea-cfdverb-reference
NEW SIM STUDY <expr> [ON <femesh>] [DURATION <s>]Used as: NEW SIM STUDY "static_structural" ON ?femesh SET ?studyverb-reference
NEW SYNC CHANNELOpen a real-time WebSocket relay channelverb-reference
NEW TABLE <expr> [IN DB <name>] [COLUMNS ADD ...]Define a table — TYPE STRING/NUMBER/DATE, LENGTH, PRIMARY, AUTOINCREMENT, UNIQUE, REQUIRED, DEFAULT, AUTOTIMESTAMP, AUTOUPDATEDverb-reference
NEW TIME [FROM <string>]Used as: NEW TIMELINE SET ?timelinevideo-audio-processing
NEW TIMELINEMulti-track timeline editingverb-reference
NEW TRANSCODE STREAM [FROM <source>] [TO <path>] [FORMAT <fmt>] [DURATION <n>] [<unit>] [LOOP] [QUALITY <144p-1080p>] [TIME <hh:mm:ss>]Live/continuous media streamingverb-reference
NEW TURN [VALID <n>] [HOURS] [MINUTES] [SECONDS]Short-lived relay credentials — urls , username , credential , expiresverb-reference
NEW VIDEO BRIDGE [<expr>] [PEERS]Allocate a video signaling room for n peersaudio-video-bridge-webrtc
NEW WATCH [<check>] [EVERY <n>] [UNIT] [ONCHANGE [<trigger>]]React to database changesverb-reference
NOTIFICATION <expr> [WITH <title>] [ICON <url>] [IMAGE <url>] [LINK <url>]Notify the namespace owner — for watch, cron and schedule outcomesverb-reference
NOTIFY <expr> [TO <uid>] [WITH <title>] [ICON <url>] [IMAGE <url>] [LINK <url>] [ACTIONS <list>]Web push subscription status and consent flowverb-reference
NOTIFY CHECK PUSH STATUS [FOR <user>]Web push subscription status and consent flowverb-reference
NOTIFY CLEAR <expr>Used as: AFTER NOTIFY CLEAR ?idpush-notifications-webhooks
NOTIFY CLEAR ALL [FOR <uid>]Used as: AFTER NOTIFY CLEAR ALL FOR ?uidpush-notifications-webhooks
NOTIFY LIST [FOR <uid>]Notification history managementverb-reference
NOTIFY MARK READ <expr>Used as: AFTER NOTIFY MARK READ ?idpush-notifications-webhooks
NOTIFY REQUEST PUSH GRANT [FOR <user>]NOTIFY REQUEST PUSH GRANT FOR ?uid (* The browser prompts on your own origin, through the service worker already in the subdomain folder.push-notifications-webhooks
NUMBER <expr>Declare a number variableverb-reference
OCR <expr> [AS <lang>]Extract text from an image/PDF via OCRverb-reference
ONBROWSER JAVASCRIPT [<expr>] [EVENT] [ENTER <code>]Bind a page-level browser event by its real name, event object in scopeverb-reference
OUTBOUND DIRECTBack to leaving from Ocalt itself; ends a VPNvpn-proxy
OUTBOUND VIA PROXY <expr>Every outbound call from here on leaves through your own proxyvpn-proxy
OUTBOUND VIA VPN <expr>Every outbound call from here on leaves through your own WireGuard VPN; raises an error if the tunnel does not carry trafficvpn-proxy
PARSE <expr> [AS <format>]Parse a string in a given format into a usable OQL valueverb-reference
PARSE CSV <expr>PARSE CSV turns a comma-separated string into an array of objects, taking the first row as the column names.convert-cast
PARSE JSON <expr>PARSE JSON converts a raw JSON response string into an OcaltQL object.fetch-curl
PARSE OQLOBJECT <expr>PARSE OQLOBJECT reads back the notation OcaltQL itself emits, which is what makes a value written to a file readable again without a format in between.convert-cast
PCB <expr> [TRACE FROM <x,y>] [TO <x,y>] [VIA AT <x,y>] [PLACE <footprint>] [FROM LIBRARY <lib>] [AT <x,y>] [REFERENCE <ref>] [VALUE <v>] [ROTATION <deg>] [WIDTH <mm>] [DRILL <mm>] [LAYER <l>] [LIST] [EXPORT GERBER] [EXPORT BOM]Bring in a board design3d-import-export
PCB OPEN <expr>;">— PCB <expr> [TRACE FROM <x,y>] [TO <x,y>] [VIA AT <x,y>] [PLACE <footprint>] [FROM LIBRARY <lib>] ...verb-reference
PIXEL [X <n|pct|keyword>] [Y <n|pct|keyword>] [AS <color>]image-processingverb-reference
PRESENTATION <expr>Open an existing deck for editingverb-reference
PRIME OF <expr>PRIME OF 100 SET ?ans AFTER EMIT ?ansstrings-math
PUSH SEND <expr> [TO <uid>] [WITH <title>] [LINK <url>]push-notifications-webhooksverb-reference
PUSH STATUS [FOR <uid>]push-notifications-webhooksverb-reference
PUSH SUBSCRIBE <expr> [TO <uid>]Manual push subscription managementverb-reference
PUSH UNSUBSCRIBE [FOR <uid>]PUSH UNSUBSCRIBE ?user("id") SET ?n AFTER EMIT "Removed " & ?n & " subscriptions" (* Removes every device's subscription for this user, not just one *)push-notifications-webhooks
QR <expr>The QR verb generates a QR code image from a publicly accessible URL and returns its namespace path.file-manager
QUERYE7002 — catchablecustom-query
RAISE <expr> [TO <exponent>]Natural-language exponentiationverb-reference
RANDOMIZE [FROM RANGE <start>] [TO <end>] [FROM STRING <charset>] [LENGTH <n>] [PLACES <n>] [AS <integer|decimal>]Random date/time within a rangeverb-reference
RANDOMIZE DATE [FROM RANGE <start>] [TO <end>]RANDOMIZE DATE FROM RANGE "2020-01-01" TO "2025-12-31" SET ?randomdate AFTER EMIT ?randomdatedate-time
RANDOMIZE DATE AND TIME [FROM RANGE <start>] [TO <end>]Used as: RANDOMIZE DATE AND TIME FROM RANGE "2020-01-01 00:00:00" TO "2025-12-31 23:59:59" SET ?randomdtdate-time
RANDOMIZE FLOAT [FROM RANGE <start>] [TO <end>]Used as: AFTER RANDOMIZE FLOAT FROM RANGE 0 TO 1 SET ?weightcrypto-compute
RANDOMIZE INT [FROM RANGE <start>] [TO <end>]Used as: RANDOMIZE INT FROM RANGE 1 TO 6 SET ?diecrypto-compute
RANDOMIZE STRING [WITH LENGTH <n>] [POOL <characters>] [AS <charset>]Random string of a given charsetverb-reference
RANDOMIZE TIME [FROM RANGE <start>] [TO <end>]RANDOMIZE TIME FROM RANGE "09:00:00" TO "17:00:00" SET ?workhours AFTER EMIT ?workhoursdate-time
READ <expr>TER EMIT "report started" AFTER WAIT FOR ?job SET ?r AFTER EMIT ?r("stdout") READ and WRITE move bytes, exactly.verb-reference
RECALL <expr>Read a remembered value, or nullverb-reference
RECEIVE <expr> [TIMEOUT <n>] [SECONDS]RECEIVE blocks until a message arrives and captures it.verb-reference
REDIRECT <expr> [AS <code>]HTTP redirect, ends the scriptverb-reference
REMEMBER <expr> [AS <value>]Store a value in namespace-persistent key/value storage, no expiryverb-reference
REMIND <expr> [BEFORE <duration>]NEW EVENT "Team Standup" ON "2026-07-01" FROM "09:00" TO "09:30" TIMEZONE "Africa/Johannesburg" WITH DESCRIPTION "Daily team sync" WITH ATTENDEES "alice@co.com" AND "bob@co.com" AT LOCATION "Conference Room A" REMIND 15 MINUTES BEFORE SET ?ev AFTER EMIT ?ev("id")calendar
REMOVE ATTENDEE <expr> [FROM <event>]Used as: REMOVE ATTENDEE "bob@co.com"calendar
REMOVE EVENT <expr> [AND ALL OCCURRENCES]Delete an event or its whole seriesverb-reference
REMOVE KEY <expr> [FROM <object>]Remove by index, array repacks automaticallyverb-reference
REPLACE STRING [<expr>] [ALL <needle>] [ONCE <needle>] [FROM <index>] [TO <index>] [WITH <replacement>] [WHERE <subject>]Replace every occurrenceverb-reference
RETURN [<expr>]Return a value from an operation, ending it immediatelyverb-reference
REVERSE ARRAY <expr>Used as: AFTER REVERSE ARRAY ?arr SET ?revarrays-objects
REVERSE STRING <expr>Reverse a stringverb-reference
RICH <expr>Build a rich text document from scratch — see Documents & Rich Textverb-reference
ROUND OF <expr>ROUND OF 3.14159 SET ?ans AFTER EMIT ?ans (* Output: 3 *)strings-math
RUN <expr>Execute a defined operationverb-reference
RUN PERSISTENT <expr>NEW PERSISTENT OPERATION registers it once, across executions; RUN PERSISTENT calls it from any later script without redefining it.persistent-oql
SCENE <expr> [PLACE <object>] [AT <xyz>] [ROTATION <xyz>] [CAMERA AT <xyz>] [LOOKAT <xyz>] [FOV <deg>] [SAVE INTO <path>] [SAVE] [LIST] [SUN] [DIRECTION <xyz>] [INTENSITY <n>] [RENDER INTO <path>] [SAMPLES <n>] [WIDTH <px>] [HEIGHT <px>]SCENE ?scene SAVE INTO "path.oql" writes it as native OcaltQL source text — readable and hand-editable, the same canonical stored form described on Arrays & Objects .verb-reference
SCENE IMPORT <expr>SCENE ?scene SAVE INTO "path.oql" writes it as native OcaltQL source text — readable and hand-editable, the same canonical stored form described on Arrays & Objects .verb-reference
SCENE OPEN <expr>SCENE ?scene SAVE INTO "path.oql" writes it as native OcaltQL source text — readable and hand-editable, the same canonical stored form described on Arrays & Objects .verb-reference
SCHEDULE <expr> [AT <datetime>]Run an expression once, at a future momentverb-reference
SCHEDULE DELETE <expr>Used as: AFTER SCHEDULE DELETE ?jobschedule-cron
SCHEDULE DESCRIBE <expr>Used as: SCHEDULE DESCRIBE ?job SET ?infoschedule-cron
SCHEDULE LISTUsed as: SCHEDULE LIST SET ?jobsschedule-cron
SEARCH ARRAY <expr> [FOR <value>]Find index of a value, or nullverb-reference
SEARCH OBJECT <expr> [FOR <value>]Find the key holding a value, or nullverb-reference
SEARCH STRING <expr> [FOR <needle>]Find substring position, or nullverb-reference
SELECT ROWS [FROM DB <name>] [TABLE <name>] [WHERE ...] [ORDER BY <col>] [ASC] [DESC] [LIMIT <n>]curl -X POST https://ql.ocalt.com/api \ -d "identity=you@example.ocalt.com" \ -d "password=your_api_key" \ -d "execution_time=900" \ --data-urlencode 'q=SELECT ROWS FROM DB "warehouse" TABLE "movements" SET ?all AFTER COUNT ?all SET ?n AFTER EMIT ?n'control-config
SELECT STRING <expr> [FROM <index>] [TO <index>]Substring by position rangeverb-reference
SEND <expr>WebSocket Connection (* Open connection *) WEBSOCKET 'wss://example.ocalt.com/ws' SET ?ws (* Send message *) AFTER SEND ?ws 'hello' (* Receive mverb-reference
SET <expr> [AS <value>]Generic assignment formverb-reference
SET PERSISTENT <expr> [AS <value>]Cross-request value with no expiry, scoped to the session — PERSISTENT is written on every useverb-reference
SHARE <expr>directive-remote-computingverb-reference
SIDELOAD <expr>Execute a string of OQL as code, sharing scopeverb-reference
SIGN [WITH <key>]Signing key, keystore, certificate or provisioning profile. Omit for the Ocalt-managed signer.applicate
SIGNAL <expr> [FFT] [FILTER <kind>] [CUTOFF <hz>] [RMS] [PEAK] [SAVE INTO <path>]SIGNAL <expr> [FFT] [FILTER <kind>] [CUTOFF <hz>] [RMS] [PEAK] ...verb-reference
SIGNAL OPEN <expr>SIGNAL <expr> [FFT] [FILTER <kind>] [CUTOFF <hz>] [RMS] [PEAK] ...verb-reference
SIM <expr> [ASSIGN MATERIAL <m>] [FIXED SUPPORT ON FACE <f>] [FORCE <xyz>] [ON FACE <f>] [SOLVE] [SAFETY FACTOR] [EXTRACT STRESS <kind>] [EXTRACT DISPLACEMENT] [SAVE INTO <path>]Formats round-trip into the same types — an imported STEP file becomes an ordinary ?solid , ready for FILLET , SIM MESH , or TESSELLATE exactly like one built from scratch.verb-reference
SIM MESH <expr> [ELEMENT TYPE <t>] [SIZE <n>]Formats round-trip into the same types — an imported STEP file becomes an ordinary ?solid , ready for FILLET , SIM MESH , or TESSELLATE exactly like one built from scratch.verb-reference
SIM OPEN <expr>simulation-fea-cfdverb-reference
SIM RESULTS OPEN <expr>simulation-fea-cfdverb-reference
SLEEP <expr> [a unit — MILLISECONDS, SECONDS, MINUTES, or HOURS]Block execution for a fixed durationverb-reference
SLICE <expr> [FROM <index>] [TO <index>]Subset by index rangeverb-reference
SLIDE LAYOUT <expr>Slide layout, auto-advance, and transitionverb-reference
SORT <expr> [ASCENDING] [DESCENDING] [BY <key>]Used as: AFTER EDITOR ?doc SORT LINES SET ?doctext-code-editor
SPAWN <expr> [WITH <values>]Instantiate a classverb-reference
SPLIT <expr> [BY <separator>]Split into an array by separator (empty separator splits into characters)verb-reference
SQUARE ROOT OF <expr>Natural-language square rootverb-reference
SSH <expr> [AT <host>] [ON <port>] [PASSWORD <s>] [KEY <path>] [ENTER <cmd>] [UPLOAD <local>] [DOWNLOAD <remote>] [TO <dest>] [INTO <dest>]Single command via password auth. Default port 22.ssh-webassembly
START PERSISTStanding execution timeline, no time limit, until explicitly killedverb-reference
START SESSIONOpen/destroy server-side session stateverb-reference
STATUS [<expr>] [AS <code>]Set the HTTP response status code — does not stop executionverb-reference
STORAGE USAGEBytes used and the size of /root and /mountedverb-reference
STRING <expr>Declare a string variableverb-reference
STRING LOWERCASE <expr>Used as: AFTER STRING LOWERCASE ?upper SET ?backstrings-math
STRING UPPERCASE <expr>Case conversionverb-reference
SUBDOMAIN ADD <expr> [AT <path>]mysite.ocalt.sitesubdomains-site-mode-hosting
SUBDOMAIN LISTSUBDOMAIN SUBDOMAIN ADD registers a new subdomain under your namespace.verb-reference
SUBDOMAIN REMOVE <expr>SUBDOMAIN SUBDOMAIN ADD registers a new subdomain under your namespace.verb-reference
SUBDOMAIN SEARCH <expr>SUBDOMAIN SUBDOMAIN ADD registers a new subdomain under your namespace.verb-reference
SUBTRACT <expr> [FROM <number>]Natural-language subtractionverb-reference
SWITCH <expr>Multi-branch dispatch, BREAK per case, fallthrough if BREAK omittedverb-reference
SYNC CHANNEL <expr>Push data to the browser with no incoming requestverb-reference
TCP <expr> [PORT <n>]HTTP & Network OcaltQL provides full network access — HTTP requests via FETCH and CURL , IP aliasing and proxy routing, user agent control, real-time communication via WebSocket, and low-level TCP and UDP connections.http-network
TIMELINE <expr>Persist a timeline as native OcaltQL source text and reopen itverb-reference
TRANSCODE STREAM <expr> [STOP]Tunnel & Transcode NEW TRANSCODE STREAM continuously converts a live RTSP source — or any other continuous media source — into a browser-playable stream.tunnel
TRIM STRING <expr>Trim whitespaceverb-reference
UDP <expr> [PORT <n>] [SEND <data>]HTTP & Network OcaltQL provides full network access — HTTP requests via FETCH and CURL , IP aliasing and proxy routing, user agent control, real-time communication via WebSocket, and low-level TCP and UDP connections.http-network
UNSET <expr>Destroy a variable entirelyverb-reference
UNSET PERSISTENT <expr>It stays until it is removed with UNSET PERSISTENT ?pvar , which removes the persisted value only, never an ordinary ?pvar of the same name.persistent-oql
UPDATE <expr> [SET TITLE TO <s>] [SET LOCATION TO <s>] [SET DESCRIPTION TO <s>] [MOVE TO <date>] [FROM <time>] [TO <time>] [ADD ATTENDEE <s>] [REMOVE ATTENDEE <s>]Update matching rowsverb-reference
UPDATE ROW [FROM DB <name>] [TABLE <name>] [WHERE ...] [SET "col" AS <value>]Used as: UPDATE ROWS FROM DB "shopdb" TABLE "people"columns-rows
UPDATE ROWS [FROM DB <name>] [TABLE <name>] [WHERE ...] [SET "col" AS <value>]Update matching rowsverb-reference
USER DEVICE [LABEL <text>] [CAMERA] [MICROPHONE] [GEOLOCATION] [PUSH] [CLIPBOARD_READ] [CLIPBOARD_WRITE] [SCREENSHOT]Request every permission and device property at onceverb-reference
USER DEVICE PERMISSIONLESSSilently collect only free device properties, no popupverb-reference
USER DEVICE PERMISSIONS [LABEL <text>]Request all six status-based permissions together, no screenshotverb-reference
UX <expr> [ANIMATE] [ENTER <effect>] [EXIT <effect>] [EMPHASIS <effect>] [DELAY <s>] [DURATION <s>] [TRANSITION FROM <state>] [TO <state>] [STATES] [STATE <name>] [STYLE <movement>]Generate a component as a native HTML nodeoql-ux
UX ICON <expr> [SIZE <px>] [COLOR <c>] [STROKE <n>] [STYLE <s>]One icon as a pure SVG nodeoql-ux
UX ICONS <expr>Every icon name in a set, as an arrayoql-ux
UX MANIFESTEvery component generated in this execution, keyed by id, with its statesoql-ux
UX TYPE <expr> [WITH <data>] [STYLE <variant>] [THEME <t>] [FORMAT <w>] [BY <h>] [ICONS <set>] [COLOR <c>] [ID <id>]Generate a component as a native HTML nodeoql-ux
VALUES <expr>NEW OBJECT SET ?user AFTER SET ?user("name") AS "Alice" AFTER SET ?user("age") AS 32 AFTER VALUES ?user SET ?vals AFTER EMIT ?vals(0) AFTER EMIT ?vals(1) (* Output: Alice32 *)arrays-objects
VARIABLE <expr>Copy a variable — alternate formverb-reference
WAIT FOR <expr> [SECONDS]The hard execution ceiling — always specify a timeout on WAIT FOR to receive a catchable result insteaderror-codes
WATCH DELETE <expr>Used as: AFTER WATCH DELETE ?watchwatch-triggers
WATCH DESCRIBE <expr>WATCH LIST and WATCH DESCRIBE return done , status ( pending , ok or failed ) and, on DESCRIBE , last_error with the failure message verbatim.watch-triggers
WATCH LISTWATCH LIST and WATCH DESCRIBE return done , status ( pending , ok or failed ) and, on DESCRIBE , last_error with the failure message verbatim.watch-triggers
WEATHER <expr>Current weatherverb-reference
WEBASSEMBLY GRANT <expr> [AS <alias>]Expose an OQL variable to an embedded runtimeverb-reference
WEBASSEMBLY PROCESSESEvery process you have started, and whether it is still runningssh-webassembly
WEBASSEMBLY SERVE <expr> [TYPE <language>] [ENTER <path>] [ON <port>]Starts a process that keeps running. Returns name, pid, port and log pathssh-webassembly
WEBASSEMBLY STOP <expr>Stops one and forgets itssh-webassembly
WEBASSEMBLY TYPE <expr> [ENTER <code>]Run code in PHP, Python, Node, Ruby, Perl, Bash, Java, Rust or Go, or a compiled WASM moduleverb-reference
WEBSOCKET <expr>Raw WebSocket clientverb-reference
WHILE <expr>Loop while a condition holdsverb-reference