@almadar/core 10.65.0 → 10.67.0

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.
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-08-16T04:55:02.135Z",
3
+ "exportedAt": "2026-08-23T09:11:28.111Z",
4
4
  "services": {
5
5
  "llm": {
6
6
  "name": "llm",
7
7
  "description": "LLM service — text generation, classification, extraction, summarization",
8
8
  "category": "ai",
9
9
  "package": "@almadar/llm",
10
+ "backend": "production",
10
11
  "actions": [
11
12
  {
12
13
  "name": "generate",
@@ -138,6 +139,27 @@
138
139
  "summary": "string",
139
140
  "keyPoints": "string[]"
140
141
  }
142
+ },
143
+ {
144
+ "name": "embed",
145
+ "description": "Generate embeddings for an array of texts.",
146
+ "params": [
147
+ {
148
+ "name": "texts",
149
+ "type": "string[]",
150
+ "required": true,
151
+ "description": ""
152
+ },
153
+ {
154
+ "name": "model",
155
+ "type": "string",
156
+ "required": false,
157
+ "description": ""
158
+ }
159
+ ],
160
+ "responseShape": {
161
+ "embeddings": "number[][]"
162
+ }
141
163
  }
142
164
  ],
143
165
  "credentials": [
@@ -151,13 +173,15 @@
151
173
  "required": false,
152
174
  "description": "OpenAI API key (use this OR ANTHROPIC_API_KEY)"
153
175
  }
154
- ]
176
+ ],
177
+ "hooks": []
155
178
  },
156
179
  "ml": {
157
180
  "name": "ml",
158
181
  "description": "ML service — model inference on a trained or off-the-shelf model",
159
182
  "category": "ai",
160
183
  "package": "@almadar/llm",
184
+ "backend": "production",
161
185
  "actions": [
162
186
  {
163
187
  "name": "infer",
@@ -194,13 +218,15 @@
194
218
  "required": true,
195
219
  "description": "Kebab-case trait name the serving orbital exposes its /events route under"
196
220
  }
197
- ]
221
+ ],
222
+ "hooks": []
198
223
  },
199
224
  "data": {
200
225
  "name": "data",
201
226
  "description": "Data service — CRUD operations on entities",
202
227
  "category": "infrastructure",
203
228
  "package": "@almadar/server",
229
+ "backend": "production",
204
230
  "actions": [
205
231
  {
206
232
  "name": "list",
@@ -308,13 +334,15 @@
308
334
  }
309
335
  }
310
336
  ],
311
- "credentials": []
337
+ "credentials": [],
338
+ "hooks": []
312
339
  },
313
340
  "eventbus": {
314
341
  "name": "eventbus",
315
342
  "description": "Event bus — cross-trait pub/sub messaging",
316
343
  "category": "infrastructure",
317
344
  "package": "@almadar/server",
345
+ "backend": "production",
318
346
  "actions": [
319
347
  {
320
348
  "name": "emit",
@@ -346,13 +374,15 @@
346
374
  }
347
375
  }
348
376
  ],
349
- "credentials": []
377
+ "credentials": [],
378
+ "hooks": []
350
379
  },
351
380
  "discovery": {
352
381
  "name": "discovery",
353
382
  "description": "Service discovery — register and find services",
354
383
  "category": "infrastructure",
355
384
  "package": "@almadar/server",
385
+ "backend": "production",
356
386
  "actions": [
357
387
  {
358
388
  "name": "register",
@@ -430,13 +460,15 @@
430
460
  }
431
461
  }
432
462
  ],
433
- "credentials": []
463
+ "credentials": [],
464
+ "hooks": []
434
465
  },
435
466
  "migration": {
436
467
  "name": "migration",
437
468
  "description": "Migration service — import external data (notes, docs, references) into the system",
438
469
  "category": "infrastructure",
439
470
  "package": "@almadar-io/migration",
471
+ "backend": "production",
440
472
  "actions": [
441
473
  {
442
474
  "name": "listDocuments",
@@ -521,13 +553,15 @@
521
553
  }
522
554
  }
523
555
  ],
524
- "credentials": []
556
+ "credentials": [],
557
+ "hooks": []
525
558
  },
526
559
  "skills": {
527
560
  "name": "skills",
528
561
  "description": "Skills service — AI-powered schema generation",
529
562
  "category": "ai",
530
563
  "package": "@almadar/skills",
564
+ "backend": "production",
531
565
  "actions": [
532
566
  {
533
567
  "name": "generateOrbitals",
@@ -595,13 +629,15 @@
595
629
  }
596
630
  }
597
631
  ],
598
- "credentials": []
632
+ "credentials": [],
633
+ "hooks": []
599
634
  },
600
635
  "github": {
601
636
  "name": "github",
602
637
  "description": "GitHub integration — repos, issues, PRs",
603
638
  "category": "devtools",
604
639
  "package": "@almadar/integrations",
640
+ "backend": "production",
605
641
  "actions": [
606
642
  {
607
643
  "name": "cloneRepo",
@@ -710,16 +746,22 @@
710
746
  "description": ""
711
747
  },
712
748
  {
713
- "name": "head",
749
+ "name": "baseBranch",
714
750
  "type": "string",
715
751
  "required": true,
716
752
  "description": ""
717
753
  },
718
754
  {
719
- "name": "base",
755
+ "name": "headBranch",
720
756
  "type": "string",
721
757
  "required": true,
722
758
  "description": ""
759
+ },
760
+ {
761
+ "name": "draft",
762
+ "type": "boolean",
763
+ "required": false,
764
+ "description": ""
723
765
  }
724
766
  ],
725
767
  "responseShape": {
@@ -921,13 +963,15 @@
921
963
  "required": false,
922
964
  "description": "Default repository name"
923
965
  }
924
- ]
966
+ ],
967
+ "hooks": []
925
968
  },
926
969
  "stripe": {
927
970
  "name": "stripe",
928
971
  "description": "Stripe integration — payments, subscriptions, invoices",
929
972
  "category": "payment",
930
973
  "package": "@almadar/integrations",
974
+ "backend": "production",
931
975
  "actions": [
932
976
  {
933
977
  "name": "createPaymentIntent",
@@ -1011,13 +1055,15 @@
1011
1055
  "required": false,
1012
1056
  "description": "Webhook endpoint signing secret"
1013
1057
  }
1014
- ]
1058
+ ],
1059
+ "hooks": []
1015
1060
  },
1016
1061
  "llm-integration": {
1017
1062
  "name": "llm-integration",
1018
1063
  "description": "LLM integration — generate, embed, classify via external providers",
1019
1064
  "category": "ai",
1020
1065
  "package": "@almadar/integrations",
1066
+ "backend": "production",
1021
1067
  "actions": [
1022
1068
  {
1023
1069
  "name": "generate",
@@ -1180,13 +1226,15 @@
1180
1226
  "required": false,
1181
1227
  "description": "OpenAI API key"
1182
1228
  }
1183
- ]
1229
+ ],
1230
+ "hooks": []
1184
1231
  },
1185
1232
  "youtube": {
1186
1233
  "name": "youtube",
1187
1234
  "description": "YouTube Data API — search videos, get video/channel details",
1188
1235
  "category": "media",
1189
1236
  "package": "@almadar/integrations",
1237
+ "backend": "production",
1190
1238
  "actions": [
1191
1239
  {
1192
1240
  "name": "search",
@@ -1255,13 +1303,15 @@
1255
1303
  "required": true,
1256
1304
  "description": "YouTube Data API key"
1257
1305
  }
1258
- ]
1306
+ ],
1307
+ "hooks": []
1259
1308
  },
1260
1309
  "twilio": {
1261
1310
  "name": "twilio",
1262
1311
  "description": "Twilio — SMS, voice calls, verification",
1263
1312
  "category": "messaging",
1264
1313
  "package": "@almadar/integrations",
1314
+ "backend": "production",
1265
1315
  "actions": [
1266
1316
  {
1267
1317
  "name": "sendSMS",
@@ -1278,6 +1328,12 @@
1278
1328
  "type": "string",
1279
1329
  "required": true,
1280
1330
  "description": ""
1331
+ },
1332
+ {
1333
+ "name": "from",
1334
+ "type": "string",
1335
+ "required": false,
1336
+ "description": ""
1281
1337
  }
1282
1338
  ],
1283
1339
  "responseShape": {
@@ -1324,13 +1380,15 @@
1324
1380
  "required": false,
1325
1381
  "description": "Default sender phone number"
1326
1382
  }
1327
- ]
1383
+ ],
1384
+ "hooks": []
1328
1385
  },
