@bubblelab/bubble-core 0.1.216 → 0.1.218

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.
Files changed (155) hide show
  1. package/dist/bubble-bundle.d.ts +274 -188
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +8 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/agi-inc.d.ts +80 -80
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  7. package/dist/bubbles/service-bubble/airtable.d.ts +102 -102
  8. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +2 -2
  9. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +6 -6
  10. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +20 -20
  11. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +26 -26
  12. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +90 -90
  13. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +70 -70
  14. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +16 -16
  15. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +37 -37
  16. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +16 -16
  17. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +243 -243
  18. package/dist/bubbles/service-bubble/apify/apify.d.ts +30 -30
  19. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +64 -64
  20. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +86 -86
  21. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +42 -42
  22. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +42 -42
  23. package/dist/bubbles/service-bubble/attio/attio.d.ts +34 -34
  24. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +34 -34
  25. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +31 -31
  26. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +33 -33
  27. package/dist/bubbles/service-bubble/confluence/confluence.d.ts +24 -24
  28. package/dist/bubbles/service-bubble/confluence/confluence.schema.d.ts +24 -24
  29. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +126 -126
  30. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +158 -158
  31. package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
  32. package/dist/bubbles/service-bubble/firecrawl.d.ts +834 -834
  33. package/dist/bubbles/service-bubble/followupboss.d.ts +144 -144
  34. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +68 -68
  35. package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +108 -108
  36. package/dist/bubbles/service-bubble/github.d.ts +144 -144
  37. package/dist/bubbles/service-bubble/gmail.d.ts +240 -240
  38. package/dist/bubbles/service-bubble/google-calendar.d.ts +138 -138
  39. package/dist/bubbles/service-bubble/google-drive.d.ts +52 -52
  40. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +44 -44
  41. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +48 -48
  42. package/dist/bubbles/service-bubble/hello-world.d.ts +8 -8
  43. package/dist/bubbles/service-bubble/http.d.ts +18 -18
  44. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +8 -8
  45. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +8 -8
  46. package/dist/bubbles/service-bubble/insforge-db.d.ts +16 -16
  47. package/dist/bubbles/service-bubble/jira/jira.d.ts +60 -60
  48. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +62 -62
  49. package/dist/bubbles/service-bubble/linear/linear.d.ts +32 -32
  50. package/dist/bubbles/service-bubble/linear/linear.schema.d.ts +32 -32
  51. package/dist/bubbles/service-bubble/notion/notion.d.ts +682 -682
  52. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
  53. package/dist/bubbles/service-bubble/postgresql.d.ts +16 -16
  54. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +24 -24
  55. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +30 -30
  56. package/dist/bubbles/service-bubble/ramp/index.d.ts +5 -0
  57. package/dist/bubbles/service-bubble/ramp/index.d.ts.map +1 -0
  58. package/dist/bubbles/service-bubble/ramp/index.js +5 -0
  59. package/dist/bubbles/service-bubble/ramp/index.js.map +1 -0
  60. package/dist/bubbles/service-bubble/ramp/ramp.d.ts +1128 -0
  61. package/dist/bubbles/service-bubble/ramp/ramp.d.ts.map +1 -0
  62. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.d.ts +15 -0
  63. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.d.ts.map +1 -0
  64. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.js +169 -0
  65. package/dist/bubbles/service-bubble/ramp/ramp.integration.flow.js.map +1 -0
  66. package/dist/bubbles/service-bubble/ramp/ramp.js +183 -0
  67. package/dist/bubbles/service-bubble/ramp/ramp.js.map +1 -0
  68. package/dist/bubbles/service-bubble/ramp/ramp.schema.d.ts +1373 -0
  69. package/dist/bubbles/service-bubble/ramp/ramp.schema.d.ts.map +1 -0
  70. package/dist/bubbles/service-bubble/ramp/ramp.schema.js +536 -0
  71. package/dist/bubbles/service-bubble/ramp/ramp.schema.js.map +1 -0
  72. package/dist/bubbles/service-bubble/ramp/ramp.utils.d.ts +13 -0
  73. package/dist/bubbles/service-bubble/ramp/ramp.utils.d.ts.map +1 -0
  74. package/dist/bubbles/service-bubble/ramp/ramp.utils.js +36 -0
  75. package/dist/bubbles/service-bubble/ramp/ramp.utils.js.map +1 -0
  76. package/dist/bubbles/service-bubble/resend.d.ts +28 -28
  77. package/dist/bubbles/service-bubble/s3/s3.d.ts +10 -10
  78. package/dist/bubbles/service-bubble/s3/s3.schema.d.ts +10 -10
  79. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +10 -10
  80. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +12 -12
  81. package/dist/bubbles/service-bubble/slack/slack-table-blocks.d.ts +1 -0
  82. package/dist/bubbles/service-bubble/slack/slack-table-blocks.d.ts.map +1 -1
  83. package/dist/bubbles/service-bubble/slack/slack-table-blocks.js +1 -0
  84. package/dist/bubbles/service-bubble/slack/slack-table-blocks.js.map +1 -1
  85. package/dist/bubbles/service-bubble/slack/slack.d.ts +556 -556
  86. package/dist/bubbles/service-bubble/slack/slack.utils.d.ts.map +1 -1
  87. package/dist/bubbles/service-bubble/slack/slack.utils.js +63 -17
  88. package/dist/bubbles/service-bubble/slack/slack.utils.js.map +1 -1
  89. package/dist/bubbles/service-bubble/storage.d.ts +20 -20
  90. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +157 -157
  91. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +183 -183
  92. package/dist/bubbles/service-bubble/telegram.d.ts +1540 -1540
  93. package/dist/bubbles/service-bubble/xero/index.d.ts +3 -0
  94. package/dist/bubbles/service-bubble/xero/index.d.ts.map +1 -0
  95. package/dist/bubbles/service-bubble/xero/index.js +3 -0
  96. package/dist/bubbles/service-bubble/xero/index.js.map +1 -0
  97. package/dist/bubbles/service-bubble/xero/xero.d.ts +975 -0
  98. package/dist/bubbles/service-bubble/xero/xero.d.ts.map +1 -0
  99. package/dist/bubbles/service-bubble/xero/xero.js +477 -0
  100. package/dist/bubbles/service-bubble/xero/xero.js.map +1 -0
  101. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +924 -0
  102. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts.map +1 -0
  103. package/dist/bubbles/service-bubble/xero/xero.schema.js +366 -0
  104. package/dist/bubbles/service-bubble/xero/xero.schema.js.map +1 -0
  105. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +19 -19
  106. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +21 -21
  107. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +2 -2
  108. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.d.ts +2 -2
  109. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +2 -2
  110. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.d.ts +2 -2
  111. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +2 -2
  112. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.d.ts +2 -2
  113. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +2 -2
  114. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.d.ts +2 -2
  115. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +2 -2
  116. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +20 -20
  117. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +26 -26
  118. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
  119. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +62 -62
  120. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
  121. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
  122. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +4 -4
  123. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +14 -14
  124. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +567 -567
  125. package/dist/bubbles/tool-bubble/list-airtable-bases-tool.d.ts +4 -4
  126. package/dist/bubbles/tool-bubble/list-airtable-tables-tool.d.ts +4 -4
  127. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  128. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +4 -4
  129. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +58 -58
  130. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +28 -28
  131. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  132. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
  133. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +88 -88
  134. package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
  135. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +188 -188
  136. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +22 -22
  137. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
  138. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  139. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +8 -8
  140. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +26 -26
  141. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +38 -38
  142. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  143. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +40 -40
  144. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +8 -8
  145. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +72 -72
  146. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +32 -32
  147. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +32 -32
  148. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +104 -104
  149. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +8 -8
  150. package/dist/bubbles.json +2600 -2
  151. package/dist/index.d.ts +4 -0
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +2 -0
  154. package/dist/index.js.map +1 -1
  155. package/package.json +2 -2
