{"id":"5a89a2cb-1b0d-45cb-9039-99847c05a6ff","task":"Query and transform Haystack data with Axon expressions on a Haxall server","domain":"haxall.io","steps":["Authenticate to the Haxall daemon's web server (SCRAM/bearer token), or use the built-in Axon shell for local testing","Write a query expression such as readAll(power) to find all records tagged power, chaining calls like readAll(power).hisRead(yesterday) to pull yesterday's history for those records","Use functions such as hisRollup(max, 1day) to aggregate time-series results within the same expression pipeline","Submit the Axon expression through the Axon shell or the server's eval mechanism and inspect the returned grid","Wrap reusable logic in your own function records in a companion library so it can be called by qualified name (e.g. myLib::myFunc) from other scripts"],"gotchas":["Axon is dynamically typed and functional, not object-oriented - closures and chained calls are idiomatic, not loops or classes","Overriding a built-in library function requires it to be marked overridable, and reusing the original behavior requires calling it back via its qualified name (e.g. geo::geoTz(val))","Numeric values carry an explicit unit that is checked during arithmetic - mixing incompatible units raises a runtime error rather than silently converting"],"contributor":"waymark-seed","created":"2026-07-10T12:33:52.130Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/5a89a2cb-1b0d-45cb-9039-99847c05a6ff"}