1329
1386
  "email": {
1330
1387
  "name": "email",
1331
1388
  "description": "Email service — send, send with template",
1332
1389
  "category": "messaging",
1333
1390
  "package": "@almadar/integrations",
1391
+ "backend": "production",
1334
1392
  "actions": [
1335
1393
  {
1336
1394
  "name": "send",
@@ -1359,6 +1417,24 @@
1359
1417
  "type": "string",
1360
1418
  "required": false,
1361
1419
  "description": ""
1420
+ },
1421
+ {
1422
+ "name": "htmlBody",
1423
+ "type": "string",
1424
+ "required": false,
1425
+ "description": "HTML content; when present `body` becomes the plain-text alternative."
1426
+ },
1427
+ {
1428
+ "name": "replyTo",
1429
+ "type": "string",
1430
+ "required": false,
1431
+ "description": ""
1432
+ },
1433
+ {
1434
+ "name": "templateId",
1435
+ "type": "string",
1436
+ "required": false,
1437
+ "description": "Provider template reference (SendGrid dynamic templates; Resend rejects it loudly)."
1362
1438
  }
1363
1439
  ],
1364
1440
  "responseShape": {
@@ -1383,13 +1459,15 @@
1383
1459
  "required": false,
1384
1460
  "description": "Default sender email address"
1385
1461
  }
1386
- ]
1462
+ ],
1463
+ "hooks": []
1387
1464
  },
1388
1465
  "webhook": {
1389
1466
  "name": "webhook",
1390
1467
  "description": "Outbound webhook — signed HTTP POST notifications to external endpoints",
1391
1468
  "category": "messaging",
1392
1469
  "package": "@almadar/integrations",
1470
+ "backend": "production",
1393
1471
  "actions": [
1394
1472
  {
1395
1473
  "name": "send",
@@ -1438,207 +1516,1051 @@
1438
1516
  "required": false,
1439
1517
  "description": "Per-request timeout (ms, default 10000)"
1440
1518
  }
1441
- ]
1519
+ ],
1520
+ "hooks": []
1442
1521
  },
