@xano/developer-mcp 1.0.26 → 1.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/xanoscript_docs/README.md +78 -64
- package/dist/xanoscript_docs/apis.md +81 -27
- package/dist/xanoscript_docs/branch.md +13 -13
- package/dist/xanoscript_docs/database.md +57 -17
- package/dist/xanoscript_docs/functions.md +43 -71
- package/dist/xanoscript_docs/performance.md +14 -23
- package/dist/xanoscript_docs/tables.md +47 -1
- package/dist/xanoscript_docs/tools.md +9 -7
- package/dist/xanoscript_docs/types.md +12 -10
- package/package.json +1 -1
- package/dist/api_docs/format.d.ts +0 -5
- package/dist/api_docs/format.js +0 -171
- package/dist/api_docs/index.d.ts +0 -52
- package/dist/api_docs/index.js +0 -111
- package/dist/api_docs/topics/agent.d.ts +0 -2
- package/dist/api_docs/topics/agent.js +0 -142
- package/dist/api_docs/topics/api.d.ts +0 -2
- package/dist/api_docs/topics/api.js +0 -176
- package/dist/api_docs/topics/apigroup.d.ts +0 -2
- package/dist/api_docs/topics/apigroup.js +0 -124
- package/dist/api_docs/topics/authentication.d.ts +0 -2
- package/dist/api_docs/topics/authentication.js +0 -61
- package/dist/api_docs/topics/branch.d.ts +0 -2
- package/dist/api_docs/topics/branch.js +0 -73
- package/dist/api_docs/topics/file.d.ts +0 -2
- package/dist/api_docs/topics/file.js +0 -70
- package/dist/api_docs/topics/function.d.ts +0 -2
- package/dist/api_docs/topics/function.js +0 -164
- package/dist/api_docs/topics/history.d.ts +0 -2
- package/dist/api_docs/topics/history.js +0 -149
- package/dist/api_docs/topics/mcp_server.d.ts +0 -2
- package/dist/api_docs/topics/mcp_server.js +0 -139
- package/dist/api_docs/topics/middleware.d.ts +0 -2
- package/dist/api_docs/topics/middleware.js +0 -156
- package/dist/api_docs/topics/realtime.d.ts +0 -2
- package/dist/api_docs/topics/realtime.js +0 -112
- package/dist/api_docs/topics/start.d.ts +0 -2
- package/dist/api_docs/topics/start.js +0 -107
- package/dist/api_docs/topics/table.d.ts +0 -2
- package/dist/api_docs/topics/table.js +0 -195
- package/dist/api_docs/topics/task.d.ts +0 -2
- package/dist/api_docs/topics/task.js +0 -165
- package/dist/api_docs/topics/tool.d.ts +0 -2
- package/dist/api_docs/topics/tool.js +0 -150
- package/dist/api_docs/topics/workflows.d.ts +0 -2
- package/dist/api_docs/topics/workflows.js +0 -131
- package/dist/api_docs/topics/workspace.d.ts +0 -2
- package/dist/api_docs/topics/workspace.js +0 -153
- package/dist/api_docs/types.d.ts +0 -79
- package/dist/api_docs/types.js +0 -4
- package/dist/templates/init-workspace.d.ts +0 -10
- package/dist/templates/init-workspace.js +0 -278
- package/dist/templates/xanoscript-index.d.ts +0 -11
- package/dist/templates/xanoscript-index.js +0 -72
- package/dist/xanoscript_docs/ephemeral.md +0 -330
- package/dist/xanoscript_docs_auto/README.md +0 -119
- package/dist/xanoscript_docs_auto/agents.md +0 -446
- package/dist/xanoscript_docs_auto/apis.md +0 -517
- package/dist/xanoscript_docs_auto/control-flow.md +0 -543
- package/dist/xanoscript_docs_auto/database.md +0 -551
- package/dist/xanoscript_docs_auto/debugging.md +0 -527
- package/dist/xanoscript_docs_auto/filters.md +0 -464
- package/dist/xanoscript_docs_auto/functions.md +0 -431
- package/dist/xanoscript_docs_auto/integrations.md +0 -657
- package/dist/xanoscript_docs_auto/mcp-servers.md +0 -408
- package/dist/xanoscript_docs_auto/operators.md +0 -368
- package/dist/xanoscript_docs_auto/syntax.md +0 -287
- package/dist/xanoscript_docs_auto/tables.md +0 -447
- package/dist/xanoscript_docs_auto/tasks.md +0 -479
- package/dist/xanoscript_docs_auto/testing.md +0 -574
- package/dist/xanoscript_docs_auto/tools.md +0 -485
- package/dist/xanoscript_docs_auto/triggers.md +0 -595
- package/dist/xanoscript_docs_auto/types.md +0 -323
- package/dist/xanoscript_docs_auto/variables.md +0 -462
- package/dist/xanoscript_docs_auto/version.json +0 -5
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
applyTo: "**/*.xs"
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Variables
|
|
6
|
-
|
|
7
|
-
System variables, built-in variables, and variable operations in XanoScript.
|
|
8
|
-
|
|
9
|
-
## Quick Reference
|
|
10
|
-
|
|
11
|
-
| Variable | Description |
|
|
12
|
-
|----------|-------------|
|
|
13
|
-
| `$input.*` | Input parameters |
|
|
14
|
-
| `$auth.*` | Authenticated user data |
|
|
15
|
-
| `$env.*` | Environment variables |
|
|
16
|
-
| `$db.*` | Database field references |
|
|
17
|
-
| `$this` | Current item in loops |
|
|
18
|
-
| `$error` | Error info in catch blocks |
|
|
19
|
-
| `now` | Current timestamp |
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Variable Definition
|
|
24
|
-
|
|
25
|
-
### Create Variable
|
|
26
|
-
|
|
27
|
-
```xs
|
|
28
|
-
var $name {
|
|
29
|
-
value = "initial value"
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
var $count {
|
|
33
|
-
value = 0
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
var $items {
|
|
37
|
-
value = []
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
var $config {
|
|
41
|
-
value = {
|
|
42
|
-
enabled: true,
|
|
43
|
-
limit: 100
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Update Variable
|
|
49
|
-
|
|
50
|
-
```xs
|
|
51
|
-
var.update $count {
|
|
52
|
-
value = $count + 1
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
var.update $items {
|
|
56
|
-
value = $items|push:$new_item
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
var.update $config {
|
|
60
|
-
value = $config|set:"limit":200
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Input Variables
|
|
67
|
-
|
|
68
|
-
Access parameters passed to functions, queries, and tasks:
|
|
69
|
-
|
|
70
|
-
```xs
|
|
71
|
-
// In function definition
|
|
72
|
-
function "example" {
|
|
73
|
-
input {
|
|
74
|
-
text name
|
|
75
|
-
int age
|
|
76
|
-
json options
|
|
77
|
-
}
|
|
78
|
-
stack {
|
|
79
|
-
var $greeting {
|
|
80
|
-
value = "Hello, " ~ $input.name
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
var $birth_year {
|
|
84
|
-
value = now|timestamp_year - $input.age
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
var $limit {
|
|
88
|
-
value = $input.options.limit ?? 10
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Accessing Nested Input
|
|
95
|
-
|
|
96
|
-
```xs
|
|
97
|
-
$input.user.name
|
|
98
|
-
$input.settings.theme
|
|
99
|
-
$input.items|first
|
|
100
|
-
$input.data|get:"key"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Auth Variables
|
|
106
|
-
|
|
107
|
-
Access authenticated user data:
|
|
108
|
-
|
|
109
|
-
```xs
|
|
110
|
-
$auth.id // User ID
|
|
111
|
-
$auth.role // User role
|
|
112
|
-
$auth.email // User email
|
|
113
|
-
$auth.name // User name
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Check Authentication
|
|
117
|
-
|
|
118
|
-
```xs
|
|
119
|
-
conditional {
|
|
120
|
-
if ($auth != null) {
|
|
121
|
-
// User is authenticated
|
|
122
|
-
var $user_id { value = $auth.id }
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// Not authenticated
|
|
126
|
-
throw {
|
|
127
|
-
name = "Unauthorized"
|
|
128
|
-
value = "Please log in"
|
|
129
|
-
code = 401
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### Role-Based Access
|
|
136
|
-
|
|
137
|
-
```xs
|
|
138
|
-
precondition ($auth.role == "admin") {
|
|
139
|
-
error_type = "accessdenied"
|
|
140
|
-
error = "Admin access required"
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Environment Variables
|
|
147
|
-
|
|
148
|
-
Access environment configuration:
|
|
149
|
-
|
|
150
|
-
```xs
|
|
151
|
-
$env.DATABASE_URL
|
|
152
|
-
$env.API_KEY
|
|
153
|
-
$env.MY_CUSTOM_VAR
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### System Environment Variables
|
|
157
|
-
|
|
158
|
-
| Variable | Description |
|
|
159
|
-
|----------|-------------|
|
|
160
|
-
| `$env.$remote_ip` | Client IP address |
|
|
161
|
-
| `$env.$remote_port` | Client port |
|
|
162
|
-
| `$env.$remote_host` | Remote hostname |
|
|
163
|
-
| `$env.$request_method` | HTTP method |
|
|
164
|
-
| `$env.$request_uri` | Request URI |
|
|
165
|
-
| `$env.$request_querystring` | Query string |
|
|
166
|
-
| `$env.$http_headers` | Request headers |
|
|
167
|
-
| `$env.$request_auth_token` | Auth token |
|
|
168
|
-
| `$env.$datasource` | Current datasource |
|
|
169
|
-
| `$env.$branch` | Current branch |
|
|
170
|
-
|
|
171
|
-
### Using Environment Variables
|
|
172
|
-
|
|
173
|
-
```xs
|
|
174
|
-
// API configuration
|
|
175
|
-
api.request {
|
|
176
|
-
url = $env.EXTERNAL_API_URL
|
|
177
|
-
headers = {
|
|
178
|
-
"Authorization": "Bearer " ~ $env.EXTERNAL_API_KEY
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Feature flags
|
|
183
|
-
conditional {
|
|
184
|
-
if ($env.FEATURE_NEW_UI == "true") {
|
|
185
|
-
// New UI logic
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## Database Variables
|
|
193
|
-
|
|
194
|
-
Reference database fields in queries:
|
|
195
|
-
|
|
196
|
-
```xs
|
|
197
|
-
db.query user {
|
|
198
|
-
where = $db.user.active == true
|
|
199
|
-
&& $db.user.email == $input.email
|
|
200
|
-
} as $users
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Table References
|
|
204
|
-
|
|
205
|
-
```xs
|
|
206
|
-
$db.user.id
|
|
207
|
-
$db.user.name
|
|
208
|
-
$db.product.price
|
|
209
|
-
$db.order.created_at
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
### With Filters
|
|
213
|
-
|
|
214
|
-
```xs
|
|
215
|
-
$db.user.name|to_lower
|
|
216
|
-
$db.product.price|round:2
|
|
217
|
-
$db.order.created_at|timestamp_year
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Loop Variables
|
|
223
|
-
|
|
224
|
-
### $this
|
|
225
|
-
|
|
226
|
-
Current item in loops:
|
|
227
|
-
|
|
228
|
-
```xs
|
|
229
|
-
foreach ($items) {
|
|
230
|
-
each as $item {
|
|
231
|
-
debug.log { value = $item }
|
|
232
|
-
// Also accessible as $this
|
|
233
|
-
debug.log { value = $this }
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### With Index
|
|
239
|
-
|
|
240
|
-
```xs
|
|
241
|
-
foreach ($items) {
|
|
242
|
-
each as $item {
|
|
243
|
-
var $position { value = $this.index }
|
|
244
|
-
debug.log {
|
|
245
|
-
value = "Item " ~ $position ~ ": " ~ $item.name
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### In Map/Filter
|
|
252
|
-
|
|
253
|
-
```xs
|
|
254
|
-
// $$ represents current item in map/filter
|
|
255
|
-
$items|map:$$.name
|
|
256
|
-
$items|filter:$$.active == true
|
|
257
|
-
$items|find:$$.id == $target_id
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
## Error Variables
|
|
263
|
-
|
|
264
|
-
In catch blocks:
|
|
265
|
-
|
|
266
|
-
```xs
|
|
267
|
-
try_catch {
|
|
268
|
-
try {
|
|
269
|
-
// Risky operation
|
|
270
|
-
}
|
|
271
|
-
catch {
|
|
272
|
-
var $error_name { value = $error.name }
|
|
273
|
-
var $error_message { value = $error.message }
|
|
274
|
-
var $error_code { value = $error.code }
|
|
275
|
-
|
|
276
|
-
debug.log {
|
|
277
|
-
value = "Error: " ~ $error.message
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## Trigger Variables
|
|
286
|
-
|
|
287
|
-
In trigger handlers:
|
|
288
|
-
|
|
289
|
-
```xs
|
|
290
|
-
table_trigger "example" {
|
|
291
|
-
table = user
|
|
292
|
-
event = update
|
|
293
|
-
|
|
294
|
-
stack {
|
|
295
|
-
// Old record data
|
|
296
|
-
var $old_email { value = $trigger.old.email }
|
|
297
|
-
|
|
298
|
-
// New record data
|
|
299
|
-
var $new_email { value = $trigger.new.email }
|
|
300
|
-
|
|
301
|
-
// Trigger metadata
|
|
302
|
-
var $event_type { value = $trigger.event }
|
|
303
|
-
var $table_name { value = $trigger.table }
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## Special Values
|
|
311
|
-
|
|
312
|
-
### now
|
|
313
|
-
|
|
314
|
-
Current timestamp:
|
|
315
|
-
|
|
316
|
-
```xs
|
|
317
|
-
var $current_time { value = now }
|
|
318
|
-
var $today { value = now|format_timestamp:"Y-m-d":"UTC" }
|
|
319
|
-
var $yesterday { value = now|transform_timestamp:"-1 day" }
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### null
|
|
323
|
-
|
|
324
|
-
Null value:
|
|
325
|
-
|
|
326
|
-
```xs
|
|
327
|
-
var $empty { value = null }
|
|
328
|
-
|
|
329
|
-
conditional {
|
|
330
|
-
if ($value == null) {
|
|
331
|
-
// Handle null
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
### true/false
|
|
337
|
-
|
|
338
|
-
Boolean values:
|
|
339
|
-
|
|
340
|
-
```xs
|
|
341
|
-
var $enabled { value = true }
|
|
342
|
-
var $disabled { value = false }
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
## Variable Scope
|
|
348
|
-
|
|
349
|
-
### Stack Scope
|
|
350
|
-
|
|
351
|
-
Variables defined in stack are available within that stack:
|
|
352
|
-
|
|
353
|
-
```xs
|
|
354
|
-
stack {
|
|
355
|
-
var $local { value = "visible here" }
|
|
356
|
-
|
|
357
|
-
conditional {
|
|
358
|
-
if (true) {
|
|
359
|
-
// $local is accessible here
|
|
360
|
-
debug.log { value = $local }
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
// $local not accessible outside stack
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
### Response Scope
|
|
368
|
-
|
|
369
|
-
Variables can be returned via response:
|
|
370
|
-
|
|
371
|
-
```xs
|
|
372
|
-
function "example" {
|
|
373
|
-
stack {
|
|
374
|
-
var $result { value = "computed value" }
|
|
375
|
-
}
|
|
376
|
-
response = $result
|
|
377
|
-
}
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
## Common Patterns
|
|
383
|
-
|
|
384
|
-
### Default Values
|
|
385
|
-
|
|
386
|
-
```xs
|
|
387
|
-
var $limit {
|
|
388
|
-
value = $input.limit ?? 10
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
var $name {
|
|
392
|
-
value = $input.name|first_notempty:"Anonymous"
|
|
393
|
-
}
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
### Accumulating Values
|
|
397
|
-
|
|
398
|
-
```xs
|
|
399
|
-
var $total { value = 0 }
|
|
400
|
-
|
|
401
|
-
foreach ($items) {
|
|
402
|
-
each as $item {
|
|
403
|
-
var.update $total {
|
|
404
|
-
value = $total + $item.price
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
### Building Objects
|
|
411
|
-
|
|
412
|
-
```xs
|
|
413
|
-
var $result { value = {} }
|
|
414
|
-
|
|
415
|
-
var.update $result {
|
|
416
|
-
value = $result|set:"name":$input.name
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
var.update $result {
|
|
420
|
-
value = $result|set:"timestamp":now
|
|
421
|
-
}
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
### Building Arrays
|
|
425
|
-
|
|
426
|
-
```xs
|
|
427
|
-
var $processed { value = [] }
|
|
428
|
-
|
|
429
|
-
foreach ($items) {
|
|
430
|
-
each as $item {
|
|
431
|
-
function.run "process" {
|
|
432
|
-
input = {item: $item}
|
|
433
|
-
} as $processed_item
|
|
434
|
-
|
|
435
|
-
var.update $processed {
|
|
436
|
-
value = $processed|push:$processed_item
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
---
|
|
443
|
-
|
|
444
|
-
## Environment Variable Access
|
|
445
|
-
|
|
446
|
-
### Get All Environment Variables
|
|
447
|
-
|
|
448
|
-
```xs
|
|
449
|
-
util.get_env {} as $all_env
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
### Get All Input Data
|
|
453
|
-
|
|
454
|
-
```xs
|
|
455
|
-
util.get_all_input {} as $all_input
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
### Get All Variables
|
|
459
|
-
|
|
460
|
-
```xs
|
|
461
|
-
util.get_vars {} as $all_vars
|
|
462
|
-
```
|