package/dist/bubbles.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": "2.0.0",
3
- "generatedAt": "2026-03-05T16:12:41.288Z",
4
- "totalCount": 71,
3
+ "generatedAt": "2026-03-07T19:48:26.584Z",
4
+ "totalCount": 73,
5
5
  "bubbles": [
6
6
  {
7
7
  "name": "hello-world",
@@ -70298,6 +70298,2604 @@
70298
70298
  "requiredCredentials": [
70299
70299
  "ASSEMBLED_CRED"
70300
70300
  ]
70301
+ },
70302
+ {
70303
+ "name": "xero",
70304
+ "alias": "accounting",
70305
+ "type": "service",
70306
+ "shortDescription": "Xero accounting integration for invoices, contacts, and accounts",
70307
+ "useCase": "- Automated invoice creation and tracking",
70308
+ "outputSchema": "Complex schema - see usage example for structure",
70309
+ "inputJsonSchema": {
70310
+ "anyOf": [
70311
+ {
70312
+ "type": "object",
70313
+ "properties": {
70314
+ "operation": {
70315
+ "type": "string",
70316
+ "enum": [
70317
+ "create_invoice"
70318
+ ],
70319
+ "description": "Create a new invoice in Xero"
70320
+ },
70321
+ "type": {
70322
+ "type": "string",
70323
+ "enum": [
70324
+ "ACCREC",
70325
+ "ACCPAY"
70326
+ ],
70327
+ "description": "Invoice type: ACCREC for accounts receivable (sales invoice), ACCPAY for accounts payable (bill)"
70328
+ },
70329
+ "contact_id": {
70330
+ "type": "string",
70331
+ "minLength": 1,
70332
+ "description": "ContactID of the customer/supplier"
70333
+ },
70334
+ "line_items": {
70335
+ "type": "array",
70336
+ "items": {
70337
+ "type": "object",
70338
+ "properties": {
70339
+ "Description": {
70340
+ "type": "string",
70341
+ "description": "Description of the line item"
70342
+ },
70343
+ "Quantity": {
70344
+ "type": "number",
70345
+ "default": 1,
70346
+ "description": "Quantity of the line item (default 1)"
70347
+ },
70348
+ "UnitAmount": {
70349
+ "type": "number",
70350
+ "description": "Unit price of the line item"
70351
+ },
70352
+ "AccountCode": {
70353
+ "type": "string",
70354
+ "description": "Account code for the line item (e.g., \"200\" for Sales, \"400\" for Advertising)"
70355
+ },
70356
+ "TaxType": {
70357
+ "type": "string",
70358
+ "description": "Tax type for the line item (e.g., \"OUTPUT\", \"INPUT\")"
70359
+ },
70360
+ "ItemCode": {
70361
+ "type": "string",
70362
+ "description": "Item code from Xero inventory"
70363
+ }
70364
+ },
70365
+ "required": [
70366
+ "Description",
70367
+ "UnitAmount"
70368
+ ],
70369
+ "additionalProperties": false,
70370
+ "description": "A single invoice line item"
70371
+ },
70372
+ "minItems": 1,
70373
+ "description": "Line items for the invoice"
70374
+ },
70375
+ "date": {
70376
+ "type": "string",
70377
+ "description": "Invoice date in YYYY-MM-DD format (defaults to today)"
70378
+ },
70379
+ "due_date": {
70380
+ "type": "string",
70381
+ "description": "Due date in YYYY-MM-DD format"
70382
+ },
70383
+ "reference": {
70384
+ "type": "string",
70385
+ "description": "Reference number for the invoice"
70386
+ },
70387
+ "status": {
70388
+ "type": "string",
70389
+ "enum": [
70390
+ "DRAFT",
70391
+ "SUBMITTED",
70392
+ "AUTHORISED"
70393
+ ],
70394
+ "default": "DRAFT",
70395
+ "description": "Invoice status (default DRAFT)"
70396
+ },
70397
+ "currency_code": {
70398
+ "type": "string",
70399
+ "description": "Currency code (e.g., \"USD\", \"GBP\", \"AUD\")"
70400
+ },
70401
+ "credentials": {
70402
+ "type": "object",
70403
+ "additionalProperties": {
70404
+ "type": "string"
70405
+ },
70406
+ "description": "Object mapping credential types to values (injected at runtime)"
70407
+ }
70408
+ },
70409
+ "required": [
70410
+ "operation",
70411
+ "type",
70412
+ "contact_id",
70413
+ "line_items"
70414
+ ],
70415
+ "additionalProperties": false
70416
+ },
70417
+ {
70418
+ "type": "object",
70419
+ "properties": {
70420
+ "operation": {
70421
+ "type": "string",
70422
+ "enum": [
70423
+ "get_invoice"
70424
+ ],
70425
+ "description": "Retrieve a single invoice by ID"
70426
+ },
70427
+ "invoice_id": {
70428
+ "type": "string",
70429
+ "minLength": 1,
70430
+ "description": "Xero invoice UUID"
70431
+ },
70432
+ "credentials": {
70433
+ "type": "object",
70434
+ "additionalProperties": {
70435
+ "type": "string"
70436
+ },
70437
+ "description": "Object mapping credential types to values (injected at runtime)"
70438
+ }
70439
+ },
70440
+ "required": [
70441
+ "operation",
70442
+ "invoice_id"
70443
+ ],
70444
+ "additionalProperties": false
70445
+ },
70446
+ {
70447
+ "type": "object",
70448
+ "properties": {
70449
+ "operation": {
70450
+ "type": "string",
70451
+ "enum": [
70452
+ "list_invoices"
70453
+ ],
70454
+ "description": "List invoices with optional filters"
70455
+ },
70456
+ "status": {
70457
+ "type": "string",
70458
+ "enum": [
70459
+ "DRAFT",
70460
+ "SUBMITTED",
70461
+ "AUTHORISED",
70462
+ "PAID",
70463
+ "VOIDED",
70464
+ "DELETED"
70465
+ ],
70466
+ "description": "Filter by invoice status"
70467
+ },
70468
+ "page": {
70469
+ "type": "number",
70470
+ "minimum": 1,
70471
+ "default": 1,
70472
+ "description": "Page number for pagination (default 1)"
70473
+ },
70474
+ "where": {
70475
+ "type": "string",
70476
+ "description": "Xero filter expression (e.g., \"Type==\\\"ACCREC\\\"\", \"Contact.Name==\\\"John\\\"\")"
70477
+ },
70478
+ "credentials": {
70479
+ "type": "object",
70480
+ "additionalProperties": {
70481
+ "type": "string"
70482
+ },
70483
+ "description": "Object mapping credential types to values (injected at runtime)"
70484
+ }
70485
+ },
70486
+ "required": [
70487
+ "operation"
70488
+ ],
70489
+ "additionalProperties": false
70490
+ },
70491
+ {
70492
+ "type": "object",
70493
+ "properties": {
70494
+ "operation": {
70495
+ "type": "string",
70496
+ "enum": [
70497
+ "create_contact"
70498
+ ],
70499
+ "description": "Create a new contact (customer or supplier)"
70500
+ },
70501
+ "name": {
70502
+ "type": "string",
70503
+ "minLength": 1,
70504
+ "description": "Contact name (required, must be unique)"
70505
+ },
70506
+ "email": {
70507
+ "type": "string",
70508
+ "description": "Contact email address"
70509
+ },
70510
+ "first_name": {
70511
+ "type": "string",
70512
+ "description": "First name"
70513
+ },
70514
+ "last_name": {
70515
+ "type": "string",
70516
+ "description": "Last name"
70517
+ },
70518
+ "phone": {
70519
+ "type": "string",
70520
+ "description": "Phone number"
70521
+ },
70522
+ "account_number": {
70523
+ "type": "string",
70524
+ "description": "Account number for the contact"
70525
+ },
70526
+ "tax_number": {
70527
+ "type": "string",
70528
+ "description": "Tax number (ABN, VAT, GST number)"
70529
+ },
70530
+ "credentials": {
70531
+ "type": "object",
70532
+ "additionalProperties": {
70533
+ "type": "string"
70534
+ },
70535
+ "description": "Object mapping credential types to values (injected at runtime)"
70536
+ }
70537
+ },
70538
+ "required": [
70539
+ "operation",
70540
+ "name"
70541
+ ],
70542
+ "additionalProperties": false
70543
+ },
70544
+ {
70545
+ "type": "object",
70546
+ "properties": {
70547
+ "operation": {
70548
+ "type": "string",
70549
+ "enum": [
70550
+ "get_contact"
70551
+ ],
70552
+ "description": "Retrieve a single contact by ID"
70553
+ },
70554
+ "contact_id": {
70555
+ "type": "string",
70556
+ "minLength": 1,
70557
+ "description": "Xero contact UUID"
70558
+ },
70559
+ "credentials": {
70560
+ "type": "object",
70561
+ "additionalProperties": {
70562
+ "type": "string"
70563
+ },
70564
+ "description": "Object mapping credential types to values (injected at runtime)"
70565
+ }
70566
+ },
70567
+ "required": [
70568
+ "operation",
70569
+ "contact_id"
70570
+ ],
70571
+ "additionalProperties": false
70572
+ },
70573
+ {
70574
+ "type": "object",
70575
+ "properties": {
70576
+ "operation": {
70577
+ "type": "string",
70578
+ "enum": [
70579
+ "list_contacts"
70580
+ ],
70581
+ "description": "List contacts with optional filters"
70582
+ },
70583
+ "page": {
70584
+ "type": "number",
70585
+ "minimum": 1,
70586
+ "default": 1,
70587
+ "description": "Page number for pagination (default 1)"
70588
+ },
70589
+ "where": {
70590
+ "type": "string",
70591
+ "description": "Xero filter expression (e.g., \"Name.StartsWith(\\\"John\\\")\")"
70592
+ },
70593
+ "credentials": {
70594
+ "type": "object",
70595
+ "additionalProperties": {
70596
+ "type": "string"
70597
+ },
70598
+ "description": "Object mapping credential types to values (injected at runtime)"
70599
+ }
70600
+ },
70601
+ "required": [
70602
+ "operation"
70603
+ ],
70604
+ "additionalProperties": false
70605
+ },
70606
+ {
70607
+ "type": "object",
70608
+ "properties": {
70609
+ "operation": {
70610
+ "type": "string",
70611
+ "enum": [
70612
+ "list_accounts"
70613
+ ],
70614
+ "description": "List chart of accounts"
70615
+ },
70616
+ "type": {
70617
+ "type": "string",
70618
+ "description": "Filter by account type (e.g., \"REVENUE\", \"EXPENSE\", \"BANK\", \"CURRENT\")"
70619
+ },
70620
+ "credentials": {
70621
+ "type": "object",
70622
+ "additionalProperties": {
70623
+ "type": "string"
70624
+ },
70625
+ "description": "Object mapping credential types to values (injected at runtime)"
70626
+ }
70627
+ },
70628
+ "required": [
70629
+ "operation"
70630
+ ],
70631
+ "additionalProperties": false
70632
+ },
70633
+ {
70634
+ "type": "object",
70635
+ "properties": {
70636
+ "operation": {
70637
+ "type": "string",
70638
+ "enum": [
70639
+ "get_report"
70640
+ ],
70641
+ "description": "Retrieve a financial report from Xero"
70642
+ },
70643
+ "report_type": {
70644
+ "type": "string",
70645
+ "enum": [
70646
+ "BalanceSheet",
70647
+ "ProfitAndLoss",
70648
+ "TrialBalance",
70649
+ "BankSummary",
70650
+ "ExecutiveSummary",
70651
+ "BudgetSummary",
70652
+ "AgedReceivablesByContact",
70653
+ "AgedPayablesByContact"
70654
+ ],
70655
+ "description": "The type of report to generate"
70656
+ },
70657
+ "date": {
70658
+ "type": "string",
70659
+ "description": "Report date in YYYY-MM-DD format. \"As at\" date for BalanceSheet/TrialBalance/ExecutiveSummary. Not used for ProfitAndLoss (use from_date/to_date)."
70660
+ },
70661
+ "from_date": {
70662
+ "type": "string",
70663
+ "description": "Start date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports."
70664
+ },
70665
+ "to_date": {
70666
+ "type": "string",
70667
+ "description": "End date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports."
70668
+ },
70669
+ "periods": {
70670
+ "type": "number",
70671
+ "description": "Number of comparison periods (1-11 for most reports, 1-12 for BudgetSummary)"
70672
+ },
70673
+ "timeframe": {
70674
+ "type": "string",
70675
+ "enum": [
70676
+ "MONTH",
70677
+ "QUARTER",
70678
+ "YEAR"
70679
+ ],
70680
+ "description": "Timeframe for comparison periods (MONTH, QUARTER, or YEAR)"
70681
+ },
70682
+ "contact_id": {
70683
+ "type": "string",
70684
+ "description": "Contact UUID — required for AgedReceivablesByContact and AgedPayablesByContact"
70685
+ },
70686
+ "payments_only": {
70687
+ "type": "boolean",
70688
+ "description": "Set true for cash-basis reporting (BalanceSheet, ProfitAndLoss, TrialBalance only)"
70689
+ },
70690
+ "tracking_category_id": {
70691
+ "type": "string",
70692
+ "description": "Optional tracking category ID to filter the report by"
70693
+ },
70694
+ "tracking_option_id": {
70695
+ "type": "string",
70696
+ "description": "Optional tracking option ID (requires tracking_category_id)"
70697
+ },
70698
+ "credentials": {
70699
+ "type": "object",
70700
+ "additionalProperties": {
70701
+ "type": "string"
70702
+ },
70703
+ "description": "Object mapping credential types to values (injected at runtime)"
70704
+ }
70705
+ },
70706
+ "required": [
70707
+ "operation",
70708
+ "report_type"
70709
+ ],
70710
+ "additionalProperties": false
70711
+ }
70712
+ ]
70713
+ },
70714
+ "outputJsonSchema": {
70715
+ "anyOf": [
70716
+ {
70717
+ "type": "object",
70718
+ "properties": {
70719
+ "operation": {
70720
+ "type": "string",
70721
+ "enum": [
70722
+ "create_invoice"
70723
+ ]
70724
+ },
70725
+ "success": {
70726
+ "type": "boolean",
70727
+ "description": "Whether the operation was successful"
70728
+ },
70729
+ "invoice": {
70730
+ "type": "object",
70731
+ "properties": {
70732
+ "InvoiceID": {
70733
+ "type": "string",
70734
+ "description": "Invoice UUID"
70735
+ },
70736
+ "InvoiceNumber": {
70737
+ "type": "string",
70738
+ "description": "Invoice number"
70739
+ },
70740
+ "Type": {
70741
+ "type": "string",
70742
+ "description": "Invoice type (ACCREC or ACCPAY)"
70743
+ },
70744
+ "Status": {
70745
+ "type": "string",
70746
+ "description": "Invoice status"
70747
+ },
70748
+ "Contact": {
70749
+ "type": "object",
70750
+ "properties": {
70751
+ "ContactID": {
70752
+ "type": "string"
70753
+ },
70754
+ "Name": {
70755
+ "type": "string"
70756
+ }
70757
+ },
70758
+ "required": [
70759
+ "ContactID"
70760
+ ],
70761
+ "additionalProperties": false,
70762
+ "description": "Associated contact"
70763
+ },
70764
+ "Date": {
70765
+ "type": "string",
70766
+ "description": "Invoice date"
70767
+ },
70768
+ "DueDate": {
70769
+ "type": "string",
70770
+ "description": "Due date"
70771
+ },
70772
+ "SubTotal": {
70773
+ "type": "number",
70774
+ "description": "Total before tax"
70775
+ },
70776
+ "Total": {
70777
+ "type": "number",
70778
+ "description": "Total amount including tax"
70779
+ },
70780
+ "AmountDue": {
70781
+ "type": "number",
70782
+ "description": "Amount due"
70783
+ },
70784
+ "AmountPaid": {
70785
+ "type": "number",
70786
+ "description": "Amount paid"
70787
+ },
70788
+ "CurrencyCode": {
70789
+ "type": "string",
70790
+ "description": "Currency code"
70791
+ },
70792
+ "Reference": {
70793
+ "type": "string",
70794
+ "description": "Reference"
70795
+ },
70796
+ "LineItems": {
70797
+ "type": "array",
70798
+ "items": {
70799
+ "type": "object",
70800
+ "additionalProperties": {}
70801
+ },
70802
+ "description": "Line items"
70803
+ }
70804
+ },
70805
+ "required": [
70806
+ "InvoiceID",
70807
+ "Type",
70808
+ "Status"
70809
+ ],
70810
+ "additionalProperties": false,
70811
+ "description": "Created invoice"
70812
+ },
70813
+ "error": {
70814
+ "type": "string",
70815
+ "description": "Error message if operation failed"
70816
+ }
70817
+ },
70818
+ "required": [
70819
+ "operation",
70820
+ "success",
70821
+ "error"
70822
+ ],
70823
+ "additionalProperties": false
70824
+ },
70825
+ {
70826
+ "type": "object",
70827
+ "properties": {
70828
+ "operation": {
70829
+ "type": "string",
70830
+ "enum": [
70831
+ "get_invoice"
70832
+ ]
70833
+ },
70834
+ "success": {
70835
+ "type": "boolean",
70836
+ "description": "Whether the operation was successful"
70837
+ },
70838
+ "invoice": {
70839
+ "type": "object",
70840
+ "properties": {
70841
+ "InvoiceID": {
70842
+ "type": "string",
70843
+ "description": "Invoice UUID"
70844
+ },
70845
+ "InvoiceNumber": {
70846
+ "type": "string",
70847
+ "description": "Invoice number"
70848
+ },
70849
+ "Type": {
70850
+ "type": "string",
70851
+ "description": "Invoice type (ACCREC or ACCPAY)"
70852
+ },
70853
+ "Status": {
70854
+ "type": "string",
70855
+ "description": "Invoice status"
70856
+ },
70857
+ "Contact": {
70858
+ "type": "object",
70859
+ "properties": {
70860
+ "ContactID": {
70861
+ "type": "string"
70862
+ },
70863
+ "Name": {
70864
+ "type": "string"
70865
+ }
70866
+ },
70867
+ "required": [
70868
+ "ContactID"
70869
+ ],
70870
+ "additionalProperties": false,
70871
+ "description": "Associated contact"
70872
+ },
70873
+ "Date": {
70874
+ "type": "string",
70875
+ "description": "Invoice date"
70876
+ },
70877
+ "DueDate": {
70878
+ "type": "string",
70879
+ "description": "Due date"
70880
+ },
70881
+ "SubTotal": {
70882
+ "type": "number",
70883
+ "description": "Total before tax"
70884
+ },
70885
+ "Total": {
70886
+ "type": "number",
70887
+ "description": "Total amount including tax"
70888
+ },
70889
+ "AmountDue": {
70890
+ "type": "number",
70891
+ "description": "Amount due"
70892
+ },
70893
+ "AmountPaid": {
70894
+ "type": "number",
70895
+ "description": "Amount paid"
70896
+ },
70897
+ "CurrencyCode": {
70898
+ "type": "string",
70899
+ "description": "Currency code"
70900
+ },
70901
+ "Reference": {
70902
+ "type": "string",
70903
+ "description": "Reference"
70904
+ },
70905
+ "LineItems": {
70906
+ "type": "array",
70907
+ "items": {
70908
+ "type": "object",
70909
+ "additionalProperties": {}
70910
+ },
70911
+ "description": "Line items"
70912
+ }
70913
+ },
70914
+ "required": [
70915
+ "InvoiceID",
70916
+ "Type",
70917
+ "Status"
70918
+ ],
70919
+ "additionalProperties": false,
70920
+ "description": "Retrieved invoice"
70921
+ },
70922
+ "error": {
70923
+ "type": "string",
70924
+ "description": "Error message if operation failed"
70925
+ }
70926
+ },
70927
+ "required": [
70928
+ "operation",
70929
+ "success",
70930
+ "error"
70931
+ ],
70932
+ "additionalProperties": false
70933
+ },
70934
+ {
70935
+ "type": "object",
70936
+ "properties": {
70937
+ "operation": {
70938
+ "type": "string",
70939
+ "enum": [
70940
+ "list_invoices"
70941
+ ]
70942
+ },
70943
+ "success": {
70944
+ "type": "boolean",
70945
+ "description": "Whether the operation was successful"
70946
+ },
70947
+ "invoices": {
70948
+ "type": "array",
70949
+ "items": {
70950
+ "type": "object",
70951
+ "properties": {
70952
+ "InvoiceID": {
70953
+ "type": "string",
70954
+ "description": "Invoice UUID"
70955
+ },
70956
+ "InvoiceNumber": {
70957
+ "type": "string",
70958
+ "description": "Invoice number"
70959
+ },
70960
+ "Type": {
70961
+ "type": "string",
70962
+ "description": "Invoice type (ACCREC or ACCPAY)"
70963
+ },
70964
+ "Status": {
70965
+ "type": "string",
70966
+ "description": "Invoice status"
70967
+ },
70968
+ "Contact": {
70969
+ "type": "object",
70970
+ "properties": {
70971
+ "ContactID": {
70972
+ "type": "string"
70973
+ },
70974
+ "Name": {
70975
+ "type": "string"
70976
+ }
70977
+ },
70978
+ "required": [
70979
+ "ContactID"
70980
+ ],
70981
+ "additionalProperties": false,
70982
+ "description": "Associated contact"
70983
+ },
70984
+ "Date": {
70985
+ "type": "string",
70986
+ "description": "Invoice date"
70987
+ },
70988
+ "DueDate": {
70989
+ "type": "string",
70990
+ "description": "Due date"
70991
+ },
70992
+ "SubTotal": {
70993
+ "type": "number",
70994
+ "description": "Total before tax"
70995
+ },
70996
+ "Total": {
70997
+ "type": "number",
70998
+ "description": "Total amount including tax"
70999
+ },
71000
+ "AmountDue": {
71001
+ "type": "number",
71002
+ "description": "Amount due"
71003
+ },
71004
+ "AmountPaid": {
71005
+ "type": "number",
71006
+ "description": "Amount paid"
71007
+ },
71008
+ "CurrencyCode": {
71009
+ "type": "string",
71010
+ "description": "Currency code"
71011
+ },
71012
+ "Reference": {
71013
+ "type": "string",
71014
+ "description": "Reference"
71015
+ },
71016
+ "LineItems": {
71017
+ "type": "array",
71018
+ "items": {
71019
+ "type": "object",
71020
+ "additionalProperties": {}
71021
+ },
71022
+ "description": "Line items"
71023
+ }
71024
+ },
71025
+ "required": [
71026
+ "InvoiceID",
71027
+ "Type",
71028
+ "Status"
71029
+ ],
71030
+ "additionalProperties": false,
71031
+ "description": "A Xero invoice"
71032
+ },
71033
+ "description": "List of invoices"
71034
+ },
71035
+ "error": {
71036
+ "type": "string",
71037
+ "description": "Error message if operation failed"
71038
+ }
71039
+ },
71040
+ "required": [
71041
+ "operation",
71042
+ "success",
71043
+ "error"
71044
+ ],
71045
+ "additionalProperties": false
71046
+ },
71047
+ {
71048
+ "type": "object",
71049
+ "properties": {
71050
+ "operation": {
71051
+ "type": "string",
71052
+ "enum": [
71053
+ "create_contact"
71054
+ ]
71055
+ },
71056
+ "success": {
71057
+ "type": "boolean",
71058
+ "description": "Whether the operation was successful"
71059
+ },
71060
+ "contact": {
71061
+ "type": "object",
71062
+ "properties": {
71063
+ "ContactID": {
71064
+ "type": "string",
71065
+ "description": "Contact UUID"
71066
+ },
71067
+ "Name": {
71068
+ "type": "string",
71069
+ "description": "Contact name"
71070
+ },
71071
+ "FirstName": {
71072
+ "type": "string",
71073
+ "description": "First name"
71074
+ },
71075
+ "LastName": {
71076
+ "type": "string",
71077
+ "description": "Last name"
71078
+ },
71079
+ "EmailAddress": {
71080
+ "type": "string",
71081
+ "description": "Email address"
71082
+ },
71083
+ "AccountNumber": {
71084
+ "type": "string",
71085
+ "description": "Account number"
71086
+ },
71087
+ "TaxNumber": {
71088
+ "type": "string",
71089
+ "description": "Tax number"
71090
+ },
71091
+ "ContactStatus": {
71092
+ "type": "string",
71093
+ "description": "Contact status"
71094
+ },
71095
+ "Phones": {
71096
+ "type": "array",
71097
+ "items": {
71098
+ "type": "object",
71099
+ "additionalProperties": {}
71100
+ },
71101
+ "description": "Phone numbers"
71102
+ },
71103
+ "Addresses": {
71104
+ "type": "array",
71105
+ "items": {
71106
+ "type": "object",
71107
+ "additionalProperties": {}
71108
+ },
71109
+ "description": "Addresses"
71110
+ }
71111
+ },
71112
+ "required": [
71113
+ "ContactID",
71114
+ "Name"
71115
+ ],
71116
+ "additionalProperties": false,
71117
+ "description": "Created contact"
71118
+ },
71119
+ "error": {
71120
+ "type": "string",
71121
+ "description": "Error message if operation failed"
71122
+ }
71123
+ },
71124
+ "required": [
71125
+ "operation",
71126
+ "success",
71127
+ "error"
71128
+ ],
71129
+ "additionalProperties": false
71130
+ },
71131
+ {
71132
+ "type": "object",
71133
+ "properties": {
71134
+ "operation": {
71135
+ "type": "string",
71136
+ "enum": [
71137
+ "get_contact"
71138
+ ]
71139
+ },
71140
+ "success": {
71141
+ "type": "boolean",
71142
+ "description": "Whether the operation was successful"
71143
+ },
71144
+ "contact": {
71145
+ "type": "object",
71146
+ "properties": {
71147
+ "ContactID": {
71148
+ "type": "string",
71149
+ "description": "Contact UUID"
71150
+ },
71151
+ "Name": {
71152
+ "type": "string",
71153
+ "description": "Contact name"
71154
+ },
71155
+ "FirstName": {
71156
+ "type": "string",
71157
+ "description": "First name"
71158
+ },
71159
+ "LastName": {
71160
+ "type": "string",
71161
+ "description": "Last name"
71162
+ },
71163
+ "EmailAddress": {
71164
+ "type": "string",
71165
+ "description": "Email address"
71166
+ },
71167
+ "AccountNumber": {
71168
+ "type": "string",
71169
+ "description": "Account number"
71170
+ },
71171
+ "TaxNumber": {
71172
+ "type": "string",
71173
+ "description": "Tax number"
71174
+ },
71175
+ "ContactStatus": {
71176
+ "type": "string",
71177
+ "description": "Contact status"
71178
+ },
71179
+ "Phones": {
71180
+ "type": "array",
71181
+ "items": {
71182
+ "type": "object",
71183
+ "additionalProperties": {}
71184
+ },
71185
+ "description": "Phone numbers"
71186
+ },
71187
+ "Addresses": {
71188
+ "type": "array",
71189
+ "items": {
71190
+ "type": "object",
71191
+ "additionalProperties": {}
71192
+ },
71193
+ "description": "Addresses"
71194
+ }
71195
+ },
71196
+ "required": [
71197
+ "ContactID",
71198
+ "Name"
71199
+ ],
71200
+ "additionalProperties": false,
71201
+ "description": "Retrieved contact"
71202
+ },
71203
+ "error": {
71204
+ "type": "string",
71205
+ "description": "Error message if operation failed"
71206
+ }
71207
+ },
71208
+ "required": [
71209
+ "operation",
71210
+ "success",
71211
+ "error"
71212
+ ],
71213
+ "additionalProperties": false
71214
+ },
71215
+ {
71216
+ "type": "object",
71217
+ "properties": {
71218
+ "operation": {
71219
+ "type": "string",
71220
+ "enum": [
71221
+ "list_contacts"
71222
+ ]
71223
+ },
71224
+ "success": {
71225
+ "type": "boolean",
71226
+ "description": "Whether the operation was successful"
71227
+ },
71228
+ "contacts": {
71229
+ "type": "array",
71230
+ "items": {
71231
+ "type": "object",
71232
+ "properties": {
71233
+ "ContactID": {
71234
+ "type": "string",
71235
+ "description": "Contact UUID"
71236
+ },
71237
+ "Name": {
71238
+ "type": "string",
71239
+ "description": "Contact name"
71240
+ },
71241
+ "FirstName": {
71242
+ "type": "string",
71243
+ "description": "First name"
71244
+ },
71245
+ "LastName": {
71246
+ "type": "string",
71247
+ "description": "Last name"
71248
+ },
71249
+ "EmailAddress": {
71250
+ "type": "string",
71251
+ "description": "Email address"
71252
+ },
71253
+ "AccountNumber": {
71254
+ "type": "string",
71255
+ "description": "Account number"
71256
+ },
71257
+ "TaxNumber": {
71258
+ "type": "string",
71259
+ "description": "Tax number"
71260
+ },
71261
+ "ContactStatus": {
71262
+ "type": "string",
71263
+ "description": "Contact status"
71264
+ },
71265
+ "Phones": {
71266
+ "type": "array",
71267
+ "items": {
71268
+ "type": "object",
71269
+ "additionalProperties": {}
71270
+ },
71271
+ "description": "Phone numbers"
71272
+ },
71273
+ "Addresses": {
71274
+ "type": "array",
71275
+ "items": {
71276
+ "type": "object",
71277
+ "additionalProperties": {}
71278
+ },
71279
+ "description": "Addresses"
71280
+ }
71281
+ },
71282
+ "required": [
71283
+ "ContactID",
71284
+ "Name"
71285
+ ],
71286
+ "additionalProperties": false,
71287
+ "description": "A Xero contact"
71288
+ },
71289
+ "description": "List of contacts"
71290
+ },
71291
+ "error": {
71292
+ "type": "string",
71293
+ "description": "Error message if operation failed"
71294
+ }
71295
+ },
71296
+ "required": [
71297
+ "operation",
71298
+ "success",
71299
+ "error"
71300
+ ],
71301
+ "additionalProperties": false
71302
+ },
71303
+ {
71304
+ "type": "object",
71305
+ "properties": {
71306
+ "operation": {
71307
+ "type": "string",
71308
+ "enum": [
71309
+ "list_accounts"
71310
+ ]
71311
+ },
71312
+ "success": {
71313
+ "type": "boolean",
71314
+ "description": "Whether the operation was successful"
71315
+ },
71316
+ "accounts": {
71317
+ "type": "array",
71318
+ "items": {
71319
+ "type": "object",
71320
+ "properties": {
71321
+ "AccountID": {
71322
+ "type": "string",
71323
+ "description": "Account UUID"
71324
+ },
71325
+ "Code": {
71326
+ "type": "string",
71327
+ "description": "Account code"
71328
+ },
71329
+ "Name": {
71330
+ "type": "string",
71331
+ "description": "Account name"
71332
+ },
71333
+ "Type": {
71334
+ "type": "string",
71335
+ "description": "Account type"
71336
+ },
71337
+ "Status": {
71338
+ "type": "string",
71339
+ "description": "Account status"
71340
+ },
71341
+ "Description": {
71342
+ "type": "string",
71343
+ "description": "Account description"
71344
+ },
71345
+ "Class": {
71346
+ "type": "string",
71347
+ "description": "Account class"
71348
+ },
71349
+ "TaxType": {
71350
+ "type": "string",
71351
+ "description": "Tax type"
71352
+ }
71353
+ },
71354
+ "required": [
71355
+ "AccountID",
71356
+ "Name",
71357
+ "Type"
71358
+ ],
71359
+ "additionalProperties": false,
71360
+ "description": "A Xero account"
71361
+ },
71362
+ "description": "List of accounts"
71363
+ },
71364
+ "error": {
71365
+ "type": "string",
71366
+ "description": "Error message if operation failed"
71367
+ }
71368
+ },
71369
+ "required": [
71370
+ "operation",
71371
+ "success",
71372
+ "error"
71373
+ ],
71374
+ "additionalProperties": false
71375
+ },
71376
+ {
71377
+ "type": "object",
71378
+ "properties": {
71379
+ "operation": {
71380
+ "type": "string",
71381
+ "enum": [
71382
+ "get_report"
71383
+ ]
71384
+ },
71385
+ "success": {
71386
+ "type": "boolean",
71387
+ "description": "Whether the operation was successful"
71388
+ },
71389
+ "report": {
71390
+ "type": "object",
71391
+ "properties": {
71392
+ "reportName": {
71393
+ "type": "string",
71394
+ "description": "Report title"
71395
+ },
71396
+ "reportType": {
71397
+ "type": "string",
71398
+ "description": "Report type identifier"
71399
+ },
71400
+ "reportDate": {
71401
+ "type": "string",
71402
+ "description": "Report date"
71403
+ },
71404
+ "reportTitles": {
71405
+ "type": "array",
71406
+ "items": {
71407
+ "type": "string"
71408
+ },
71409
+ "description": "Report title lines (e.g., org name, date range)"
71410
+ },
71411
+ "rows": {
71412
+ "type": "array",
71413
+ "items": {
71414
+ "type": "object",
71415
+ "properties": {
71416
+ "rowType": {
71417
+ "type": "string",
71418
+ "description": "Row type: Header, Section, Row, SummaryRow"
71419
+ },
71420
+ "title": {
71421
+ "type": "string",
71422
+ "description": "Section title"
71423
+ },
71424
+ "cells": {
71425
+ "type": "array",
71426
+ "items": {
71427
+ "type": "object",
71428
+ "properties": {
71429
+ "value": {
71430
+ "type": "string",
71431
+ "description": "Cell display value"
71432
+ },
71433
+ "accountId": {
71434
+ "type": "string",
71435
+ "description": "Account UUID if this row is an account"
71436
+ }
71437
+ },
71438
+ "required": [
71439
+ "value"
71440
+ ],
71441
+ "additionalProperties": false
71442
+ },
71443
+ "description": "Cell values for this row"
71444
+ },
71445
+ "rows": {
71446
+ "type": "array",
71447
+ "items": {
71448
+ "type": "object",
71449
+ "additionalProperties": {}
71450
+ },
71451
+ "description": "Nested rows within a section"
71452
+ }
71453
+ },
71454
+ "required": [
71455
+ "rowType"
71456
+ ],
71457
+ "additionalProperties": false
71458
+ },
71459
+ "description": "Report rows"
71460
+ }
71461
+ },
71462
+ "required": [
71463
+ "reportName",
71464
+ "reportType",
71465
+ "rows"
71466
+ ],
71467
+ "additionalProperties": false,
71468
+ "description": "Parsed report data"
71469
+ },
71470
+ "error": {
71471
+ "type": "string",
71472
+ "description": "Error message if operation failed"
71473
+ }
71474
+ },
71475
+ "required": [
71476
+ "operation",
71477
+ "success",
71478
+ "error"
71479
+ ],
71480
+ "additionalProperties": false
71481
+ }
71482
+ ]
71483
+ },
71484
+ "usageExample": "// Create Invoice example\nconst xero_create_invoice = new XeroBubble({\n operation: \"create_invoice\", // Create a new invoice in Xero\n type: \"ACCREC\" // options: \"ACCREC\", \"ACCPAY\", // Invoice type: ACCREC for accounts receivable (sales invoice), ACCPAY for accounts payable (bill)\n contact_id: \"example string\", // ContactID of the customer/supplier\n line_items: [{ Description: \"example string\" // Description of the line item, Quantity: 1 // default // Quantity of the line item (default 1), UnitAmount: 42 // Unit price of the line item, AccountCode: \"example string\" // Account code for the line item (e.g., \"200\" for Sales, \"400\" for Advertising), TaxType: \"example string\" // Tax type for the line item (e.g., \"OUTPUT\", \"INPUT\"), ItemCode: \"example string\" // Item code from Xero inventory }], // Line items for the invoice\n date: \"example string\", // Invoice date in YYYY-MM-DD format (defaults to today)\n due_date: \"example string\", // Due date in YYYY-MM-DD format\n reference: \"example string\", // Reference number for the invoice\n status: \"DRAFT\" // options: \"DRAFT\", \"SUBMITTED\", \"AUTHORISED\", // Invoice status (default DRAFT)\n currency_code: \"example string\", // Currency code (e.g., \"USD\", \"GBP\", \"AUD\")\n});\n\nconst result = await xero_create_invoice.action();\n// outputSchema for result.data when operation === 'create_invoice':\n// {\n// operation: \"create_invoice\",\n// success: boolean // Whether the operation was successful,\n// invoice: { InvoiceID: string // Invoice UUID, InvoiceNumber: string | undefined // Invoice number, Type: string // Invoice type (ACCREC or ACCPAY), Status: string // Invoice status, Contact: { ContactID: string, Name: string | undefined } | undefined // Associated contact, Date: string | undefined // Invoice date, DueDate: string | undefined // Due date, SubTotal: number | undefined // Total before tax, Total: number | undefined // Total amount including tax, AmountDue: number | undefined // Amount due, AmountPaid: number | undefined // Amount paid, CurrencyCode: string | undefined // Currency code, Reference: string | undefined // Reference, LineItems: Record<string, unknown>[] | undefined // Line items } | undefined // Created invoice,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Invoice example\nconst xero_get_invoice = new XeroBubble({\n operation: \"get_invoice\", // Retrieve a single invoice by ID\n invoice_id: \"example string\", // Xero invoice UUID\n});\n\nconst result = await xero_get_invoice.action();\n// outputSchema for result.data when operation === 'get_invoice':\n// {\n// operation: \"get_invoice\",\n// success: boolean // Whether the operation was successful,\n// invoice: { InvoiceID: string // Invoice UUID, InvoiceNumber: string | undefined // Invoice number, Type: string // Invoice type (ACCREC or ACCPAY), Status: string // Invoice status, Contact: { ContactID: string, Name: string | undefined } | undefined // Associated contact, Date: string | undefined // Invoice date, DueDate: string | undefined // Due date, SubTotal: number | undefined // Total before tax, Total: number | undefined // Total amount including tax, AmountDue: number | undefined // Amount due, AmountPaid: number | undefined // Amount paid, CurrencyCode: string | undefined // Currency code, Reference: string | undefined // Reference, LineItems: Record<string, unknown>[] | undefined // Line items } | undefined // Retrieved invoice,\n// error: string // Error message if operation failed\n// }\n\n\n// List Invoices example\nconst xero_list_invoices = new XeroBubble({\n operation: \"list_invoices\", // List invoices with optional filters\n status: \"DRAFT\" // options: \"DRAFT\", \"SUBMITTED\", \"AUTHORISED\", \"PAID\", \"VOIDED\", \"DELETED\", // Filter by invoice status\n page: 1 // default, // Page number for pagination (default 1)\n where: \"example string\", // Xero filter expression (e.g., \"Type==\\\"ACCREC\\\"\", \"Contact.Name==\\\"John\\\"\")\n});\n\nconst result = await xero_list_invoices.action();\n// outputSchema for result.data when operation === 'list_invoices':\n// {\n// operation: \"list_invoices\",\n// success: boolean // Whether the operation was successful,\n// invoices: { InvoiceID: string // Invoice UUID, InvoiceNumber: string | undefined // Invoice number, Type: string // Invoice type (ACCREC or ACCPAY), Status: string // Invoice status, Contact: { ContactID: string, Name: string | undefined } | undefined // Associated contact, Date: string | undefined // Invoice date, DueDate: string | undefined // Due date, SubTotal: number | undefined // Total before tax, Total: number | undefined // Total amount including tax, AmountDue: number | undefined // Amount due, AmountPaid: number | undefined // Amount paid, CurrencyCode: string | undefined // Currency code, Reference: string | undefined // Reference, LineItems: Record<string, unknown>[] | undefined // Line items }[] | undefined // List of invoices,\n// error: string // Error message if operation failed\n// }\n\n\n// Create Contact example\nconst xero_create_contact = new XeroBubble({\n operation: \"create_contact\", // Create a new contact (customer or supplier)\n name: \"example string\", // Contact name (required, must be unique)\n email: \"example string\", // Contact email address\n first_name: \"example string\", // First name\n last_name: \"example string\", // Last name\n phone: \"example string\", // Phone number\n account_number: \"example string\", // Account number for the contact\n tax_number: \"example string\", // Tax number (ABN, VAT, GST number)\n});\n\nconst result = await xero_create_contact.action();\n// outputSchema for result.data when operation === 'create_contact':\n// {\n// operation: \"create_contact\",\n// success: boolean // Whether the operation was successful,\n// contact: { ContactID: string // Contact UUID, Name: string // Contact name, FirstName: string | undefined // First name, LastName: string | undefined // Last name, EmailAddress: string | undefined // Email address, AccountNumber: string | undefined // Account number, TaxNumber: string | undefined // Tax number, ContactStatus: string | undefined // Contact status, Phones: Record<string, unknown>[] | undefined // Phone numbers, Addresses: Record<string, unknown>[] | undefined // Addresses } | undefined // Created contact,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Contact example\nconst xero_get_contact = new XeroBubble({\n operation: \"get_contact\", // Retrieve a single contact by ID\n contact_id: \"example string\", // Xero contact UUID\n});\n\nconst result = await xero_get_contact.action();\n// outputSchema for result.data when operation === 'get_contact':\n// {\n// operation: \"get_contact\",\n// success: boolean // Whether the operation was successful,\n// contact: { ContactID: string // Contact UUID, Name: string // Contact name, FirstName: string | undefined // First name, LastName: string | undefined // Last name, EmailAddress: string | undefined // Email address, AccountNumber: string | undefined // Account number, TaxNumber: string | undefined // Tax number, ContactStatus: string | undefined // Contact status, Phones: Record<string, unknown>[] | undefined // Phone numbers, Addresses: Record<string, unknown>[] | undefined // Addresses } | undefined // Retrieved contact,\n// error: string // Error message if operation failed\n// }\n\n\n// List Contacts example\nconst xero_list_contacts = new XeroBubble({\n operation: \"list_contacts\", // List contacts with optional filters\n page: 1 // default, // Page number for pagination (default 1)\n where: \"example string\", // Xero filter expression (e.g., \"Name.StartsWith(\\\"John\\\")\")\n});\n\nconst result = await xero_list_contacts.action();\n// outputSchema for result.data when operation === 'list_contacts':\n// {\n// operation: \"list_contacts\",\n// success: boolean // Whether the operation was successful,\n// contacts: { ContactID: string // Contact UUID, Name: string // Contact name, FirstName: string | undefined // First name, LastName: string | undefined // Last name, EmailAddress: string | undefined // Email address, AccountNumber: string | undefined // Account number, TaxNumber: string | undefined // Tax number, ContactStatus: string | undefined // Contact status, Phones: Record<string, unknown>[] | undefined // Phone numbers, Addresses: Record<string, unknown>[] | undefined // Addresses }[] | undefined // List of contacts,\n// error: string // Error message if operation failed\n// }\n\n\n// List Accounts example\nconst xero_list_accounts = new XeroBubble({\n operation: \"list_accounts\", // List chart of accounts\n type: \"example string\", // Filter by account type (e.g., \"REVENUE\", \"EXPENSE\", \"BANK\", \"CURRENT\")\n});\n\nconst result = await xero_list_accounts.action();\n// outputSchema for result.data when operation === 'list_accounts':\n// {\n// operation: \"list_accounts\",\n// success: boolean // Whether the operation was successful,\n// accounts: { AccountID: string // Account UUID, Code: string | undefined // Account code, Name: string // Account name, Type: string // Account type, Status: string | undefined // Account status, Description: string | undefined // Account description, Class: string | undefined // Account class, TaxType: string | undefined // Tax type }[] | undefined // List of accounts,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Report example\nconst xero_get_report = new XeroBubble({\n operation: \"get_report\", // Retrieve a financial report from Xero\n report_type: \"BalanceSheet\" // options: \"BalanceSheet\", \"ProfitAndLoss\", \"TrialBalance\", \"BankSummary\", \"ExecutiveSummary\", \"BudgetSummary\", \"AgedReceivablesByContact\", \"AgedPayablesByContact\", // The type of report to generate\n date: \"example string\", // Report date in YYYY-MM-DD format. \"As at\" date for BalanceSheet/TrialBalance/ExecutiveSummary. Not used for ProfitAndLoss (use from_date/to_date).\n from_date: \"example string\", // Start date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports.\n to_date: \"example string\", // End date in YYYY-MM-DD format. Used by ProfitAndLoss, BankSummary, and aged reports.\n periods: 42, // Number of comparison periods (1-11 for most reports, 1-12 for BudgetSummary)\n timeframe: \"MONTH\" // options: \"MONTH\", \"QUARTER\", \"YEAR\", // Timeframe for comparison periods (MONTH, QUARTER, or YEAR)\n contact_id: \"example string\", // Contact UUID — required for AgedReceivablesByContact and AgedPayablesByContact\n payments_only: true, // Set true for cash-basis reporting (BalanceSheet, ProfitAndLoss, TrialBalance only)\n tracking_category_id: \"example string\", // Optional tracking category ID to filter the report by\n tracking_option_id: \"example string\", // Optional tracking option ID (requires tracking_category_id)\n});\n\nconst result = await xero_get_report.action();\n// outputSchema for result.data when operation === 'get_report':\n// {\n// operation: \"get_report\",\n// success: boolean // Whether the operation was successful,\n// report: { reportName: string // Report title, reportType: string // Report type identifier, reportDate: string | undefined // Report date, reportTitles: string[] | undefined // Report title lines (e.g., org name, date range), rows: { rowType: string // Row type: Header, Section, Row, SummaryRow, title: string | undefined // Section title, cells: { value: string // Cell display value, accountId: string | undefined // Account UUID if this row is an account }[] | undefined // Cell values for this row, rows: Record<string, unknown>[] | undefined // Nested rows within a section }[] // Report rows } | undefined // Parsed report data,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`xero failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
71485
+ "requiredCredentials": [
71486
+ "XERO_CRED"
71487
+ ]
71488
+ },
71489
+ {
71490
+ "name": "ramp",
71491
+ "alias": "ramp",
71492
+ "type": "service",
71493
+ "shortDescription": "Ramp integration for corporate expense management",
71494
+ "useCase": "General purpose bubble for various workflow needs",
71495
+ "outputSchema": "Complex schema - see usage example for structure",
71496
+ "inputJsonSchema": {
71497
+ "anyOf": [
71498
+ {
71499
+ "type": "object",
71500
+ "properties": {
71501
+ "operation": {
71502
+ "type": "string",
71503
+ "enum": [
71504
+ "list_transactions"
71505
+ ],
71506
+ "description": "List transactions with optional filters"
71507
+ },
71508
+ "page_size": {
71509
+ "type": "number",
71510
+ "minimum": 2,
71511
+ "maximum": 100,
71512
+ "default": 20,
71513
+ "description": "Number of results per page (2-100)"
71514
+ },
71515
+ "start": {
71516
+ "type": "string",
71517
+ "description": "Cursor ID from previous page for pagination"
71518
+ },
71519
+ "from_date": {
71520
+ "type": "string",
71521
+ "description": "Filter transactions from this date (ISO 8601 format, e.g. 2024-01-01T00:00:00Z)"
71522
+ },
71523
+ "to_date": {
71524
+ "type": "string",
71525
+ "description": "Filter transactions up to this date (ISO 8601 format, e.g. 2024-12-31T23:59:59Z)"
71526
+ },
71527
+ "credentials": {
71528
+ "type": "object",
71529
+ "additionalProperties": {
71530
+ "type": "string"
71531
+ },
71532
+ "description": "Credentials (injected at runtime)"
71533
+ }
71534
+ },
71535
+ "required": [
71536
+ "operation"
71537
+ ],
71538
+ "additionalProperties": false
71539
+ },
71540
+ {
71541
+ "type": "object",
71542
+ "properties": {
71543
+ "operation": {
71544
+ "type": "string",
71545
+ "enum": [
71546
+ "get_transaction"
71547
+ ],
71548
+ "description": "Get a specific transaction by ID"
71549
+ },
71550
+ "transaction_id": {
71551
+ "type": "string",
71552
+ "minLength": 1,
71553
+ "description": "Transaction ID"
71554
+ },
71555
+ "credentials": {
71556
+ "type": "object",
71557
+ "additionalProperties": {
71558
+ "type": "string"
71559
+ },
71560
+ "description": "Credentials (injected at runtime)"
71561
+ }
71562
+ },
71563
+ "required": [
71564
+ "operation",
71565
+ "transaction_id"
71566
+ ],
71567
+ "additionalProperties": false
71568
+ },
71569
+ {
71570
+ "type": "object",
71571
+ "properties": {
71572
+ "operation": {
71573
+ "type": "string",
71574
+ "enum": [
71575
+ "list_users"
71576
+ ],
71577
+ "description": "List users in the business"
71578
+ },
71579
+ "page_size": {
71580
+ "type": "number",
71581
+ "minimum": 2,
71582
+ "maximum": 100,
71583
+ "default": 20,
71584
+ "description": "Number of results per page (2-100)"
71585
+ },
71586
+ "start": {
71587
+ "type": "string",
71588
+ "description": "Cursor ID from previous page for pagination"
71589
+ },
71590
+ "credentials": {
71591
+ "type": "object",
71592
+ "additionalProperties": {
71593
+ "type": "string"
71594
+ },
71595
+ "description": "Credentials (injected at runtime)"
71596
+ }
71597
+ },
71598
+ "required": [
71599
+ "operation"
71600
+ ],
71601
+ "additionalProperties": false
71602
+ },
71603
+ {
71604
+ "type": "object",
71605
+ "properties": {
71606
+ "operation": {
71607
+ "type": "string",
71608
+ "enum": [
71609
+ "get_user"
71610
+ ],
71611
+ "description": "Get a specific user by ID"
71612
+ },
71613
+ "user_id": {
71614
+ "type": "string",
71615
+ "minLength": 1,
71616
+ "description": "User ID"
71617
+ },
71618
+ "credentials": {
71619
+ "type": "object",
71620
+ "additionalProperties": {
71621
+ "type": "string"
71622
+ },
71623
+ "description": "Credentials (injected at runtime)"
71624
+ }
71625
+ },
71626
+ "required": [
71627
+ "operation",
71628
+ "user_id"
71629
+ ],
71630
+ "additionalProperties": false
71631
+ },
71632
+ {
71633
+ "type": "object",
71634
+ "properties": {
71635
+ "operation": {
71636
+ "type": "string",
71637
+ "enum": [
71638
+ "list_cards"
71639
+ ],
71640
+ "description": "List cards"
71641
+ },
71642
+ "page_size": {
71643
+ "type": "number",
71644
+ "minimum": 2,
71645
+ "maximum": 100,
71646
+ "default": 20,
71647
+ "description": "Number of results per page (2-100)"
71648
+ },
71649
+ "start": {
71650
+ "type": "string",
71651
+ "description": "Cursor ID from previous page for pagination"
71652
+ },
71653
+ "credentials": {
71654
+ "type": "object",
71655
+ "additionalProperties": {
71656
+ "type": "string"
71657
+ },
71658
+ "description": "Credentials (injected at runtime)"
71659
+ }
71660
+ },
71661
+ "required": [
71662
+ "operation"
71663
+ ],
71664
+ "additionalProperties": false
71665
+ },
71666
+ {
71667
+ "type": "object",
71668
+ "properties": {
71669
+ "operation": {
71670
+ "type": "string",
71671
+ "enum": [
71672
+ "get_card"
71673
+ ],
71674
+ "description": "Get a specific card by ID"
71675
+ },
71676
+ "card_id": {
71677
+ "type": "string",
71678
+ "minLength": 1,
71679
+ "description": "Card ID"
71680
+ },
71681
+ "credentials": {
71682
+ "type": "object",
71683
+ "additionalProperties": {
71684
+ "type": "string"
71685
+ },
71686
+ "description": "Credentials (injected at runtime)"
71687
+ }
71688
+ },
71689
+ "required": [
71690
+ "operation",
71691
+ "card_id"
71692
+ ],
71693
+ "additionalProperties": false
71694
+ },
71695
+ {
71696
+ "type": "object",
71697
+ "properties": {
71698
+ "operation": {
71699
+ "type": "string",
71700
+ "enum": [
71701
+ "list_departments"
71702
+ ],
71703
+ "description": "List departments in the business"
71704
+ },
71705
+ "page_size": {
71706
+ "type": "number",
71707
+ "minimum": 2,
71708
+ "maximum": 100,
71709
+ "default": 20,
71710
+ "description": "Number of results per page (2-100)"
71711
+ },
71712
+ "start": {
71713
+ "type": "string",
71714
+ "description": "Cursor ID from previous page for pagination"
71715
+ },
71716
+ "credentials": {
71717
+ "type": "object",
71718
+ "additionalProperties": {
71719
+ "type": "string"
71720
+ },
71721
+ "description": "Credentials (injected at runtime)"
71722
+ }
71723
+ },
71724
+ "required": [
71725
+ "operation"
71726
+ ],
71727
+ "additionalProperties": false
71728
+ },
71729
+ {
71730
+ "type": "object",
71731
+ "properties": {
71732
+ "operation": {
71733
+ "type": "string",
71734
+ "enum": [
71735
+ "list_locations"
71736
+ ],
71737
+ "description": "List locations in the business"
71738
+ },
71739
+ "page_size": {
71740
+ "type": "number",
71741
+ "minimum": 2,
71742
+ "maximum": 100,
71743
+ "default": 20,
71744
+ "description": "Number of results per page (2-100)"
71745
+ },
71746
+ "start": {
71747
+ "type": "string",
71748
+ "description": "Cursor ID from previous page for pagination"
71749
+ },
71750
+ "credentials": {
71751
+ "type": "object",
71752
+ "additionalProperties": {
71753
+ "type": "string"
71754
+ },
71755
+ "description": "Credentials (injected at runtime)"
71756
+ }
71757
+ },
71758
+ "required": [
71759
+ "operation"
71760
+ ],
71761
+ "additionalProperties": false
71762
+ },
71763
+ {
71764
+ "type": "object",
71765
+ "properties": {
71766
+ "operation": {
71767
+ "type": "string",
71768
+ "enum": [
71769
+ "list_spend_programs"
71770
+ ],
71771
+ "description": "List spend programs"
71772
+ },
71773
+ "page_size": {
71774
+ "type": "number",
71775
+ "minimum": 2,
71776
+ "maximum": 100,
71777
+ "default": 20,
71778
+ "description": "Number of results per page (2-100)"
71779
+ },
71780
+ "start": {
71781
+ "type": "string",
71782
+ "description": "Cursor ID from previous page for pagination"
71783
+ },
71784
+ "credentials": {
71785
+ "type": "object",
71786
+ "additionalProperties": {
71787
+ "type": "string"
71788
+ },
71789
+ "description": "Credentials (injected at runtime)"
71790
+ }
71791
+ },
71792
+ "required": [
71793
+ "operation"
71794
+ ],
71795
+ "additionalProperties": false
71796
+ },
71797
+ {
71798
+ "type": "object",
71799
+ "properties": {
71800
+ "operation": {
71801
+ "type": "string",
71802
+ "enum": [
71803
+ "list_limits"
71804
+ ],
71805
+ "description": "List spend limits/funds"
71806
+ },
71807
+ "page_size": {
71808
+ "type": "number",
71809
+ "minimum": 2,
71810
+ "maximum": 100,
71811
+ "default": 20,
71812
+ "description": "Number of results per page (2-100)"
71813
+ },
71814
+ "start": {
71815
+ "type": "string",
71816
+ "description": "Cursor ID from previous page for pagination"
71817
+ },
71818
+ "credentials": {
71819
+ "type": "object",
71820
+ "additionalProperties": {
71821
+ "type": "string"
71822
+ },
71823
+ "description": "Credentials (injected at runtime)"
71824
+ }
71825
+ },
71826
+ "required": [
71827
+ "operation"
71828
+ ],
71829
+ "additionalProperties": false
71830
+ },
71831
+ {
71832
+ "type": "object",
71833
+ "properties": {
71834
+ "operation": {
71835
+ "type": "string",
71836
+ "enum": [
71837
+ "list_reimbursements"
71838
+ ],
71839
+ "description": "List reimbursements"
71840
+ },
71841
+ "page_size": {
71842
+ "type": "number",
71843
+ "minimum": 2,
71844
+ "maximum": 100,
71845
+ "default": 20,
71846
+ "description": "Number of results per page (2-100)"
71847
+ },
71848
+ "start": {
71849
+ "type": "string",
71850
+ "description": "Cursor ID from previous page for pagination"
71851
+ },
71852
+ "from_date": {
71853
+ "type": "string",
71854
+ "description": "Filter reimbursements from this date (ISO 8601 format)"
71855
+ },
71856
+ "to_date": {
71857
+ "type": "string",
71858
+ "description": "Filter reimbursements up to this date (ISO 8601 format)"
71859
+ },
71860
+ "credentials": {
71861
+ "type": "object",
71862
+ "additionalProperties": {
71863
+ "type": "string"
71864
+ },
71865
+ "description": "Credentials (injected at runtime)"
71866
+ }
71867
+ },
71868
+ "required": [
71869
+ "operation"
71870
+ ],
71871
+ "additionalProperties": false
71872
+ },
71873
+ {
71874
+ "type": "object",
71875
+ "properties": {
71876
+ "operation": {
71877
+ "type": "string",
71878
+ "enum": [
71879
+ "list_bills"
71880
+ ],
71881
+ "description": "List bills"
71882
+ },
71883
+ "page_size": {
71884
+ "type": "number",
71885
+ "minimum": 2,
71886
+ "maximum": 100,
71887
+ "default": 20,
71888
+ "description": "Number of results per page (2-100)"
71889
+ },
71890
+ "start": {
71891
+ "type": "string",
71892
+ "description": "Cursor ID from previous page for pagination"
71893
+ },
71894
+ "from_date": {
71895
+ "type": "string",
71896
+ "description": "Filter bills from this date (ISO 8601 format)"
71897
+ },
71898
+ "to_date": {
71899
+ "type": "string",
71900
+ "description": "Filter bills up to this date (ISO 8601 format)"
71901
+ },
71902
+ "credentials": {
71903
+ "type": "object",
71904
+ "additionalProperties": {
71905
+ "type": "string"
71906
+ },
71907
+ "description": "Credentials (injected at runtime)"
71908
+ }
71909
+ },
71910
+ "required": [
71911
+ "operation"
71912
+ ],
71913
+ "additionalProperties": false
71914
+ },
71915
+ {
71916
+ "type": "object",
71917
+ "properties": {
71918
+ "operation": {
71919
+ "type": "string",
71920
+ "enum": [
71921
+ "list_vendors"
71922
+ ],
71923
+ "description": "List vendors"
71924
+ },
71925
+ "page_size": {
71926
+ "type": "number",
71927
+ "minimum": 2,
71928
+ "maximum": 100,
71929
+ "default": 20,
71930
+ "description": "Number of results per page (2-100)"
71931
+ },
71932
+ "start": {
71933
+ "type": "string",
71934
+ "description": "Cursor ID from previous page for pagination"
71935
+ },
71936
+ "credentials": {
71937
+ "type": "object",
71938
+ "additionalProperties": {
71939
+ "type": "string"
71940
+ },
71941
+ "description": "Credentials (injected at runtime)"
71942
+ }
71943
+ },
71944
+ "required": [
71945
+ "operation"
71946
+ ],
71947
+ "additionalProperties": false
71948
+ },
71949
+ {
71950
+ "type": "object",
71951
+ "properties": {
71952
+ "operation": {
71953
+ "type": "string",
71954
+ "enum": [
71955
+ "get_business"
71956
+ ],
71957
+ "description": "Get business information"
71958
+ },
71959
+ "credentials": {
71960
+ "type": "object",
71961
+ "additionalProperties": {
71962
+ "type": "string"
71963
+ },
71964
+ "description": "Credentials (injected at runtime)"
71965
+ }
71966
+ },
71967
+ "required": [
71968
+ "operation"
71969
+ ],
71970
+ "additionalProperties": false
71971
+ }
71972
+ ]
71973
+ },
71974
+ "outputJsonSchema": {
71975
+ "anyOf": [
71976
+ {
71977
+ "type": "object",
71978
+ "properties": {
71979
+ "operation": {
71980
+ "type": "string",
71981
+ "enum": [
71982
+ "list_transactions"
71983
+ ]
71984
+ },
71985
+ "success": {
71986
+ "type": "boolean",
71987
+ "description": "Whether the operation was successful"
71988
+ },
71989
+ "transactions": {
71990
+ "type": "array",
71991
+ "items": {
71992
+ "type": "object",
71993
+ "properties": {
71994
+ "id": {
71995
+ "type": "string",
71996
+ "description": "Transaction ID"
71997
+ },
71998
+ "amount": {
71999
+ "type": "number",
72000
+ "description": "Transaction amount in cents"
72001
+ },
72002
+ "currency_code": {
72003
+ "type": "string",
72004
+ "description": "Currency code (e.g., USD)"
72005
+ },
72006
+ "merchant_name": {
72007
+ "type": "string",
72008
+ "nullable": true,
72009
+ "description": "Merchant name"
72010
+ },
72011
+ "merchant_descriptor": {
72012
+ "type": "string",
72013
+ "nullable": true,
72014
+ "description": "Merchant descriptor"
72015
+ },
72016
+ "card_holder": {
72017
+ "type": "object",
72018
+ "properties": {
72019
+ "user_id": {
72020
+ "type": "string",
72021
+ "description": "Card holder user ID"
72022
+ },
72023
+ "first_name": {
72024
+ "type": "string",
72025
+ "description": "Card holder first name"
72026
+ },
72027
+ "last_name": {
72028
+ "type": "string",
72029
+ "description": "Card holder last name"
72030
+ },
72031
+ "department_name": {
72032
+ "type": "string",
72033
+ "nullable": true,
72034
+ "description": "Card holder department"
72035
+ }
72036
+ },
72037
+ "additionalProperties": true,
72038
+ "description": "Card holder information"
72039
+ },
72040
+ "card_id": {
72041
+ "type": "string",
72042
+ "nullable": true,
72043
+ "description": "Card ID"
72044
+ },
72045
+ "state": {
72046
+ "type": "string",
72047
+ "description": "Transaction state (e.g., CLEARED)"
72048
+ },
72049
+ "user_transaction_time": {
72050
+ "type": "string",
72051
+ "nullable": true,
72052
+ "description": "Transaction time"
72053
+ },
72054
+ "settlement_date": {
72055
+ "type": "string",
72056
+ "nullable": true,
72057
+ "description": "Settlement date"
72058
+ },
72059
+ "memo": {
72060
+ "type": "string",
72061
+ "nullable": true,
72062
+ "description": "Transaction memo"
72063
+ },
72064
+ "sk_category_name": {
72065
+ "type": "string",
72066
+ "nullable": true,
72067
+ "description": "Spending category name"
72068
+ }
72069
+ },
72070
+ "additionalProperties": true,
72071
+ "description": "Ramp transaction"
72072
+ },
72073
+ "description": "List of transactions"
72074
+ },
72075
+ "has_more": {
72076
+ "type": "boolean",
72077
+ "description": "Whether there are more results"
72078
+ },
72079
+ "error": {
72080
+ "type": "string",
72081
+ "description": "Error message if operation failed"
72082
+ }
72083
+ },
72084
+ "required": [
72085
+ "operation",
72086
+ "success",
72087
+ "error"
72088
+ ],
72089
+ "additionalProperties": false
72090
+ },
72091
+ {
72092
+ "type": "object",
72093
+ "properties": {
72094
+ "operation": {
72095
+ "type": "string",
72096
+ "enum": [
72097
+ "get_transaction"
72098
+ ]
72099
+ },
72100
+ "success": {
72101
+ "type": "boolean",
72102
+ "description": "Whether the operation was successful"
72103
+ },
72104
+ "transaction": {
72105
+ "type": "object",
72106
+ "properties": {
72107
+ "id": {
72108
+ "type": "string",
72109
+ "description": "Transaction ID"
72110
+ },
72111
+ "amount": {
72112
+ "type": "number",
72113
+ "description": "Transaction amount in cents"
72114
+ },
72115
+ "currency_code": {
72116
+ "type": "string",
72117
+ "description": "Currency code (e.g., USD)"
72118
+ },
72119
+ "merchant_name": {
72120
+ "type": "string",
72121
+ "nullable": true,
72122
+ "description": "Merchant name"
72123
+ },
72124
+ "merchant_descriptor": {
72125
+ "type": "string",
72126
+ "nullable": true,
72127
+ "description": "Merchant descriptor"
72128
+ },
72129
+ "card_holder": {
72130
+ "type": "object",
72131
+ "properties": {
72132
+ "user_id": {
72133
+ "type": "string",
72134
+ "description": "Card holder user ID"
72135
+ },
72136
+ "first_name": {
72137
+ "type": "string",
72138
+ "description": "Card holder first name"
72139
+ },
72140
+ "last_name": {
72141
+ "type": "string",
72142
+ "description": "Card holder last name"
72143
+ },
72144
+ "department_name": {
72145
+ "type": "string",
72146
+ "nullable": true,
72147
+ "description": "Card holder department"
72148
+ }
72149
+ },
72150
+ "additionalProperties": true,
72151
+ "description": "Card holder information"
72152
+ },
72153
+ "card_id": {
72154
+ "type": "string",
72155
+ "nullable": true,
72156
+ "description": "Card ID"
72157
+ },
72158
+ "state": {
72159
+ "type": "string",
72160
+ "description": "Transaction state (e.g., CLEARED)"
72161
+ },
72162
+ "user_transaction_time": {
72163
+ "type": "string",
72164
+ "nullable": true,
72165
+ "description": "Transaction time"
72166
+ },
72167
+ "settlement_date": {
72168
+ "type": "string",
72169
+ "nullable": true,
72170
+ "description": "Settlement date"
72171
+ },
72172
+ "memo": {
72173
+ "type": "string",
72174
+ "nullable": true,
72175
+ "description": "Transaction memo"
72176
+ },
72177
+ "sk_category_name": {
72178
+ "type": "string",
72179
+ "nullable": true,
72180
+ "description": "Spending category name"
72181
+ }
72182
+ },
72183
+ "additionalProperties": true,
72184
+ "description": "Transaction details"
72185
+ },
72186
+ "error": {
72187
+ "type": "string",
72188
+ "description": "Error message if operation failed"
72189
+ }
72190
+ },
72191
+ "required": [
72192
+ "operation",
72193
+ "success",
72194
+ "error"
72195
+ ],
72196
+ "additionalProperties": false
72197
+ },
72198
+ {
72199
+ "type": "object",
72200
+ "properties": {
72201
+ "operation": {
72202
+ "type": "string",
72203
+ "enum": [
72204
+ "list_users"
72205
+ ]
72206
+ },
72207
+ "success": {
72208
+ "type": "boolean",
72209
+ "description": "Whether the operation was successful"
72210
+ },
72211
+ "users": {
72212
+ "type": "array",
72213
+ "items": {
72214
+ "type": "object",
72215
+ "properties": {
72216
+ "id": {
72217
+ "type": "string",
72218
+ "description": "User ID"
72219
+ },
72220
+ "first_name": {
72221
+ "type": "string",
72222
+ "description": "First name"
72223
+ },
72224
+ "last_name": {
72225
+ "type": "string",
72226
+ "description": "Last name"
72227
+ },
72228
+ "email": {
72229
+ "type": "string",
72230
+ "description": "Email address"
72231
+ },
72232
+ "role": {
72233
+ "type": "string",
72234
+ "description": "User role"
72235
+ },
72236
+ "department_id": {
72237
+ "type": "string",
72238
+ "nullable": true,
72239
+ "description": "Department ID"
72240
+ },
72241
+ "location_id": {
72242
+ "type": "string",
72243
+ "nullable": true,
72244
+ "description": "Location ID"
72245
+ },
72246
+ "status": {
72247
+ "type": "string",
72248
+ "description": "User status"
72249
+ }
72250
+ },
72251
+ "additionalProperties": true,
72252
+ "description": "Ramp user"
72253
+ },
72254
+ "description": "List of users"
72255
+ },
72256
+ "has_more": {
72257
+ "type": "boolean",
72258
+ "description": "Whether there are more results"
72259
+ },
72260
+ "error": {
72261
+ "type": "string",
72262
+ "description": "Error message if operation failed"
72263
+ }
72264
+ },
72265
+ "required": [
72266
+ "operation",
72267
+ "success",
72268
+ "error"
72269
+ ],
72270
+ "additionalProperties": false
72271
+ },
72272
+ {
72273
+ "type": "object",
72274
+ "properties": {
72275
+ "operation": {
72276
+ "type": "string",
72277
+ "enum": [
72278
+ "get_user"
72279
+ ]
72280
+ },
72281
+ "success": {
72282
+ "type": "boolean",
72283
+ "description": "Whether the operation was successful"
72284
+ },
72285
+ "user": {
72286
+ "type": "object",
72287
+ "properties": {
72288
+ "id": {
72289
+ "type": "string",
72290
+ "description": "User ID"
72291
+ },
72292
+ "first_name": {
72293
+ "type": "string",
72294
+ "description": "First name"
72295
+ },
72296
+ "last_name": {
72297
+ "type": "string",
72298
+ "description": "Last name"
72299
+ },
72300
+ "email": {
72301
+ "type": "string",
72302
+ "description": "Email address"
72303
+ },
72304
+ "role": {
72305
+ "type": "string",
72306
+ "description": "User role"
72307
+ },
72308
+ "department_id": {
72309
+ "type": "string",
72310
+ "nullable": true,
72311
+ "description": "Department ID"
72312
+ },
72313
+ "location_id": {
72314
+ "type": "string",
72315
+ "nullable": true,
72316
+ "description": "Location ID"
72317
+ },
72318
+ "status": {
72319
+ "type": "string",
72320
+ "description": "User status"
72321
+ }
72322
+ },
72323
+ "additionalProperties": true,
72324
+ "description": "User details"
72325
+ },
72326
+ "error": {
72327
+ "type": "string",
72328
+ "description": "Error message if operation failed"
72329
+ }
72330
+ },
72331
+ "required": [
72332
+ "operation",
72333
+ "success",
72334
+ "error"
72335
+ ],
72336
+ "additionalProperties": false
72337
+ },
72338
+ {
72339
+ "type": "object",
72340
+ "properties": {
72341
+ "operation": {
72342
+ "type": "string",
72343
+ "enum": [
72344
+ "list_cards"
72345
+ ]
72346
+ },
72347
+ "success": {
72348
+ "type": "boolean",
72349
+ "description": "Whether the operation was successful"
72350
+ },
72351
+ "cards": {
72352
+ "type": "array",
72353
+ "items": {
72354
+ "type": "object",
72355
+ "properties": {
72356
+ "id": {
72357
+ "type": "string",
72358
+ "description": "Card ID"
72359
+ },
72360
+ "display_name": {
72361
+ "type": "string",
72362
+ "description": "Card display name"
72363
+ },
72364
+ "last_four": {
72365
+ "type": "string",
72366
+ "description": "Last four digits"
72367
+ },
72368
+ "card_program_id": {
72369
+ "type": "string",
72370
+ "nullable": true,
72371
+ "description": "Card program ID"
72372
+ },
72373
+ "state": {
72374
+ "type": "string",
72375
+ "description": "Card state"
72376
+ },
72377
+ "is_physical": {
72378
+ "type": "boolean",
72379
+ "description": "Whether card is physical"
72380
+ },
72381
+ "cardholder_id": {
72382
+ "type": "string",
72383
+ "description": "Cardholder user ID"
72384
+ },
72385
+ "cardholder_name": {
72386
+ "type": "string",
72387
+ "description": "Cardholder name"
72388
+ },
72389
+ "spending_restrictions": {
72390
+ "type": "object",
72391
+ "additionalProperties": {},
72392
+ "description": "Spending restrictions"
72393
+ }
72394
+ },
72395
+ "additionalProperties": true,
72396
+ "description": "Ramp card"
72397
+ },
72398
+ "description": "List of cards"
72399
+ },
72400
+ "has_more": {
72401
+ "type": "boolean",
72402
+ "description": "Whether there are more results"
72403
+ },
72404
+ "error": {
72405
+ "type": "string",
72406
+ "description": "Error message if operation failed"
72407
+ }
72408
+ },
72409
+ "required": [
72410
+ "operation",
72411
+ "success",
72412
+ "error"
72413
+ ],
72414
+ "additionalProperties": false
72415
+ },
72416
+ {
72417
+ "type": "object",
72418
+ "properties": {
72419
+ "operation": {
72420
+ "type": "string",
72421
+ "enum": [
72422
+ "get_card"
72423
+ ]
72424
+ },
72425
+ "success": {
72426
+ "type": "boolean",
72427
+ "description": "Whether the operation was successful"
72428
+ },
72429
+ "card": {
72430
+ "type": "object",
72431
+ "properties": {
72432
+ "id": {
72433
+ "type": "string",
72434
+ "description": "Card ID"
72435
+ },
72436
+ "display_name": {
72437
+ "type": "string",
72438
+ "description": "Card display name"
72439
+ },
72440
+ "last_four": {
72441
+ "type": "string",
72442
+ "description": "Last four digits"
72443
+ },
72444
+ "card_program_id": {
72445
+ "type": "string",
72446
+ "nullable": true,
72447
+ "description": "Card program ID"
72448
+ },
72449
+ "state": {
72450
+ "type": "string",
72451
+ "description": "Card state"
72452
+ },
72453
+ "is_physical": {
72454
+ "type": "boolean",
72455
+ "description": "Whether card is physical"
72456
+ },
72457
+ "cardholder_id": {
72458
+ "type": "string",
72459
+ "description": "Cardholder user ID"
72460
+ },
72461
+ "cardholder_name": {
72462
+ "type": "string",
72463
+ "description": "Cardholder name"
72464
+ },
72465
+ "spending_restrictions": {
72466
+ "type": "object",
72467
+ "additionalProperties": {},
72468
+ "description": "Spending restrictions"
72469
+ }
72470
+ },
72471
+ "additionalProperties": true,
72472
+ "description": "Card details"
72473
+ },
72474
+ "error": {
72475
+ "type": "string",
72476
+ "description": "Error message if operation failed"
72477
+ }
72478
+ },
72479
+ "required": [
72480
+ "operation",
72481
+ "success",
72482
+ "error"
72483
+ ],
72484
+ "additionalProperties": false
72485
+ },
72486
+ {
72487
+ "type": "object",
72488
+ "properties": {
72489
+ "operation": {
72490
+ "type": "string",
72491
+ "enum": [
72492
+ "list_departments"
72493
+ ]
72494
+ },
72495
+ "success": {
72496
+ "type": "boolean",
72497
+ "description": "Whether the operation was successful"
72498
+ },
72499
+ "departments": {
72500
+ "type": "array",
72501
+ "items": {
72502
+ "type": "object",
72503
+ "properties": {
72504
+ "id": {
72505
+ "type": "string",
72506
+ "description": "Department ID"
72507
+ },
72508
+ "name": {
72509
+ "type": "string",
72510
+ "description": "Department name"
72511
+ }
72512
+ },
72513
+ "additionalProperties": true,
72514
+ "description": "Ramp department"
72515
+ },
72516
+ "description": "List of departments"
72517
+ },
72518
+ "has_more": {
72519
+ "type": "boolean",
72520
+ "description": "Whether there are more results"
72521
+ },
72522
+ "error": {
72523
+ "type": "string",
72524
+ "description": "Error message if operation failed"
72525
+ }
72526
+ },
72527
+ "required": [
72528
+ "operation",
72529
+ "success",
72530
+ "error"
72531
+ ],
72532
+ "additionalProperties": false
72533
+ },
72534
+ {
72535
+ "type": "object",
72536
+ "properties": {
72537
+ "operation": {
72538
+ "type": "string",
72539
+ "enum": [
72540
+ "list_locations"
72541
+ ]
72542
+ },
72543
+ "success": {
72544
+ "type": "boolean",
72545
+ "description": "Whether the operation was successful"
72546
+ },
72547
+ "locations": {
72548
+ "type": "array",
72549
+ "items": {
72550
+ "type": "object",
72551
+ "properties": {
72552
+ "id": {
72553
+ "type": "string",
72554
+ "description": "Location ID"
72555
+ },
72556
+ "name": {
72557
+ "type": "string",
72558
+ "description": "Location name"
72559
+ }
72560
+ },
72561
+ "additionalProperties": true,
72562
+ "description": "Ramp location"
72563
+ },
72564
+ "description": "List of locations"
72565
+ },
72566
+ "has_more": {
72567
+ "type": "boolean",
72568
+ "description": "Whether there are more results"
72569
+ },
72570
+ "error": {
72571
+ "type": "string",
72572
+ "description": "Error message if operation failed"
72573
+ }
72574
+ },
72575
+ "required": [
72576
+ "operation",
72577
+ "success",
72578
+ "error"
72579
+ ],
72580
+ "additionalProperties": false
72581
+ },
72582
+ {
72583
+ "type": "object",
72584
+ "properties": {
72585
+ "operation": {
72586
+ "type": "string",
72587
+ "enum": [
72588
+ "list_spend_programs"
72589
+ ]
72590
+ },
72591
+ "success": {
72592
+ "type": "boolean",
72593
+ "description": "Whether the operation was successful"
72594
+ },
72595
+ "spend_programs": {
72596
+ "type": "array",
72597
+ "items": {
72598
+ "type": "object",
72599
+ "properties": {
72600
+ "id": {
72601
+ "type": "string",
72602
+ "description": "Spend program ID"
72603
+ },
72604
+ "display_name": {
72605
+ "type": "string",
72606
+ "description": "Spend program display name"
72607
+ },
72608
+ "description": {
72609
+ "type": "string",
72610
+ "nullable": true,
72611
+ "description": "Description"
72612
+ }
72613
+ },
72614
+ "additionalProperties": true,
72615
+ "description": "Ramp spend program"
72616
+ },
72617
+ "description": "List of spend programs"
72618
+ },
72619
+ "has_more": {
72620
+ "type": "boolean",
72621
+ "description": "Whether there are more results"
72622
+ },
72623
+ "error": {
72624
+ "type": "string",
72625
+ "description": "Error message if operation failed"
72626
+ }
72627
+ },
72628
+ "required": [
72629
+ "operation",
72630
+ "success",
72631
+ "error"
72632
+ ],
72633
+ "additionalProperties": false
72634
+ },
72635
+ {
72636
+ "type": "object",
72637
+ "properties": {
72638
+ "operation": {
72639
+ "type": "string",
72640
+ "enum": [
72641
+ "list_limits"
72642
+ ]
72643
+ },
72644
+ "success": {
72645
+ "type": "boolean",
72646
+ "description": "Whether the operation was successful"
72647
+ },
72648
+ "limits": {
72649
+ "type": "array",
72650
+ "items": {
72651
+ "type": "object",
72652
+ "properties": {
72653
+ "id": {
72654
+ "type": "string",
72655
+ "description": "Limit/fund ID"
72656
+ },
72657
+ "display_name": {
72658
+ "type": "string",
72659
+ "description": "Limit display name"
72660
+ },
72661
+ "state": {
72662
+ "type": "string",
72663
+ "description": "Limit state"
72664
+ }
72665
+ },
72666
+ "additionalProperties": true,
72667
+ "description": "Ramp limit/fund"
72668
+ },
72669
+ "description": "List of spend limits/funds"
72670
+ },
72671
+ "has_more": {
72672
+ "type": "boolean",
72673
+ "description": "Whether there are more results"
72674
+ },
72675
+ "error": {
72676
+ "type": "string",
72677
+ "description": "Error message if operation failed"
72678
+ }
72679
+ },
72680
+ "required": [
72681
+ "operation",
72682
+ "success",
72683
+ "error"
72684
+ ],
72685
+ "additionalProperties": false
72686
+ },
72687
+ {
72688
+ "type": "object",
72689
+ "properties": {
72690
+ "operation": {
72691
+ "type": "string",
72692
+ "enum": [
72693
+ "list_reimbursements"
72694
+ ]
72695
+ },
72696
+ "success": {
72697
+ "type": "boolean",
72698
+ "description": "Whether the operation was successful"
72699
+ },
72700
+ "reimbursements": {
72701
+ "type": "array",
72702
+ "items": {
72703
+ "type": "object",
72704
+ "properties": {
72705
+ "id": {
72706
+ "type": "string",
72707
+ "description": "Reimbursement ID"
72708
+ },
72709
+ "amount": {
72710
+ "type": "number",
72711
+ "description": "Reimbursement amount in cents"
72712
+ },
72713
+ "currency": {
72714
+ "type": "string",
72715
+ "description": "Currency code"
72716
+ },
72717
+ "merchant": {
72718
+ "type": "string",
72719
+ "nullable": true,
72720
+ "description": "Merchant name"
72721
+ },
72722
+ "user_id": {
72723
+ "type": "string",
72724
+ "description": "User who submitted"
72725
+ }
72726
+ },
72727
+ "additionalProperties": true,
72728
+ "description": "Ramp reimbursement"
72729
+ },
72730
+ "description": "List of reimbursements"
72731
+ },
72732
+ "has_more": {
72733
+ "type": "boolean",
72734
+ "description": "Whether there are more results"
72735
+ },
72736
+ "error": {
72737
+ "type": "string",
72738
+ "description": "Error message if operation failed"
72739
+ }
72740
+ },
72741
+ "required": [
72742
+ "operation",
72743
+ "success",
72744
+ "error"
72745
+ ],
72746
+ "additionalProperties": false
72747
+ },
72748
+ {
72749
+ "type": "object",
72750
+ "properties": {
72751
+ "operation": {
72752
+ "type": "string",
72753
+ "enum": [
72754
+ "list_bills"
72755
+ ]
72756
+ },
72757
+ "success": {
72758
+ "type": "boolean",
72759
+ "description": "Whether the operation was successful"
72760
+ },
72761
+ "bills": {
72762
+ "type": "array",
72763
+ "items": {
72764
+ "type": "object",
72765
+ "properties": {
72766
+ "id": {
72767
+ "type": "string",
72768
+ "description": "Bill ID"
72769
+ },
72770
+ "amount": {
72771
+ "type": "number",
72772
+ "description": "Bill amount"
72773
+ },
72774
+ "vendor_name": {
72775
+ "type": "string",
72776
+ "nullable": true,
72777
+ "description": "Vendor name"
72778
+ },
72779
+ "status": {
72780
+ "type": "string",
72781
+ "description": "Bill status"
72782
+ }
72783
+ },
72784
+ "additionalProperties": true,
72785
+ "description": "Ramp bill"
72786
+ },
72787
+ "description": "List of bills"
72788
+ },
72789
+ "has_more": {
72790
+ "type": "boolean",
72791
+ "description": "Whether there are more results"
72792
+ },
72793
+ "error": {
72794
+ "type": "string",
72795
+ "description": "Error message if operation failed"
72796
+ }
72797
+ },
72798
+ "required": [
72799
+ "operation",
72800
+ "success",
72801
+ "error"
72802
+ ],
72803
+ "additionalProperties": false
72804
+ },
72805
+ {
72806
+ "type": "object",
72807
+ "properties": {
72808
+ "operation": {
72809
+ "type": "string",
72810
+ "enum": [
72811
+ "list_vendors"
72812
+ ]
72813
+ },
72814
+ "success": {
72815
+ "type": "boolean",
72816
+ "description": "Whether the operation was successful"
72817
+ },
72818
+ "vendors": {
72819
+ "type": "array",
72820
+ "items": {
72821
+ "type": "object",
72822
+ "properties": {
72823
+ "id": {
72824
+ "type": "string",
72825
+ "description": "Vendor ID"
72826
+ },
72827
+ "name": {
72828
+ "type": "string",
72829
+ "description": "Vendor name"
72830
+ }
72831
+ },
72832
+ "additionalProperties": true,
72833
+ "description": "Ramp vendor"
72834
+ },
72835
+ "description": "List of vendors"
72836
+ },
72837
+ "has_more": {
72838
+ "type": "boolean",
72839
+ "description": "Whether there are more results"
72840
+ },
72841
+ "error": {
72842
+ "type": "string",
72843
+ "description": "Error message if operation failed"
72844
+ }
72845
+ },
72846
+ "required": [
72847
+ "operation",
72848
+ "success",
72849
+ "error"
72850
+ ],
72851
+ "additionalProperties": false
72852
+ },
72853
+ {
72854
+ "type": "object",
72855
+ "properties": {
72856
+ "operation": {
72857
+ "type": "string",
72858
+ "enum": [
72859
+ "get_business"
72860
+ ]
72861
+ },
72862
+ "success": {
72863
+ "type": "boolean",
72864
+ "description": "Whether the operation was successful"
72865
+ },
72866
+ "business": {
72867
+ "type": "object",
72868
+ "properties": {
72869
+ "id": {
72870
+ "type": "string",
72871
+ "description": "Business ID"
72872
+ },
72873
+ "name": {
72874
+ "type": "string",
72875
+ "description": "Business name"
72876
+ }
72877
+ },
72878
+ "additionalProperties": true,
72879
+ "description": "Business information"
72880
+ },
72881
+ "error": {
72882
+ "type": "string",
72883
+ "description": "Error message if operation failed"
72884
+ }
72885
+ },
72886
+ "required": [
72887
+ "operation",
72888
+ "success",
72889
+ "error"
72890
+ ],
72891
+ "additionalProperties": false
72892
+ }
72893
+ ]
72894
+ },
72895
+ "usageExample": "// List Transactions example\nconst ramp_list_transactions = new RampBubble({\n operation: \"list_transactions\", // List transactions with optional filters\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n from_date: \"example string\", // Filter transactions from this date (ISO 8601 format, e.g. 2024-01-01T00:00:00Z)\n to_date: \"example string\", // Filter transactions up to this date (ISO 8601 format, e.g. 2024-12-31T23:59:59Z)\n});\n\nconst result = await ramp_list_transactions.action();\n// outputSchema for result.data when operation === 'list_transactions':\n// {\n// operation: \"list_transactions\",\n// success: boolean // Whether the operation was successful,\n// transactions: { id: string | undefined // Transaction ID, amount: number | undefined // Transaction amount in cents, currency_code: string | undefined // Currency code (e.g., USD), merchant_name: string | null | undefined // Merchant name, merchant_descriptor: string | null | undefined // Merchant descriptor, card_holder: { user_id: string | undefined // Card holder user ID, first_name: string | undefined // Card holder first name, last_name: string | undefined // Card holder last name, department_name: string | null | undefined // Card holder department } | undefined // Card holder information, card_id: string | null | undefined // Card ID, state: string | undefined // Transaction state (e.g., CLEARED), user_transaction_time: string | null | undefined // Transaction time, settlement_date: string | null | undefined // Settlement date, memo: string | null | undefined // Transaction memo, sk_category_name: string | null | undefined // Spending category name }[] | undefined // List of transactions,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Transaction example\nconst ramp_get_transaction = new RampBubble({\n operation: \"get_transaction\", // Get a specific transaction by ID\n transaction_id: \"example string\", // Transaction ID\n});\n\nconst result = await ramp_get_transaction.action();\n// outputSchema for result.data when operation === 'get_transaction':\n// {\n// operation: \"get_transaction\",\n// success: boolean // Whether the operation was successful,\n// transaction: { id: string | undefined // Transaction ID, amount: number | undefined // Transaction amount in cents, currency_code: string | undefined // Currency code (e.g., USD), merchant_name: string | null | undefined // Merchant name, merchant_descriptor: string | null | undefined // Merchant descriptor, card_holder: { user_id: string | undefined // Card holder user ID, first_name: string | undefined // Card holder first name, last_name: string | undefined // Card holder last name, department_name: string | null | undefined // Card holder department } | undefined // Card holder information, card_id: string | null | undefined // Card ID, state: string | undefined // Transaction state (e.g., CLEARED), user_transaction_time: string | null | undefined // Transaction time, settlement_date: string | null | undefined // Settlement date, memo: string | null | undefined // Transaction memo, sk_category_name: string | null | undefined // Spending category name } | undefined // Transaction details,\n// error: string // Error message if operation failed\n// }\n\n\n// List Users example\nconst ramp_list_users = new RampBubble({\n operation: \"list_users\", // List users in the business\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n// operation: \"list_users\",\n// success: boolean // Whether the operation was successful,\n// users: { id: string | undefined // User ID, first_name: string | undefined // First name, last_name: string | undefined // Last name, email: string | undefined // Email address, role: string | undefined // User role, department_id: string | null | undefined // Department ID, location_id: string | null | undefined // Location ID, status: string | undefined // User status }[] | undefined // List of users,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// Get User example\nconst ramp_get_user = new RampBubble({\n operation: \"get_user\", // Get a specific user by ID\n user_id: \"example string\", // User ID\n});\n\nconst result = await ramp_get_user.action();\n// outputSchema for result.data when operation === 'get_user':\n// {\n// operation: \"get_user\",\n// success: boolean // Whether the operation was successful,\n// user: { id: string | undefined // User ID, first_name: string | undefined // First name, last_name: string | undefined // Last name, email: string | undefined // Email address, role: string | undefined // User role, department_id: string | null | undefined // Department ID, location_id: string | null | undefined // Location ID, status: string | undefined // User status } | undefined // User details,\n// error: string // Error message if operation failed\n// }\n\n\n// List Cards example\nconst ramp_list_cards = new RampBubble({\n operation: \"list_cards\", // List cards\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_cards.action();\n// outputSchema for result.data when operation === 'list_cards':\n// {\n// operation: \"list_cards\",\n// success: boolean // Whether the operation was successful,\n// cards: { id: string | undefined // Card ID, display_name: string | undefined // Card display name, last_four: string | undefined // Last four digits, card_program_id: string | null | undefined // Card program ID, state: string | undefined // Card state, is_physical: boolean | undefined // Whether card is physical, cardholder_id: string | undefined // Cardholder user ID, cardholder_name: string | undefined // Cardholder name, spending_restrictions: Record<string, unknown> | undefined // Spending restrictions }[] | undefined // List of cards,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Card example\nconst ramp_get_card = new RampBubble({\n operation: \"get_card\", // Get a specific card by ID\n card_id: \"example string\", // Card ID\n});\n\nconst result = await ramp_get_card.action();\n// outputSchema for result.data when operation === 'get_card':\n// {\n// operation: \"get_card\",\n// success: boolean // Whether the operation was successful,\n// card: { id: string | undefined // Card ID, display_name: string | undefined // Card display name, last_four: string | undefined // Last four digits, card_program_id: string | null | undefined // Card program ID, state: string | undefined // Card state, is_physical: boolean | undefined // Whether card is physical, cardholder_id: string | undefined // Cardholder user ID, cardholder_name: string | undefined // Cardholder name, spending_restrictions: Record<string, unknown> | undefined // Spending restrictions } | undefined // Card details,\n// error: string // Error message if operation failed\n// }\n\n\n// List Departments example\nconst ramp_list_departments = new RampBubble({\n operation: \"list_departments\", // List departments in the business\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_departments.action();\n// outputSchema for result.data when operation === 'list_departments':\n// {\n// operation: \"list_departments\",\n// success: boolean // Whether the operation was successful,\n// departments: { id: string | undefined // Department ID, name: string | undefined // Department name }[] | undefined // List of departments,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Locations example\nconst ramp_list_locations = new RampBubble({\n operation: \"list_locations\", // List locations in the business\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_locations.action();\n// outputSchema for result.data when operation === 'list_locations':\n// {\n// operation: \"list_locations\",\n// success: boolean // Whether the operation was successful,\n// locations: { id: string | undefined // Location ID, name: string | undefined // Location name }[] | undefined // List of locations,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Spend Programs example\nconst ramp_list_spend_programs = new RampBubble({\n operation: \"list_spend_programs\", // List spend programs\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_spend_programs.action();\n// outputSchema for result.data when operation === 'list_spend_programs':\n// {\n// operation: \"list_spend_programs\",\n// success: boolean // Whether the operation was successful,\n// spend_programs: { id: string | undefined // Spend program ID, display_name: string | undefined // Spend program display name, description: string | null | undefined // Description }[] | undefined // List of spend programs,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Limits example\nconst ramp_list_limits = new RampBubble({\n operation: \"list_limits\", // List spend limits/funds\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_limits.action();\n// outputSchema for result.data when operation === 'list_limits':\n// {\n// operation: \"list_limits\",\n// success: boolean // Whether the operation was successful,\n// limits: { id: string | undefined // Limit/fund ID, display_name: string | undefined // Limit display name, state: string | undefined // Limit state }[] | undefined // List of spend limits/funds,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Reimbursements example\nconst ramp_list_reimbursements = new RampBubble({\n operation: \"list_reimbursements\", // List reimbursements\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n from_date: \"example string\", // Filter reimbursements from this date (ISO 8601 format)\n to_date: \"example string\", // Filter reimbursements up to this date (ISO 8601 format)\n});\n\nconst result = await ramp_list_reimbursements.action();\n// outputSchema for result.data when operation === 'list_reimbursements':\n// {\n// operation: \"list_reimbursements\",\n// success: boolean // Whether the operation was successful,\n// reimbursements: { id: string | undefined // Reimbursement ID, amount: number | undefined // Reimbursement amount in cents, currency: string | undefined // Currency code, merchant: string | null | undefined // Merchant name, user_id: string | undefined // User who submitted }[] | undefined // List of reimbursements,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Bills example\nconst ramp_list_bills = new RampBubble({\n operation: \"list_bills\", // List bills\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n from_date: \"example string\", // Filter bills from this date (ISO 8601 format)\n to_date: \"example string\", // Filter bills up to this date (ISO 8601 format)\n});\n\nconst result = await ramp_list_bills.action();\n// outputSchema for result.data when operation === 'list_bills':\n// {\n// operation: \"list_bills\",\n// success: boolean // Whether the operation was successful,\n// bills: { id: string | undefined // Bill ID, amount: number | undefined // Bill amount, vendor_name: string | null | undefined // Vendor name, status: string | undefined // Bill status }[] | undefined // List of bills,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// List Vendors example\nconst ramp_list_vendors = new RampBubble({\n operation: \"list_vendors\", // List vendors\n page_size: 20 // default, // Number of results per page (2-100)\n start: \"example string\", // Cursor ID from previous page for pagination\n});\n\nconst result = await ramp_list_vendors.action();\n// outputSchema for result.data when operation === 'list_vendors':\n// {\n// operation: \"list_vendors\",\n// success: boolean // Whether the operation was successful,\n// vendors: { id: string | undefined // Vendor ID, name: string | undefined // Vendor name }[] | undefined // List of vendors,\n// has_more: boolean | undefined // Whether there are more results,\n// error: string // Error message if operation failed\n// }\n\n\n// Get Business example\nconst ramp_get_business = new RampBubble({\n operation: \"get_business\", // Get business information\n});\n\nconst result = await ramp_get_business.action();\n// outputSchema for result.data when operation === 'get_business':\n// {\n// operation: \"get_business\",\n// success: boolean // Whether the operation was successful,\n// business: { id: string | undefined // Business ID, name: string | undefined // Business name } | undefined // Business information,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`ramp failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
72896
+ "requiredCredentials": [
72897
+ "RAMP_CRED"
72898
+ ]
70301
72899
  }
70302
72900
  ]
70303
72901
  }