1443
- "docker": {
1444
- "name": "docker",
1445
- "description": "Dockercontainer and image management",
1446
- "category": "devtools",
1522
+ "push": {
1523
+ "name": "push",
1524
+ "description": "Web Push VAPID-signed browser push notifications",
1525
+ "category": "messaging",
1447
1526
  "package": "@almadar/integrations",
1527
+ "backend": "production",
1448
1528
  "actions": [
1449
1529
  {
1450
- "name": "build",
1530
+ "name": "send",
1451
1531
  "description": "",
1452
1532
  "params": [
1453
1533
  {
1454
- "name": "tag",
1534
+ "name": "subscription",
1535
+ "type": "object",
1536
+ "required": true,
1537
+ "description": ""
1538
+ },
1539
+ {
1540
+ "name": "title",
1455
1541
  "type": "string",
1456
1542
  "required": true,
1457
1543
  "description": ""
1458
1544
  },
1459
1545
  {
1460
- "name": "dockerfile",
1546
+ "name": "body",
1461
1547
  "type": "string",
1462
- "required": false,
1548
+ "required": true,
1463
1549
  "description": ""
1464
1550
  },
1465
1551
  {
1466
- "name": "context",
1552
+ "name": "url",
1467
1553
  "type": "string",
1468
1554
  "required": false,
1469
1555
  "description": ""
1470
1556
  },
1471
1557
  {
1472
- "name": "buildArgs",
1473
- "type": "object",
1558
+ "name": "icon",
1559
+ "type": "string",
1474
1560
  "required": false,
1475
1561
  "description": ""
1476
1562
  }
1477
1563
  ],
1478
1564
  "responseShape": {
1479
- "imageId": "string",
1480
- "tag": "string",
1481
- "size": "number",
1482
- "buildTime": "number"
1565
+ "statusCode": "number",
1566
+ "ok": "boolean",
1567
+ "expired": "boolean"
1483
1568
  }
1569
+ }
1570
+ ],
1571
+ "credentials": [
1572
+ {
1573
+ "envVar": "VAPID_PUBLIC_KEY",
1574
+ "required": true,
1575
+ "description": "VAPID public key (web-push generate-vapid-keys)"
1484
1576
  },
1485
1577
  {
1486
- "name": "run",
1578
+ "envVar": "VAPID_PRIVATE_KEY",
1579
+ "required": true,
1580
+ "description": "VAPID private key"
1581
+ },
1582
+ {
1583
+ "envVar": "VAPID_SUBJECT",
1584
+ "required": true,
1585
+ "description": "VAPID subject (mailto: or https: contact URI)"
1586
+ }
1587
+ ],
1588
+ "hooks": []
1589
+ },
1590
+ "calendar": {
1591
+ "name": "calendar",
1592
+ "description": "Google Calendar — list/create/update/delete events, free-busy, push-channel watch (service account, domain-wide delegation)",
1593
+ "category": "infrastructure",
1594
+ "package": "@almadar/integrations",
1595
+ "backend": "production",
1596
+ "actions": [
1597
+ {
1598
+ "name": "listEvents",
1487
1599
  "description": "",
1488
1600
  "params": [
1489
1601
  {
1490
- "name": "image",
1491
- "type": "string",
1492
- "required": true,
1493
- "description": ""
1494
- },
1495
- {
1496
- "name": "name",
1602
+ "name": "calendarId",
1497
1603
  "type": "string",
1498
1604
  "required": false,
1499
1605
  "description": ""
1500
1606
  },
1501
1607
  {
1502
- "name": "ports",
1503
- "type": "array",
1608
+ "name": "timeMin",
1609
+ "type": "string",
1504
1610
  "required": false,
1505
1611
  "description": ""
1506
1612
  },
1507
1613
  {
1508
- "name": "env",
1509
- "type": "object",
1614
+ "name": "timeMax",
1615
+ "type": "string",
1510
1616
  "required": false,
1511
1617
  "description": ""
1512
1618
  },
1513
1619
  {
1514
- "name": "volumes",
1515
- "type": "array",
1620
+ "name": "syncToken",
1621
+ "type": "string",
1516
1622
  "required": false,
1517
1623
  "description": ""
1518
1624
  },
1519
1625
  {
1520
- "name": "command",
1521
- "type": "string",
1626
+ "name": "maxResults",
1627
+ "type": "number",
1522
1628
  "required": false,
1523
1629
  "description": ""
1524
1630
  }
1525
1631
  ],
1526
1632
  "responseShape": {
1527
- "containerId": "string",
1528
- "name": "string",
1529
- "status": "string",
1530
- "ports": "array"
1633
+ "events": "array",
1634
+ "nextSyncToken": "string | null"
1531
1635
  }
1532
1636
  },
1533
1637
  {
1534
- "name": "stop",
1638
+ "name": "createEvent",
1535
1639
  "description": "",
1536
1640
  "params": [
1537
1641
  {
1538
- "name": "containerId",
1642
+ "name": "calendarId",
1643
+ "type": "string",
1644
+ "required": false,
1645
+ "description": ""
1646
+ },
1647
+ {
1648
+ "name": "summary",
1649
+ "type": "string",
1650
+ "required": true,
1651
+ "description": ""
1652
+ },
1653
+ {
1654
+ "name": "description",
1655
+ "type": "string",
1656
+ "required": false,
1657
+ "description": ""
1658
+ },
1659
+ {
1660
+ "name": "location",
1661
+ "type": "string",
1662
+ "required": false,
1663
+ "description": ""
1664
+ },
1665
+ {
1666
+ "name": "start",
1539
1667
  "type": "string",
1540
1668
  "required": true,
1541
1669
  "description": ""
1670
+ },
1671
+ {
1672
+ "name": "end",
1673
+ "type": "string",
1674
+ "required": false,
1675
+ "description": ""
1676
+ },
1677
+ {
1678
+ "name": "durationMinutes",
1679
+ "type": "number",
1680
+ "required": false,
1681
+ "description": ""
1542
1682
  }
1543
1683
  ],
1544
1684
  "responseShape": {
1545
- "containerId": "string",
1685
+ "id": "string",
1546
1686
  "status": "string",
1547
- "stoppedAt": "number"
1687
+ "htmlLink": "string"
1548
1688
  }
1549
1689
  },
1550
1690
  {
1551
- "name": "remove",
1691
+ "name": "updateEvent",
1552
1692
  "description": "",
1553
1693
  "params": [
1554
1694
  {
1555
- "name": "containerId",
1695
+ "name": "calendarId",
1696
+ "type": "string",
1697
+ "required": false,
1698
+ "description": ""
1699
+ },
1700
+ {
1701
+ "name": "eventId",
1556
1702
  "type": "string",
1557
1703
  "required": true,
1558
1704
  "description": ""
1559
1705
  },
1560
1706
  {
1561
- "name": "force",
1562
- "type": "boolean",
1707
+ "name": "summary",
1708
+ "type": "string",
1709
+ "required": false,
1710
+ "description": ""
1711
+ },
1712
+ {
1713
+ "name": "description",
1714
+ "type": "string",
1715
+ "required": false,
1716
+ "description": ""
1717
+ },
1718
+ {
1719
+ "name": "location",
1720
+ "type": "string",
1721
+ "required": false,
1722
+ "description": ""
1723
+ },
1724
+ {
1725
+ "name": "start",
1726
+ "type": "string",
1727
+ "required": false,
1728
+ "description": ""
1729
+ },
1730
+ {
1731
+ "name": "end",
1732
+ "type": "string",
1563
1733
  "required": false,
1564
1734
  "description": ""
1565
1735
  }
1566
1736
  ],
1567
1737
  "responseShape": {
1568
- "containerId": "string",
1569
- "removed": "boolean"
1738
+ "id": "string",
1739
+ "status": "string"
1570
1740
  }
1571
1741
  },
1572
1742
  {
1573
- "name": "logs",
1743
+ "name": "deleteEvent",
1574
1744
  "description": "",
1575
1745
  "params": [
1576
1746
  {
1577
- "name": "containerId",
1747
+ "name": "calendarId",
1578
1748
  "type": "string",
1579
- "required": true,
1580
- "description": ""
1581
- },
1582
- {
1583
- "name": "tail",
1584
- "type": "number",
1585
1749
  "required": false,
1586
1750
  "description": ""
1587
1751
  },
1588
1752
  {
1589
- "name": "since",
1753
+ "name": "eventId",
1590
1754
  "type": "string",
1591
- "required": false,
1755
+ "required": true,
1592
1756
  "description": ""
1593
1757
  }
1594
1758
  ],
1595
1759
  "responseShape": {
1596
- "containerId": "string",
1597
- "logs": "string[]",
1598
- "lineCount": "number"
1760
+ "id": "string",
1761
+ "deleted": "boolean"
1599
1762
  }
1600
1763
  },
1601
1764
  {
1602
- "name": "status",
1765
+ "name": "freeBusy",
1603
1766
  "description": "",
1604
1767
  "params": [
1605
1768
  {
1606
- "name": "containerId",
1769
+ "name": "calendarId",
1770
+ "type": "string",
1771
+ "required": false,
1772
+ "description": ""
1773
+ },
1774
+ {
1775
+ "name": "timeMin",
1776
+ "type": "string",
1777
+ "required": true,
1778
+ "description": ""
1779
+ },
1780
+ {
1781
+ "name": "timeMax",
1607
1782
  "type": "string",
1608
1783
  "required": true,
1609
1784
  "description": ""
1610
1785
  }
1611
1786
  ],
1612
1787
  "responseShape": {
1613
- "containerId": "string",
1614
- "name": "string",
1615
- "image": "string",
1616
- "status": "string",
1617
- "ports": "array",
1618
- "createdAt": "number",
1619
- "startedAt": "number | null",
1620
- "stoppedAt": "number | null"
1788
+ "busy": "array"
1621
1789
  }
1622
1790
  },
1623
1791
  {
1624
- "name": "list",
1792
+ "name": "watch",
1625
1793
  "description": "",
1626
1794
  "params": [
1627
1795
  {
1628
- "name": "all",
1629
- "type": "boolean",
1796
+ "name": "calendarId",
1797
+ "type": "string",
1630
1798
  "required": false,
1631
1799
  "description": ""
1632
1800
  },
1633
1801
  {
1634
- "name": "filterByLabel",
1802
+ "name": "channelId",
1803
+ "type": "string",
1804
+ "required": true,
1805
+ "description": ""
1806
+ },
1807
+ {
1808
+ "name": "address",
1635
1809
  "type": "string",
1810
+ "required": true,
1811
+ "description": ""
1812
+ },
1813
+ {
1814
+ "name": "ttlSeconds",
1815
+ "type": "number",
1636
1816
  "required": false,
1637
1817
  "description": ""
1638
1818
  }
1639
1819
  ],
1640
1820
  "responseShape": {
1641
- "containers": "array",
1821
+ "channelId": "string",
1822
+ "resourceId": "string",
1823
+ "expiration": "string"
1824
+ }
1825
+ },
1826
+ {
1827
+ "name": "stopWatch",
1828
+ "description": "",
1829
+ "params": [
1830
+ {
1831
+ "name": "channelId",
1832
+ "type": "string",
1833
+ "required": true,
1834
+ "description": ""
1835
+ },
1836
+ {
1837
+ "name": "resourceId",
1838
+ "type": "string",
1839
+ "required": true,
1840
+ "description": ""
1841
+ }
1842
+ ],
1843
+ "responseShape": {
1844
+ "stopped": "boolean"
1845
+ }
1846
+ }
1847
+ ],
1848
+ "credentials": [
1849
+ {
1850
+ "envVar": "GOOGLE_CALENDAR_SA_KEY",
1851
+ "required": true,
1852
+ "description": "Google service-account key JSON (raw or base64) with calendar scope; store in Secret Manager, bind as env"
1853
+ },
1854
+ {
1855
+ "envVar": "GOOGLE_CALENDAR_SUBJECT",
1856
+ "required": false,
1857
+ "description": "Workspace user to impersonate (domain-wide delegation); empty = act as the service account"
1858
+ },
1859
+ {
1860
+ "envVar": "GOOGLE_CALENDAR_ID",
1861
+ "required": false,
1862
+ "description": "Default calendar id (default: primary)"
1863
+ },
1864
+ {
1865
+ "envVar": "GOOGLE_CALENDAR_CHANNEL_TOKEN",
1866
+ "required": false,
1867
+ "description": "Watch-channel verification token — required to receive inbound calendar hooks (two-way sync)"
1868
+ }
1869
+ ],
1870
+ "hooks": [
1871
+ {
1872
+ "provider": "google-calendar",
1873
+ "event": "CAL_REMOTE_CHANGED",
1874
+ "credentialEnv": "GOOGLE_CALENDAR_CHANNEL_TOKEN",
1875
+ "providerExport": "googleCalendarHookProvider"
1876
+ }
1877
+ ]
1878
+ },
1879
+ "drive": {
1880
+ "name": "drive",
1881
+ "description": "Google Drive — list/get/upload files, folders, sharing (service account, domain-wide delegation)",
1882
+ "category": "infrastructure",
1883
+ "package": "@almadar/integrations",
1884
+ "backend": "production",
1885
+ "actions": [
1886
+ {
1887
+ "name": "listFiles",
1888
+ "description": "",
1889
+ "params": [
1890
+ {
1891
+ "name": "folderId",
1892
+ "type": "string",
1893
+ "required": false,
1894
+ "description": ""
1895
+ },
1896
+ {
1897
+ "name": "query",
1898
+ "type": "string",
1899
+ "required": false,
1900
+ "description": ""
1901
+ },
1902
+ {
1903
+ "name": "maxResults",
1904
+ "type": "number",
1905
+ "required": false,
1906
+ "description": ""
1907
+ }
1908
+ ],
1909
+ "responseShape": {
1910
+ "files": "array"
1911
+ }
1912
+ },
1913
+ {
1914
+ "name": "getFile",
1915
+ "description": "",
1916
+ "params": [
1917
+ {
1918
+ "name": "fileId",
1919
+ "type": "string",
1920
+ "required": true,
1921
+ "description": ""
1922
+ }
1923
+ ],
1924
+ "responseShape": {
1925
+ "id": "string",
1926
+ "name": "string",
1927
+ "mimeType": "string",
1928
+ "content": "string",
1929
+ "size": "number"
1930
+ }
1931
+ },
1932
+ {
1933
+ "name": "uploadFile",
1934
+ "description": "",
1935
+ "params": [
1936
+ {
1937
+ "name": "name",
1938
+ "type": "string",
1939
+ "required": true,
1940
+ "description": ""
1941
+ },
1942
+ {
1943
+ "name": "content",
1944
+ "type": "string",
1945
+ "required": true,
1946
+ "description": ""
1947
+ },
1948
+ {
1949
+ "name": "mimeType",
1950
+ "type": "string",
1951
+ "required": false,
1952
+ "description": ""
1953
+ },
1954
+ {
1955
+ "name": "folderId",
1956
+ "type": "string",
1957
+ "required": false,
1958
+ "description": ""
1959
+ }
1960
+ ],
1961
+ "responseShape": {
1962
+ "id": "string",
1963
+ "name": "string",
1964
+ "webViewLink": "string"
1965
+ }
1966
+ },
1967
+ {
1968
+ "name": "createFolder",
1969
+ "description": "",
1970
+ "params": [
1971
+ {
1972
+ "name": "name",
1973
+ "type": "string",
1974
+ "required": true,
1975
+ "description": ""
1976
+ },
1977
+ {
1978
+ "name": "parentId",
1979
+ "type": "string",
1980
+ "required": false,
1981
+ "description": ""
1982
+ }
1983
+ ],
1984
+ "responseShape": {
1985
+ "id": "string",
1986
+ "name": "string"
1987
+ }
1988
+ },
1989
+ {
1990
+ "name": "shareFile",
1991
+ "description": "",
1992
+ "params": [
1993
+ {
1994
+ "name": "fileId",
1995
+ "type": "string",
1996
+ "required": true,
1997
+ "description": ""
1998
+ },
1999
+ {
2000
+ "name": "email",
2001
+ "type": "string",
2002
+ "required": true,
2003
+ "description": ""
2004
+ },
2005
+ {
2006
+ "name": "role",
2007
+ "type": "'reader' | 'writer' | 'commenter'",
2008
+ "required": false,
2009
+ "description": ""
2010
+ }
2011
+ ],
2012
+ "responseShape": {
2013
+ "shared": "boolean",
2014
+ "permissionId": "string"
2015
+ }
2016
+ }
2017
+ ],
2018
+ "credentials": [
2019
+ {
2020
+ "envVar": "GOOGLE_DRIVE_SA_KEY",
2021
+ "required": false,
2022
+ "description": "Google service-account key JSON (raw or base64) with drive scope — serves reads; store in Secret Manager, bind as env"
2023
+ },
2024
+ {
2025
+ "envVar": "GOOGLE_DRIVE_SUBJECT",
2026
+ "required": false,
2027
+ "description": "Workspace user to impersonate (domain-wide delegation); empty = act as the service account"
2028
+ },
2029
+ {
2030
+ "envVar": "GOOGLE_DRIVE_REFRESH_TOKEN",
2031
+ "required": false,
2032
+ "description": "User OAuth refresh token (drive-consent.mjs) — serves writes; SA uploads are impossible on personal accounts (no SA storage quota)"
2033
+ },
2034
+ {
2035
+ "envVar": "GOOGLE_DRIVE_FOLDER_ID",
2036
+ "required": false,
2037
+ "description": "Default parent folder for uploads/new folders when the call names none"
2038
+ }
2039
+ ],
2040
+ "hooks": []
2041
+ },
2042
+ "metaAds": {
2043
+ "name": "metaAds",
2044
+ "description": "Meta Ads — read-only Marketing Insights (spend, campaigns) for profitability reporting",
2045
+ "category": "marketing",
2046
+ "package": "@almadar/integrations",
2047
+ "backend": "production",
2048
+ "actions": [
2049
+ {
2050
+ "name": "getSpend",
2051
+ "description": "",
2052
+ "params": [
2053
+ {
2054
+ "name": "accountId",
2055
+ "type": "string",
2056
+ "required": false,
2057
+ "description": ""
2058
+ },
2059
+ {
2060
+ "name": "since",
2061
+ "type": "string",
2062
+ "required": true,
2063
+ "description": ""
2064
+ },
2065
+ {
2066
+ "name": "until",
2067
+ "type": "string",
2068
+ "required": true,
2069
+ "description": ""
2070
+ },
2071
+ {
2072
+ "name": "clientTag",
2073
+ "type": "string",
2074
+ "required": false,
2075
+ "description": ""
2076
+ }
2077
+ ],
2078
+ "responseShape": {
2079
+ "spend": "number",
2080
+ "currency": "string",
2081
+ "impressions": "number",
2082
+ "clicks": "number"
2083
+ }
2084
+ },
2085
+ {
2086
+ "name": "listCampaigns",
2087
+ "description": "",
2088
+ "params": [
2089
+ {
2090
+ "name": "accountId",
2091
+ "type": "string",
2092
+ "required": false,
2093
+ "description": ""
2094
+ },
2095
+ {
2096
+ "name": "status",
2097
+ "type": "string",
2098
+ "required": false,
2099
+ "description": ""
2100
+ }
2101
+ ],
2102
+ "responseShape": {
2103
+ "campaigns": "array"
2104
+ }
2105
+ }
2106
+ ],
2107
+ "credentials": [
2108
+ {
2109
+ "envVar": "META_ACCESS_TOKEN",
2110
+ "required": true,
2111
+ "description": "Meta Graph API access token (Marketing API, ads_read)"
2112
+ },
2113
+ {
2114
+ "envVar": "META_AD_ACCOUNT_ID",
2115
+ "required": false,
2116
+ "description": "Default ad account id (act_…); per-call accountId overrides"
2117
+ }
2118
+ ],
2119
+ "hooks": []
2120
+ },
2121
+ "accounting": {
2122
+ "name": "accounting",
2123
+ "description": "Accounting export — invoice/journal rows to import-ready CSV (provider-pluggable)",
2124
+ "category": "finance",
2125
+ "package": "@almadar/integrations",
2126
+ "backend": "production",
2127
+ "actions": [
2128
+ {
2129
+ "name": "exportInvoices",
2130
+ "description": "",
2131
+ "params": [
2132
+ {
2133
+ "name": "invoices",
2134
+ "type": "array",
2135
+ "required": true,
2136
+ "description": ""
2137
+ },
2138
+ {
2139
+ "name": "format",
2140
+ "type": "'csv'",
2141
+ "required": false,
2142
+ "description": ""
2143
+ }
2144
+ ],
2145
+ "responseShape": {
2146
+ "content": "string",
2147
+ "filename": "string",
2148
+ "count": "number"
2149
+ }
2150
+ },
2151
+ {
2152
+ "name": "exportJournal",
2153
+ "description": "",
2154
+ "params": [
2155
+ {
2156
+ "name": "entries",
2157
+ "type": "array",
2158
+ "required": true,
2159
+ "description": ""
2160
+ },
2161
+ {
2162
+ "name": "format",
2163
+ "type": "'csv'",
2164
+ "required": false,
2165
+ "description": ""
2166
+ }
2167
+ ],
2168
+ "responseShape": {
2169
+ "content": "string",
2170
+ "filename": "string",
2171
+ "count": "number"
2172
+ }
2173
+ }
2174
+ ],
2175
+ "credentials": [],
2176
+ "hooks": []
2177
+ },
2178
+ "banking": {
2179
+ "name": "banking",
2180
+ "description": "Banking — GoCardless Bank Account Data (requisitions, accounts, transactions) for reconciliation",
2181
+ "category": "finance",
2182
+ "package": "@almadar/integrations",
2183
+ "backend": "production",
2184
+ "actions": [
2185
+ {
2186
+ "name": "createRequisition",
2187
+ "description": "",
2188
+ "params": [
2189
+ {
2190
+ "name": "institutionId",
2191
+ "type": "string",
2192
+ "required": true,
2193
+ "description": ""
2194
+ },
2195
+ {
2196
+ "name": "redirectUrl",
2197
+ "type": "string",
2198
+ "required": true,
2199
+ "description": ""
2200
+ },
2201
+ {
2202
+ "name": "reference",
2203
+ "type": "string",
2204
+ "required": false,
2205
+ "description": ""
2206
+ }
2207
+ ],
2208
+ "responseShape": {
2209
+ "requisitionId": "string",
2210
+ "link": "string"
2211
+ }
2212
+ },
2213
+ {
2214
+ "name": "listAccounts",
2215
+ "description": "",
2216
+ "params": [
2217
+ {
2218
+ "name": "requisitionId",
2219
+ "type": "string",
2220
+ "required": true,
2221
+ "description": ""
2222
+ }
2223
+ ],
2224
+ "responseShape": {
2225
+ "accounts": "string[]"
2226
+ }
2227
+ },
2228
+ {
2229
+ "name": "listTransactions",
2230
+ "description": "",
2231
+ "params": [
2232
+ {
2233
+ "name": "accountId",
2234
+ "type": "string",
2235
+ "required": true,
2236
+ "description": ""
2237
+ },
2238
+ {
2239
+ "name": "dateFrom",
2240
+ "type": "string",
2241
+ "required": false,
2242
+ "description": ""
2243
+ },
2244
+ {
2245
+ "name": "dateTo",
2246
+ "type": "string",
2247
+ "required": false,
2248
+ "description": ""
2249
+ }
2250
+ ],
2251
+ "responseShape": {
2252
+ "transactions": "array"
2253
+ }
2254
+ }
2255
+ ],
2256
+ "credentials": [
2257
+ {
2258
+ "envVar": "GOCARDLESS_SECRET_ID",
2259
+ "required": true,
2260
+ "description": "GoCardless Bank Account Data secret id"
2261
+ },
2262
+ {
2263
+ "envVar": "GOCARDLESS_SECRET_KEY",
2264
+ "required": true,
2265
+ "description": "GoCardless Bank Account Data secret key"
2266
+ }
2267
+ ],
2268
+ "hooks": []
2269
+ },
2270
+ "esign": {
2271
+ "name": "esign",
2272
+ "description": "E-signature — send/track/download envelopes (DocuSign first, provider-pluggable)",
2273
+ "category": "infrastructure",
2274
+ "package": "@almadar/integrations",
2275
+ "backend": "production",
2276
+ "actions": [
2277
+ {
2278
+ "name": "sendEnvelope",
2279
+ "description": "",
2280
+ "params": [
2281
+ {
2282
+ "name": "recipientEmail",
2283
+ "type": "string",
2284
+ "required": true,
2285
+ "description": ""
2286
+ },
2287
+ {
2288
+ "name": "recipientName",
2289
+ "type": "string",
2290
+ "required": true,
2291
+ "description": ""
2292
+ },
2293
+ {
2294
+ "name": "documentName",
2295
+ "type": "string",
2296
+ "required": true,
2297
+ "description": ""
2298
+ },
2299
+ {
2300
+ "name": "documentContent",
2301
+ "type": "string",
2302
+ "required": true,
2303
+ "description": ""
2304
+ },
2305
+ {
2306
+ "name": "emailSubject",
2307
+ "type": "string",
2308
+ "required": false,
2309
+ "description": ""
2310
+ }
2311
+ ],
2312
+ "responseShape": {
2313
+ "envelopeId": "string",
2314
+ "status": "string"
2315
+ }
2316
+ },
2317
+ {
2318
+ "name": "getEnvelopeStatus",
2319
+ "description": "",
2320
+ "params": [
2321
+ {
2322
+ "name": "envelopeId",
2323
+ "type": "string",
2324
+ "required": true,
2325
+ "description": ""
2326
+ }
2327
+ ],
2328
+ "responseShape": {
2329
+ "status": "string",
2330
+ "completedAt": "string"
2331
+ }
2332
+ },
2333
+ {
2334
+ "name": "downloadDocument",
2335
+ "description": "",
2336
+ "params": [
2337
+ {
2338
+ "name": "envelopeId",
2339
+ "type": "string",
2340
+ "required": true,
2341
+ "description": ""
2342
+ }
2343
+ ],
2344
+ "responseShape": {
2345
+ "content": "string",
2346
+ "documentName": "string"
2347
+ }
2348
+ }
2349
+ ],
2350
+ "credentials": [
2351
+ {
2352
+ "envVar": "DOCUSIGN_BASE_URL",
2353
+ "required": true,
2354
+ "description": "DocuSign REST base (e.g. https://demo.docusign.net/restapi/v2.1/accounts/<accountId>)"
2355
+ },
2356
+ {
2357
+ "envVar": "DOCUSIGN_ACCESS_TOKEN",
2358
+ "required": true,
2359
+ "description": "DocuSign OAuth access token (JWT grant rotation is the deployment concern)"
2360
+ }
2361
+ ],
2362
+ "hooks": []
2363
+ },
2364
+ "docker": {
2365
+ "name": "docker",
2366
+ "description": "Docker — container and image management",
2367
+ "category": "devtools",
2368
+ "package": "@almadar/integrations",
2369
+ "backend": "simulated",
2370
+ "actions": [
2371
+ {
2372
+ "name": "build",
2373
+ "description": "",
2374
+ "params": [
2375
+ {
2376
+ "name": "tag",
2377
+ "type": "string",
2378
+ "required": true,
2379
+ "description": ""
2380
+ },
2381
+ {
2382
+ "name": "dockerfile",
2383
+ "type": "string",
2384
+ "required": false,
2385
+ "description": ""
2386
+ },
2387
+ {
2388
+ "name": "context",
2389
+ "type": "string",
2390
+ "required": false,
2391
+ "description": ""
2392
+ },
2393
+ {
2394
+ "name": "buildArgs",
2395
+ "type": "object",
2396
+ "required": false,
2397
+ "description": ""
2398
+ }
2399
+ ],
2400
+ "responseShape": {
2401
+ "imageId": "string",
2402
+ "tag": "string",
2403
+ "size": "number",
2404
+ "buildTime": "number"
2405
+ }
2406
+ },
2407
+ {
2408
+ "name": "run",
2409
+ "description": "",
2410
+ "params": [
2411
+ {
2412
+ "name": "image",
2413
+ "type": "string",
2414
+ "required": true,
2415
+ "description": ""
2416
+ },
2417
+ {
2418
+ "name": "name",
2419
+ "type": "string",
2420
+ "required": false,
2421
+ "description": ""
2422
+ },
2423
+ {
2424
+ "name": "ports",
2425
+ "type": "array",
2426
+ "required": false,
2427
+ "description": ""
2428
+ },
2429
+ {
2430
+ "name": "env",
2431
+ "type": "object",
2432
+ "required": false,
2433
+ "description": ""
2434
+ },
2435
+ {
2436
+ "name": "volumes",
2437
+ "type": "array",
2438
+ "required": false,
2439
+ "description": ""
2440
+ },
2441
+ {
2442
+ "name": "command",
2443
+ "type": "string",
2444
+ "required": false,
2445
+ "description": ""
2446
+ }
2447
+ ],
2448
+ "responseShape": {
2449
+ "containerId": "string",
2450
+ "name": "string",
2451
+ "status": "string",
2452
+ "ports": "array"
2453
+ }
2454
+ },
2455
+ {
2456
+ "name": "stop",
2457
+ "description": "",
2458
+ "params": [
2459
+ {
2460
+ "name": "containerId",
2461
+ "type": "string",
2462
+ "required": true,
2463
+ "description": ""
2464
+ }
2465
+ ],
2466
+ "responseShape": {
2467
+ "containerId": "string",
2468
+ "status": "string",
2469
+ "stoppedAt": "number"
2470
+ }
2471
+ },
2472
+ {
2473
+ "name": "remove",
2474
+ "description": "",
2475
+ "params": [
2476
+ {
2477
+ "name": "containerId",
2478
+ "type": "string",
2479
+ "required": true,
2480
+ "description": ""
2481
+ },
2482
+ {
2483
+ "name": "force",
2484
+ "type": "boolean",
2485
+ "required": false,
2486
+ "description": ""
2487
+ }
2488
+ ],
2489
+ "responseShape": {
2490
+ "containerId": "string",
2491
+ "removed": "boolean"
2492
+ }
2493
+ },
2494
+ {
2495
+ "name": "logs",
2496
+ "description": "",
2497
+ "params": [
2498
+ {
2499
+ "name": "containerId",
2500
+ "type": "string",
2501
+ "required": true,
2502
+ "description": ""
2503
+ },
2504
+ {
2505
+ "name": "tail",
2506
+ "type": "number",
2507
+ "required": false,
2508
+ "description": ""
2509
+ },
2510
+ {
2511
+ "name": "since",
2512
+ "type": "string",
2513
+ "required": false,
2514
+ "description": ""
2515
+ }
2516
+ ],
2517
+ "responseShape": {
2518
+ "containerId": "string",
2519
+ "logs": "string[]",
2520
+ "lineCount": "number"
2521
+ }
2522
+ },
2523
+ {
2524
+ "name": "status",
2525
+ "description": "",
2526
+ "params": [
2527
+ {
2528
+ "name": "containerId",
2529
+ "type": "string",
2530
+ "required": true,
2531
+ "description": ""
2532
+ }
2533
+ ],
2534
+ "responseShape": {
2535
+ "containerId": "string",
2536
+ "name": "string",
2537
+ "image": "string",
2538
+ "status": "string",
2539
+ "ports": "array",
2540
+ "createdAt": "number",
2541
+ "startedAt": "number | null",
2542
+ "stoppedAt": "number | null"
2543
+ }
2544
+ },
2545
+ {
2546
+ "name": "list",
2547
+ "description": "",
2548
+ "params": [
2549
+ {
2550
+ "name": "all",
2551
+ "type": "boolean",
2552
+ "required": false,
2553
+ "description": ""
2554
+ },
2555
+ {
2556
+ "name": "filterByLabel",
2557
+ "type": "string",
2558
+ "required": false,
2559
+ "description": ""
2560
+ }
2561
+ ],
2562
+ "responseShape": {
2563
+ "containers": "array",
1642
2564
  "total": "number"
1643
2565
  }
1644
2566
  }
@@ -1649,13 +2571,15 @@
1649
2571
  "required": false,
1650
2572
  "description": "Docker daemon host URL"
1651
2573
  }
1652
- ]
2574
+ ],
2575
+ "hooks": []
1653
2576
  },
