Coming Soon — This feature is currently in development and not yet available. This guide is a preview of what's coming.
AirScript is a limited-feature version of Python — it has the same syntax and semantics, but runs in a secure sandbox with a restricted set of built-ins and no access to the broader Python ecosystem. This guide explains exactly what is available.
Air Object Logging
Your function receives an air object as its only argument. For full method details, see AirScript Functions. The logging methods are:
| Method |
Description |
air.log(message) |
Write an informational message to the server logs and the admin trace log. Use for normal debugging or progress messages. |
air.log_error(message) |
Write an error-level message to the server logs and the admin trace log. Use for failed API calls, missing required configuration, failed email sends, or other conditions that need operational attention. Error logs may trigger alerts. |
air.log("Starting CRM lookup")
resp = await air.http_request("POST", api_url, data=payload)
if not resp or not resp["ok"]:
air.log_error(f"CRM lookup failed: {resp}")
air.reply_to_llm("The CRM lookup failed. Please tell the user we could not complete that action.")
return
Modules
| Module |
Description |
json |
Parse and generate JSON. Use json.loads(text) and json.dumps(obj). |
re |
Regular expressions. Use re.search(), re.findall(), re.sub() to match and extract patterns from text. |
math |
Mathematical functions: math.floor(), math.ceil(), math.sqrt(), math.isnan(), etc. |
decimal |
Precise decimal arithmetic. Use decimal.Decimal("19.99") for currency and financial values to avoid floating-point errors. |
time |
Low-level time functions. Use time.time() for a Unix timestamp, time.sleep(n) for delays. |
datetime |
Date and time objects with arithmetic and formatting. Use datetime.datetime.now(), datetime.date.today(), datetime.timedelta(days=7), etc. Prefer this over time for working with dates. |
zoneinfo |
Timezone support for datetime objects. Use zoneinfo.ZoneInfo("Australia/Sydney") to create timezone-aware datetimes. |
calendar |
Calendar utilities. Use calendar.monthrange(year, month) to get the number of days in a month, or calendar.isleap(year) to check for leap years. |
collections |
Useful data structures: collections.Counter for counting items, collections.defaultdict for dicts with defaults. |
itertools |
Iteration utilities: itertools.chain(), itertools.groupby(), itertools.islice(), etc. |
functools |
Functional utilities: functools.reduce() to accumulate a list into a single value. |
base64 |
Base64 encoding/decoding. Use base64.b64encode(bytes) and base64.b64decode(str). Often needed for API authentication headers. |
hashlib |
Cryptographic hashing: hashlib.sha256(data).hexdigest(). Use for generating checksums or API signatures. |
hmac |
HMAC message authentication. Use hmac.new(key, message, hashlib.sha256).hexdigest() for signed API requests. |
string |
String constants: string.ascii_letters, string.digits, string.punctuation. Useful for validation and generating identifiers. |
textwrap |
Text wrapping and truncation. Use textwrap.shorten(text, width=200) to trim long strings before sending to the LLM. |
unicodedata |
Unicode character database. Use unicodedata.normalize("NFC", text) to normalise international text input. |
urllib.parse |
URL encoding utilities. Use urllib.parse.urlencode(params), urllib.parse.quote(string), urllib.parse.urlparse(url). Note: only urllib.parse is available — network access via urllib.request is not permitted. |
Types & Constructors
| Function |
Description |
str, int, float, bool |
Convert values to string, integer, float, or boolean. |
list, dict, set, tuple |
Create or convert to these collection types. |
Collections & Iteration
| Function |
Description |
len(x) |
Return the length of a sequence or collection. |
range(...) |
Generate a sequence of numbers. |
enumerate(iterable) |
Iterate with index and value. |
zip(...) |
Combine multiple iterables element-wise. |
map(fn, iterable) |
Apply a function to each element. |
filter(fn, iterable) |
Filter elements by a predicate. |
sorted(iterable) |
Return a sorted list. |
reversed(sequence) |
Iterate in reverse order. |
Math & Comparison
| Function |
Description |
min(...), max(...) |
Return the smallest or largest value. |
sum(iterable) |
Sum all values in an iterable. |
abs(x) |
Return the absolute value. |
round(x, n) |
Round to n decimal places. |
Introspection
| Function |
Description |
isinstance(obj, type) |
Check if an object is an instance of a type. |
type(obj) |
Get the type of an object. |
hasattr(obj, name) |
Check if an object has an attribute. |
getattr(obj, name) |
Get an attribute from an object. |
setattr(obj, name, value) |
Set an attribute on an object. |
Exception Types
These exception types are available for use in try/except blocks:
| Exception |
Description |
Exception |
Base exception class. |
ValueError |
Raised when a value is invalid. |
TypeError |
Raised when a type is incorrect. |
KeyError |
Raised when a dictionary key is not found. |
IndexError |
Raised when a sequence index is out of range. |
AttributeError |
Raised when an attribute is not found. |
Constants
| Name |
Description |
True, False, None |
Boolean and null constants. |
Not Available
For security, these are not available: import, open, exec, eval, compile, globals, locals, __import__, and file/network access outside of air.http_get(), air.http_post(), and air.http_request().
If your use case requires additional built-ins or modules, please contact the Airgentic team — we may be able to add them.
← Back to Functions overview | AirScript Functions