1654
2577
  "database": {
1655
2578
  "name": "database",
1656
2579
  "description": "Database integration — read-only SQL queries over external connections",
1657
2580
  "category": "infrastructure",
1658
2581
  "package": "@almadar/integrations",
2582
+ "backend": "production",
1659
2583
  "actions": [
1660
2584
  {
1661
2585
  "name": "query",
@@ -1686,13 +2610,15 @@
1686
2610
  }
1687
2611
  }
1688
2612
  ],
1689
- "credentials": []
2613
+ "credentials": [],
2614
+ "hooks": []
1690
2615
  },
1691
2616
  "storage": {
1692
2617
  "name": "storage",
1693
2618
  "description": "Object storage — upload, download, delete, list files",
1694
2619
  "category": "infrastructure",
1695
2620
  "package": "@almadar/integrations",
2621
+ "backend": "production",
1696
2622
  "actions": [
1697
2623
  {
1698
2624
  "name": "upload",
@@ -1724,7 +2650,7 @@
1724
2650
  },
1725
2651
  {
1726
2652
  "name": "file",
1727
- "type": "IntegrationParams",
2653
+ "type": "object",
1728
2654
  "required": false,
1729
2655
  "description": ""
1730
2656
  },
@@ -1751,7 +2677,9 @@
1751
2677
  "key": "string",
1752
2678
  "bucket": "string",
1753
2679
  "size": "number",
1754
- "etag": "string"
2680
+ "etag": "string",
2681
+ "id": "string",
2682
+ "url": "string"
1755
2683
  }
1756
2684
  },
1757
2685
  {
@@ -1795,15 +2723,22 @@
1795
2723
  "description": ""
1796
2724
  },
1797
2725
  {
1798
- "name": "maxKeys",
1799
- "type": "number",
2726
+ "name": "maxKeys",
2727
+ "type": "number",
2728
+ "required": false,
2729
+ "description": ""
2730
+ },
2731
+ {
2732
+ "name": "continuationToken",
2733
+ "type": "string",
1800
2734
  "required": false,
1801
2735
  "description": ""
1802
2736
  }
1803
2737
  ],
1804
2738
  "responseShape": {
1805
2739
  "keys": "array",
1806
- "truncated": "boolean"
2740
+ "truncated": "boolean",
2741
+ "nextToken": "string"
1807
2742
  }
1808
2743
  },
1809
2744
  {
@@ -1863,23 +2798,45 @@
1863
2798
  }
1864
2799
  ],
1865
2800
  "credentials": [
2801
+ {
2802
+ "envVar": "STORAGE_ACCESS_KEY_ID",
2803
+ "required": true,
2804
+ "description": "S3-compatible access key id"
2805
+ },
2806
+ {
2807
+ "envVar": "STORAGE_SECRET_ACCESS_KEY",
2808
+ "required": true,
2809
+ "description": "S3-compatible secret access key"
2810
+ },
1866
2811
  {
1867
2812
  "envVar": "STORAGE_BUCKET",
1868
2813
  "required": true,
1869
- "description": "Cloud storage bucket name"
2814
+ "description": "Default bucket name"
1870
2815
  },
1871
2816
  {
1872
2817
  "envVar": "STORAGE_REGION",
1873
2818
  "required": false,
1874
- "description": "Storage region"
2819
+ "description": "Region (default us-east-1)"
2820
+ },
2821
+ {
2822
+ "envVar": "STORAGE_ENDPOINT",
2823
+ "required": false,
2824
+ "description": "Custom S3-compatible endpoint (R2/MinIO/…); empty = AWS S3"
2825
+ },
2826
+ {
2827
+ "envVar": "STORAGE_PUBLIC_URL_BASE",
2828
+ "required": false,
2829
+ "description": "Base URL for public-acl object links; empty = endpoint-derived"
1875
2830
  }
1876
- ]
2831
+ ],
2832
+ "hooks": []
1877
2833
  },
1878
2834
  "queue": {
1879
2835
  "name": "queue",
1880
2836
  "description": "Message queue — publish, subscribe, acknowledge messages",
1881
2837
  "category": "infrastructure",
1882
2838
  "package": "@almadar/integrations",
2839
+ "backend": "simulated",
1883
2840
  "actions": [
1884
2841
  {
1885
2842
  "name": "enqueue",
@@ -2027,13 +2984,15 @@
2027
2984
  "required": true,
2028
2985
  "description": "Message queue connection URL"
2029
2986
  }
2030
- ]
2987
+ ],
2988
+ "hooks": []
2031
2989
  },
2032
2990
  "redis": {
2033
2991
  "name": "redis",
2034
2992
  "description": "Redis — cache get/set/delete, pub/sub",
2035
2993
  "category": "infrastructure",
2036
2994
  "package": "@almadar/integrations",
2995
+ "backend": "simulated",
2037
2996
  "actions": [
2038
2997
  {
2039
2998
  "name": "get",
@@ -2220,13 +3179,15 @@
2220
3179
  "required": true,
2221
3180
  "description": "Redis connection URL"
2222
3181
  }
2223
- ]
3182
+ ],
3183
+ "hooks": []
2224
3184
  },
2225
3185
  "oauth": {
2226
3186
  "name": "oauth",
2227
- "description": "OAuth — authorization flow, token management",
3187
+ "description": "OAuth/OIDC — authorization-code + PKCE flow, token management, userinfo",
2228
3188
  "category": "auth",
2229
3189
  "package": "@almadar/integrations",
3190
+ "backend": "production",
2230
3191
  "actions": [
2231
3192
  {
2232
3193
  "name": "authorize",
@@ -2334,25 +3295,151 @@
2334
3295
  {
2335
3296
  "envVar": "OAUTH_CLIENT_ID",
2336
3297
  "required": true,
2337
- "description": "OAuth2 client ID"
3298
+ "description": "OIDC client ID"
2338
3299
  },
2339
3300
  {
2340
3301
  "envVar": "OAUTH_CLIENT_SECRET",
2341
3302
  "required": true,
2342
- "description": "OAuth2 client secret"
3303
+ "description": "OIDC client secret"
2343
3304
  },
2344
3305
  {
2345
3306
  "envVar": "OAUTH_REDIRECT_URI",
2346
3307
  "required": false,
2347
- "description": "OAuth2 redirect URI"
3308
+ "description": "OIDC redirect URI (default per-call param)"
3309
+ },
3310
+ {
3311
+ "envVar": "OIDC_ISSUER_URL",
3312
+ "required": false,
3313
+ "description": "OIDC issuer URL (default https://accounts.google.com)"
2348
3314
  }
2349
- ]
3315
+ ],
3316
+ "hooks": []
3317
+ },
3318
+ "credentials": {
3319
+ "name": "credentials",
3320
+ "description": "Tenant credential store — masked list, set/remove, test connection, master-key rotation (settings-page backend)",
3321
+ "category": "auth",
3322
+ "package": "@almadar/integrations",
3323
+ "backend": "production",
3324
+ "actions": [
3325
+ {
3326
+ "name": "list",
3327
+ "description": "",
3328
+ "params": [
3329
+ {
3330
+ "name": "service",
3331
+ "type": "string",
3332
+ "required": false,
3333
+ "description": ""
3334
+ }
3335
+ ],
3336
+ "responseShape": {
3337
+ "enabled": "boolean",
3338
+ "entries": "array"
3339
+ }
3340
+ },
3341
+ {
3342
+ "name": "set",
3343
+ "description": "",
3344
+ "params": [
3345
+ {
3346
+ "name": "service",
3347
+ "type": "string",
3348
+ "required": true,
3349
+ "description": ""
3350
+ },
3351
+ {
3352
+ "name": "envVar",
3353
+ "type": "string",
3354
+ "required": true,
3355
+ "description": ""
3356
+ },
3357
+ {
3358
+ "name": "value",
3359
+ "type": "string",
3360
+ "required": true,
3361
+ "description": ""
3362
+ }
3363
+ ],
3364
+ "responseShape": {
3365
+ "saved": "boolean",
3366
+ "service": "string",
3367
+ "envVar": "string",
3368
+ "last4": "string"
3369
+ }
3370
+ },
3371
+ {
3372
+ "name": "remove",
3373
+ "description": "",
3374
+ "params": [
3375
+ {
3376
+ "name": "service",
3377
+ "type": "string",
3378
+ "required": true,
3379
+ "description": ""
3380
+ },
3381
+ {
3382
+ "name": "envVar",
3383
+ "type": "string",
3384
+ "required": true,
3385
+ "description": ""
3386
+ }
3387
+ ],
3388
+ "responseShape": {
3389
+ "removed": "boolean"
3390
+ }
3391
+ },
3392
+ {
3393
+ "name": "test",
3394
+ "description": "",
3395
+ "params": [
3396
+ {
3397
+ "name": "service",
3398
+ "type": "string",
3399
+ "required": true,
3400
+ "description": ""
3401
+ }
3402
+ ],
3403
+ "responseShape": {
3404
+ "service": "string",
3405
+ "configured": "boolean",
3406
+ "missing": "string[]",
3407
+ "probed": "boolean",
3408
+ "ok": "boolean",
3409
+ "message": "string"
3410
+ }
3411
+ },
3412
+ {
3413
+ "name": "rotate",
3414
+ "description": "",
3415
+ "params": [],
3416
+ "responseShape": {
3417
+ "rotated": "number",
3418
+ "alreadyCurrent": "number",
3419
+ "unreadable": "number"
3420
+ }
3421
+ }
3422
+ ],
3423
+ "credentials": [
3424
+ {
3425
+ "envVar": "ALMADAR_CREDENTIAL_MASTER_KEY",
3426
+ "required": false,
3427
+ "description": "AES-256 master key (64-char hex) enabling the hosted credential store — hold it alone in the platform secret store"
3428
+ },
3429
+ {
3430
+ "envVar": "ALMADAR_CREDENTIAL_MASTER_KEY_PREVIOUS",
3431
+ "required": false,
3432
+ "description": "Previous master key, present only during a rotation window — decrypts old rows until `credentials.rotate` re-encrypts them"
3433
+ }
3434
+ ],
3435
+ "hooks": []
2350
3436
  },
2351
3437
  "otel": {
2352
3438
  "name": "otel",
2353
3439
  "description": "OpenTelemetry — spans, metrics, logs",
2354
3440
  "category": "infrastructure",
2355
3441
  "package": "@almadar/integrations",
3442
+ "backend": "simulated",
2356
3443
  "actions": [
2357
3444
  {
2358
3445
  "name": "startSpan",
@@ -2494,13 +3581,15 @@
2494
3581
  "required": false,
2495
3582
  "description": "Service name for traces"
2496
3583
  }
2497
- ]
3584
+ ],
3585
+ "hooks": []
2498
3586
  },
2499
3587
  "cli": {
2500
3588
  "name": "cli",
2501
3589
  "description": "CLI tool execution — run commands, get output",
2502
3590
  "category": "devtools",
2503
3591
  "package": "@almadar/integrations",
3592
+ "backend": "production",
2504
3593
  "actions": [
2505
3594
  {
2506
3595
  "name": "validate",
@@ -2521,13 +3610,15 @@
2521
3610
  }
2522
3611
  }
2523
3612
  ],
2524
- "credentials": []
3613
+ "credentials": [],
3614
+ "hooks": []
2525
3615
  },
2526
3616
  "deepagent": {
2527
3617
  "name": "deepagent",
2528
3618
  "description": "DeepAgent — AI agent orchestration",
2529
3619
  "category": "ai",
2530
3620
  "package": "@almadar/integrations",
3621
+ "backend": "production",
2531
3622
  "actions": [
2532
3623
  {
2533
3624
  "name": "sendMessage",
@@ -2643,16 +3734,291 @@
2643
3734
  "required": false,
2644
3735
  "description": "DeepAgent API key"
2645
3736
  }
2646
- ]
3737
+ ],
3738
+ "hooks": []
3739
+ },
3740
+ "wikimedia": {
3741
+ "name": "wikimedia",
3742
+ "description": "Wikipedia API — redirect-resolved page lookup (description, portrait, lead extract)",
3743
+ "category": "reference",
3744
+ "package": "@almadar/integrations",
3745
+ "backend": "production",
3746
+ "actions": [
3747
+ {
3748
+ "name": "getPage",
3749
+ "description": "",
3750
+ "params": [
3751
+ {
3752
+ "name": "title",
3753
+ "type": "string",
3754
+ "required": true,
3755
+ "description": ""
3756
+ }
3757
+ ],
3758
+ "responseShape": {
3759
+ "title": "string",
3760
+ "description": "string",
3761
+ "portraitUrl": "string",
3762
+ "extract": "string"
3763
+ }
3764
+ }
3765
+ ],
3766
+ "credentials": [
3767
+ {
3768
+ "envVar": "WIKIMEDIA_USER_AGENT",
3769
+ "required": false,
3770
+ "description": "Descriptive User-Agent for the Wikipedia API"
3771
+ },
3772
+ {
3773
+ "envVar": "WIKIMEDIA_TIMEOUT_MS",
3774
+ "required": false,
3775
+ "description": "Per-request timeout (ms)"
3776
+ }
3777
+ ],
3778
+ "hooks": []
3779
+ },
3780
+ "iconify": {
3781
+ "name": "iconify",
3782
+ "description": "Iconify API — brand-logo / icon resolution, search, and body fetch",
3783
+ "category": "reference",
3784
+ "package": "@almadar/integrations",
3785
+ "backend": "production",
3786
+ "actions": [
3787
+ {
3788
+ "name": "svgExists",
3789
+ "description": "",
3790
+ "params": [
3791
+ {
3792
+ "name": "path",
3793
+ "type": "string",
3794
+ "required": true,
3795
+ "description": ""
3796
+ }
3797
+ ],
3798
+ "responseShape": {
3799
+ "exists": "boolean"
3800
+ }
3801
+ },
3802
+ {
3803
+ "name": "search",
3804
+ "description": "",
3805
+ "params": [
3806
+ {
3807
+ "name": "query",
3808
+ "type": "string",
3809
+ "required": true,
3810
+ "description": ""
3811
+ },
3812
+ {
3813
+ "name": "limit",
3814
+ "type": "number",
3815
+ "required": false,
3816
+ "description": ""
3817
+ }
3818
+ ],
3819
+ "responseShape": {
3820
+ "icons": "string[]"
3821
+ }
3822
+ },
3823
+ {
3824
+ "name": "getIconBody",
3825
+ "description": "",
3826
+ "params": [
3827
+ {
3828
+ "name": "iconId",
3829
+ "type": "string",
3830
+ "required": true,
3831
+ "description": ""
3832
+ }
3833
+ ],
3834
+ "responseShape": {
3835
+ "body": "string | null"
3836
+ }
3837
+ }
3838
+ ],
3839
+ "credentials": [
3840
+ {
3841
+ "envVar": "ICONIFY_USER_AGENT",
3842
+ "required": false,
3843
+ "description": "User-Agent for the Iconify API"
3844
+ },
3845
+ {
3846
+ "envVar": "ICONIFY_TIMEOUT_MS",
3847
+ "required": false,
3848
+ "description": "Per-request timeout (ms)"
3849
+ }
3850
+ ],
3851
+ "hooks": []
3852
+ },
3853
+ "arxiv": {
3854
+ "name": "arxiv",
3855
+ "description": "arXiv API — frontier academic preprint search (emerging-axis research backend)",
3856
+ "category": "reference",
3857
+ "package": "@almadar/integrations",
3858
+ "backend": "production",
3859
+ "actions": [
3860
+ {
3861
+ "name": "search",
3862
+ "description": "",
3863
+ "params": [
3864
+ {
3865
+ "name": "query",
3866
+ "type": "string",
3867
+ "required": true,
3868
+ "description": ""
3869
+ },
3870
+ {
3871
+ "name": "maxResults",
3872
+ "type": "number",
3873
+ "required": false,
3874
+ "description": ""
3875
+ }
3876
+ ],
3877
+ "responseShape": {
3878
+ "results": "array"
3879
+ }
3880
+ }
3881
+ ],
3882
+ "credentials": [
3883
+ {
3884
+ "envVar": "ARXIV_TIMEOUT_MS",
3885
+ "required": false,
3886
+ "description": "Per-request timeout (ms)"
3887
+ }
3888
+ ],
3889
+ "hooks": []
3890
+ },
3891
+ "calendar-ical": {
3892
+ "name": "calendar-ical",
3893
+ "description": "Host-provided .ics generation service (std-service-calendar-ical)",
3894
+ "category": "infrastructure",
3895
+ "package": "(host-injected)",
3896
+ "backend": "host-injected",
3897
+ "actions": [],
3898
+ "credentials": [],
3899
+ "hooks": []
3900
+ },
3901
+ "custom-bearer-api": {
3902
+ "name": "custom-bearer-api",
3903
+ "description": "Caller-configured bearer-token HTTP API (std-service-custom-bearer)",
3904
+ "category": "infrastructure",
3905
+ "package": "(host-injected)",
3906
+ "backend": "host-injected",
3907
+ "actions": [],
3908
+ "credentials": [],
3909
+ "hooks": []
3910
+ },
3911
+ "customBearer": {
3912
+ "name": "customBearer",
3913
+ "description": "Caller-configured bearer-token HTTP API (std-service-custom-bearer, unquoted spelling)",
3914
+ "category": "infrastructure",
3915
+ "package": "(host-injected)",
3916
+ "backend": "host-injected",
3917
+ "actions": [],
3918
+ "credentials": [],
3919
+ "hooks": []
3920
+ },
3921
+ "knowledge": {
3922
+ "name": "knowledge",
3923
+ "description": "Host-provided knowledge/research service",
3924
+ "category": "ai",
3925
+ "package": "(host-injected)",
3926
+ "backend": "host-injected",
3927
+ "actions": [],
3928
+ "credentials": [],
3929
+ "hooks": []
3930
+ },
3931
+ "maps": {
3932
+ "name": "maps",
3933
+ "description": "Host-provided maps service (std-service-maps)",
3934
+ "category": "infrastructure",
3935
+ "package": "(host-injected)",
3936
+ "backend": "host-injected",
3937
+ "actions": [],
3938
+ "credentials": [],
3939
+ "hooks": []
3940
+ },
3941
+ "print": {
3942
+ "name": "print",
3943
+ "description": "Host-provided print service (std-service-print)",
3944
+ "category": "infrastructure",
3945
+ "package": "(host-injected)",
3946
+ "backend": "host-injected",
3947
+ "actions": [],
3948
+ "credentials": [],
3949
+ "hooks": []
3950
+ },
3951
+ "builder": {
3952
+ "name": "builder",
3953
+ "description": "Rabit-internal agent service (rabit.lolo)",
3954
+ "category": "ai",
3955
+ "package": "(host-injected)",
3956
+ "backend": "host-injected",
3957
+ "actions": [],
3958
+ "credentials": [],
3959
+ "hooks": []
3960
+ },
3961
+ "composer": {
3962
+ "name": "composer",
3963
+ "description": "Rabit-internal agent service (rabit.lolo)",
3964
+ "category": "ai",
3965
+ "package": "(host-injected)",
3966
+ "backend": "host-injected",
3967
+ "actions": [],
3968
+ "credentials": [],
3969
+ "hooks": []
3970
+ },
3971
+ "coordinator": {
3972
+ "name": "coordinator",
3973
+ "description": "Rabit-internal agent service (rabit.lolo)",
3974
+ "category": "ai",
3975
+ "package": "(host-injected)",
3976
+ "backend": "host-injected",
3977
+ "actions": [],
3978
+ "credentials": [],
3979
+ "hooks": []
3980
+ },
3981
+ "planner": {
3982
+ "name": "planner",
3983
+ "description": "Rabit-internal agent service (rabit.lolo)",
3984
+ "category": "ai",
3985
+ "package": "(host-injected)",
3986
+ "backend": "host-injected",
3987
+ "actions": [],
3988
+ "credentials": [],
3989
+ "hooks": []
3990
+ },
3991
+ "repair": {
3992
+ "name": "repair",
3993
+ "description": "Rabit-internal agent service (rabit.lolo)",
3994
+ "category": "ai",
3995
+ "package": "(host-injected)",
3996
+ "backend": "host-injected",
3997
+ "actions": [],
3998
+ "credentials": [],
3999
+ "hooks": []
4000
+ },
4001
+ "validator": {
4002
+ "name": "validator",
4003
+ "description": "Rabit-internal agent service (rabit.lolo)",
4004
+ "category": "ai",
4005
+ "package": "(host-injected)",
4006
+ "backend": "host-injected",
4007
+ "actions": [],
4008
+ "credentials": [],
4009
+ "hooks": []
2647
4010
  }
2648
4011
  },
2649
4012
  "categories": [
2650
4013
  "ai",
2651
4014
  "auth",
2652
4015
  "devtools",
4016
+ "finance",
2653
4017
  "infrastructure",
4018
+ "marketing",
2654
4019
  "media",
2655
4020
  "messaging",
2656
- "payment"
4021
+ "payment",
4022
+ "reference"
2657
4023
  ]
2658
4024
  }