mcp-zenskar 1.1.6 → 1.1.8

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/mcp-config.json +239 -405
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-zenskar",
3
- "version": "1.1.6",
3
+ "version": "1.1.8",
4
4
  "description": "Model Context Protocol (MCP) server for Zenskar API - customer management, invoicing, and billing operations",
5
5
  "main": "src/server.js",
6
6
  "bin": {
@@ -72,13 +72,6 @@
72
72
  "required": false,
73
73
  "position": "query"
74
74
  },
75
- {
76
- "name": "id__ilike",
77
- "description": "Case-insensitive partial match for customer ID.",
78
- "type": "string",
79
- "required": false,
80
- "position": "query"
81
- },
82
75
  {
83
76
  "name": "id__in",
84
77
  "description": "Filter by a comma-separated list of customer IDs.",
@@ -279,8 +272,8 @@
279
272
  "position": "query"
280
273
  },
281
274
  {
282
- "name": "customer_external_id",
283
- "description": "Filter invoices by a customer's external ID.",
275
+ "name": "customer__external_id",
276
+ "description": "Filter invoices by a customer's external ID (nested filter).",
284
277
  "type": "string",
285
278
  "required": false,
286
279
  "position": "query"
@@ -428,9 +421,9 @@
428
421
  "position": "path"
429
422
  },
430
423
  {
431
- "name": "customer_id",
432
- "description": "The ID of the customer associated with the invoice (optional).",
433
- "type": "string",
424
+ "name": "include_line_items",
425
+ "description": "Whether to include line items in the response.",
426
+ "type": "boolean",
434
427
  "required": false,
435
428
  "position": "query"
436
429
  }
@@ -502,7 +495,7 @@
502
495
  "position": "path"
503
496
  },
504
497
  {
505
- "name": "invoiceJsonKey",
498
+ "name": "invoice_json_key",
506
499
  "description": "Optional key for invoice JSON.",
507
500
  "type": "string",
508
501
  "required": false,
@@ -1002,22 +995,6 @@
1002
995
  "required": true,
1003
996
  "position": "body"
1004
997
  },
1005
- {
1006
- "name": "connector",
1007
- "description": "Connector that owns this raw metric (e.g., push_to_zenskar).",
1008
- "type": "string",
1009
- "required": true,
1010
- "position": "body",
1011
- "default": "push_to_zenskar"
1012
- },
1013
- {
1014
- "name": "api_type",
1015
- "description": "API type for ingestion (typically PUSH).",
1016
- "type": "string",
1017
- "required": false,
1018
- "position": "body",
1019
- "default": "PUSH"
1020
- },
1021
998
  {
1022
999
  "name": "dataschema",
1023
1000
  "description": "Data schema of raw metric (JSON object). Structure: {\"data\": {custom_fields}, \"timestamp\": \"DateTime64\", \"customer_id\": \"String\"}. The 'data' map must include only valid ClickHouse types (String, Int64, Float64, Date32, DateTime64, UUID, Bool); use 'Bool' instead of 'Boolean'.",
@@ -1472,8 +1449,7 @@
1472
1449
  "cancelText": "Cancel",
1473
1450
  "sensitiveFields": [
1474
1451
  "prompt_name",
1475
- "prompt_text",
1476
- "document_id"
1452
+ "prompt_text"
1477
1453
  ]
1478
1454
  },
1479
1455
  "args": [
@@ -1491,13 +1467,6 @@
1491
1467
  "required": true,
1492
1468
  "position": "body"
1493
1469
  },
1494
- {
1495
- "name": "document_id",
1496
- "description": "The ID of the contract document this prompt is for.",
1497
- "type": "string",
1498
- "required": true,
1499
- "position": "body"
1500
- },
1501
1470
  {
1502
1471
  "name": "prompt_schema",
1503
1472
  "description": "Optional schema for the prompt (e.g., 'billing_schema'). Can be null.",
@@ -1553,20 +1522,6 @@
1553
1522
  "required": false,
1554
1523
  "position": "query"
1555
1524
  },
1556
- {
1557
- "name": "id__ilike",
1558
- "description": "Contract ID (case-insensitive partial match).",
1559
- "type": "string",
1560
- "required": false,
1561
- "position": "query"
1562
- },
1563
- {
1564
- "name": "id__like",
1565
- "description": "Contract ID (case-sensitive partial match).",
1566
- "type": "string",
1567
- "required": false,
1568
- "position": "query"
1569
- },
1570
1525
  {
1571
1526
  "name": "id__in",
1572
1527
  "description": "Filter by a comma-separated list of Contract IDs.",
@@ -1954,7 +1909,7 @@
1954
1909
  }
1955
1910
  ],
1956
1911
  "requestTemplate": {
1957
- "url": "/invoice/{invoiceId}/approve",
1912
+ "url": "/invoices/{invoiceId}/approve",
1958
1913
  "method": "PATCH",
1959
1914
  "headers": {
1960
1915
  "Content-Type": "application/json"
@@ -2032,9 +1987,9 @@
2032
1987
  },
2033
1988
  {
2034
1989
  "name": "phone_number",
2035
- "description": "Business Entity phone number with country code (Required).",
1990
+ "description": "Business Entity phone number with country code (optional).",
2036
1991
  "type": "string",
2037
- "required": true,
1992
+ "required": false,
2038
1993
  "position": "body",
2039
1994
  "default": "+911234567890"
2040
1995
  },
@@ -2449,7 +2404,6 @@
2449
2404
  "draft",
2450
2405
  "active",
2451
2406
  "paused",
2452
- "expired",
2453
2407
  "disputed"
2454
2408
  ]
2455
2409
  },
@@ -2470,9 +2424,9 @@
2470
2424
  },
2471
2425
  {
2472
2426
  "name": "end_date",
2473
- "description": "Contract end date in ISO 8601 format (e.g., '2025-12-31T23:59:59.999999').",
2427
+ "description": "Contract end date in ISO 8601 format (e.g., '2025-12-31T23:59:59.999999'). Optional — omit for open-ended contracts.",
2474
2428
  "type": "string",
2475
- "required": true,
2429
+ "required": false,
2476
2430
  "position": "body"
2477
2431
  },
2478
2432
  {
@@ -2491,15 +2445,15 @@
2491
2445
  },
2492
2446
  {
2493
2447
  "name": "renewal_policy",
2494
- "description": "Contract renewal policy (defaults to 'do_not_renew').",
2448
+ "description": "Contract renewal policy. Currently only 'do_not_renew' is supported at runtime.",
2495
2449
  "type": "string",
2496
2450
  "required": false,
2497
2451
  "position": "body",
2498
2452
  "default": "do_not_renew",
2499
2453
  "enum": [
2500
- "do_not_renew",
2501
- "auto_renew",
2502
- "manual"
2454
+ "renew_with_default_contract",
2455
+ "renew_with_existing",
2456
+ "do_not_renew"
2503
2457
  ]
2504
2458
  },
2505
2459
  {
@@ -2512,9 +2466,9 @@
2512
2466
  },
2513
2467
  {
2514
2468
  "name": "phases",
2515
- "description": "Array of contract phases with pricing details. Each phase includes name, start_date, end_date, phase_type, and pricings array.",
2469
+ "description": "Array of contract phases with pricing details. Each phase includes name, start_date, end_date, phase_type, and pricings array. Defaults to empty array if omitted.",
2516
2470
  "type": "array",
2517
- "required": true,
2471
+ "required": false,
2518
2472
  "position": "body"
2519
2473
  },
2520
2474
  {
@@ -2586,7 +2540,7 @@
2586
2540
  },
2587
2541
  {
2588
2542
  "name": "status",
2589
- "description": "Contract status: draft, active, paused, expired, or disputed.",
2543
+ "description": "Contract status: draft, active, paused, or disputed. Cannot set to 'expired' via update.",
2590
2544
  "type": "string",
2591
2545
  "required": true,
2592
2546
  "position": "body",
@@ -2594,7 +2548,6 @@
2594
2548
  "draft",
2595
2549
  "active",
2596
2550
  "paused",
2597
- "expired",
2598
2551
  "disputed"
2599
2552
  ]
2600
2553
  },
@@ -2656,9 +2609,9 @@
2656
2609
  },
2657
2610
  {
2658
2611
  "name": "phases",
2659
- "description": "REQUIRED — Array of contract phases. Without this the API returns 500. Copy phases from getContractById response. Each phase needs at minimum: name, start_date, end_date. Include pricings array if the phase has pricing.",
2612
+ "description": "Array of contract phases. Each phase needs at minimum: name, start_date, end_date. Include pricings array if the phase has pricing. Defaults to empty array if omitted.",
2660
2613
  "type": "array",
2661
- "required": true,
2614
+ "required": false,
2662
2615
  "position": "body"
2663
2616
  },
2664
2617
  {
@@ -3074,15 +3027,15 @@
3074
3027
  },
3075
3028
  {
3076
3029
  "name": "from_date",
3077
- "description": "Start date of the billing period (e.g. 2026-03-01).",
3078
- "type": "string",
3030
+ "description": "Start date of the billing period as a UNIX timestamp in seconds (e.g. 1709251200 for 2024-03-01). Must be an integer, NOT a date string.",
3031
+ "type": "number",
3079
3032
  "required": true,
3080
3033
  "position": "body"
3081
3034
  },
3082
3035
  {
3083
3036
  "name": "to_date",
3084
- "description": "End date of the billing period (e.g. 2026-03-31).",
3085
- "type": "string",
3037
+ "description": "End date of the billing period as a UNIX timestamp in seconds (e.g. 1711929600 for 2024-03-31). Must be an integer, NOT a date string.",
3038
+ "type": "number",
3086
3039
  "required": true,
3087
3040
  "position": "body"
3088
3041
  }
@@ -3258,34 +3211,41 @@
3258
3211
  },
3259
3212
  {
3260
3213
  "name": "createPayment",
3261
- "description": "Record a payment against an invoice. Payment method enum: card, cash, check, charge_back, bank_transfer, direct_debit, other, credits, etc. Type enum: payment, refund, payment_reversal, authorization, tax_withheld. For manual payments use payment_method='other' and type='payment'. Note: customer_id is required.",
3214
+ "description": "Record a payment. Link to invoices via payment_parts array. Payment method enum: card, cash, check, charge_back, bank_transfer, direct_debit, other, credits, etc. Type enum: payment, refund, payment_reversal, authorization, tax_withheld. For manual payments use payment_method='other' and type='payment'.",
3262
3215
  "args": [
3263
3216
  {
3264
- "name": "invoice_id",
3265
- "description": "UUID of the invoice this payment is for.",
3217
+ "name": "customer_id",
3218
+ "description": "UUID of the customer making the payment.",
3266
3219
  "type": "string",
3220
+ "required": false,
3221
+ "position": "body"
3222
+ },
3223
+ {
3224
+ "name": "amount",
3225
+ "description": "Total payment amount in the smallest currency unit (e.g. cents).",
3226
+ "type": "number",
3267
3227
  "required": true,
3268
3228
  "position": "body"
3269
3229
  },
3270
3230
  {
3271
- "name": "customer_id",
3272
- "description": "UUID of the customer making the payment.",
3231
+ "name": "currency_code",
3232
+ "description": "Three-letter ISO 4217 currency code (e.g. USD).",
3273
3233
  "type": "string",
3274
3234
  "required": true,
3275
3235
  "position": "body"
3276
3236
  },
3277
3237
  {
3278
- "name": "amount",
3279
- "description": "Payment amount in the currency specified.",
3280
- "type": "number",
3281
- "required": true,
3238
+ "name": "payment_parts",
3239
+ "description": "Array of invoice allocations. Each element: {invoice_id: 'UUID', amount: 10000}. Links the payment to one or more invoices.",
3240
+ "type": "array",
3241
+ "required": false,
3282
3242
  "position": "body"
3283
3243
  },
3284
3244
  {
3285
3245
  "name": "payment_method",
3286
3246
  "description": "Payment method: card, cash, check, charge_back, bank_transfer, direct_debit, other, credits, ach_credit_transfer, etc. Use 'other' for manual payments.",
3287
3247
  "type": "string",
3288
- "required": true,
3248
+ "required": false,
3289
3249
  "position": "body",
3290
3250
  "enum": [
3291
3251
  "card",
@@ -3303,13 +3263,6 @@
3303
3263
  "ach_credit_transfer"
3304
3264
  ]
3305
3265
  },
3306
- {
3307
- "name": "currency_code",
3308
- "description": "Three-letter ISO 4217 currency code (e.g. USD).",
3309
- "type": "string",
3310
- "required": true,
3311
- "position": "body"
3312
- },
3313
3266
  {
3314
3267
  "name": "type",
3315
3268
  "description": "Payment type: payment, refund, payment_reversal, authorization, or tax_withheld.",
@@ -3325,12 +3278,26 @@
3325
3278
  "tax_withheld"
3326
3279
  ]
3327
3280
  },
3281
+ {
3282
+ "name": "status",
3283
+ "description": "Payment status.",
3284
+ "type": "string",
3285
+ "required": false,
3286
+ "position": "body"
3287
+ },
3328
3288
  {
3329
3289
  "name": "external_id",
3330
3290
  "description": "External reference ID for this payment.",
3331
3291
  "type": "string",
3332
3292
  "required": false,
3333
3293
  "position": "body"
3294
+ },
3295
+ {
3296
+ "name": "timestamp",
3297
+ "description": "Payment timestamp in ISO 8601 format.",
3298
+ "type": "string",
3299
+ "required": false,
3300
+ "position": "body"
3334
3301
  }
3335
3302
  ],
3336
3303
  "requestTemplate": {
@@ -3346,7 +3313,7 @@
3346
3313
  },
3347
3314
  {
3348
3315
  "name": "updatePayment",
3349
- "description": "Update a payment's details such as status.",
3316
+ "description": "Update a payment's invoice allocations (payment_parts).",
3350
3317
  "args": [
3351
3318
  {
3352
3319
  "name": "paymentId",
@@ -3356,16 +3323,9 @@
3356
3323
  "position": "path"
3357
3324
  },
3358
3325
  {
3359
- "name": "status",
3360
- "description": "New payment status.",
3361
- "type": "string",
3362
- "required": false,
3363
- "position": "body"
3364
- },
3365
- {
3366
- "name": "amount",
3367
- "description": "Updated payment amount.",
3368
- "type": "number",
3326
+ "name": "payment_parts",
3327
+ "description": "Updated array of invoice allocations. Each element: {invoice_id: 'UUID', amount: 10000}.",
3328
+ "type": "array",
3369
3329
  "required": false,
3370
3330
  "position": "body"
3371
3331
  }
@@ -3416,7 +3376,7 @@
3416
3376
  "position": "path"
3417
3377
  },
3418
3378
  {
3419
- "name": "amount",
3379
+ "name": "refund_amount",
3420
3380
  "description": "Amount to refund.",
3421
3381
  "type": "number",
3422
3382
  "required": true,
@@ -3490,15 +3450,29 @@
3490
3450
  "position": "body"
3491
3451
  },
3492
3452
  {
3493
- "name": "payment_method",
3494
- "description": "Updated payment method.",
3453
+ "name": "payment_method_details",
3454
+ "description": "Updated payment method details object.",
3455
+ "type": "object",
3456
+ "required": false,
3457
+ "position": "body"
3458
+ },
3459
+ {
3460
+ "name": "payment_parts",
3461
+ "description": "Updated invoice allocations. Array of {invoice_id, amount}.",
3462
+ "type": "array",
3463
+ "required": false,
3464
+ "position": "body"
3465
+ },
3466
+ {
3467
+ "name": "external_id",
3468
+ "description": "Updated external reference ID.",
3495
3469
  "type": "string",
3496
3470
  "required": false,
3497
3471
  "position": "body"
3498
3472
  },
3499
3473
  {
3500
- "name": "currency_code",
3501
- "description": "Updated currency code.",
3474
+ "name": "timestamp",
3475
+ "description": "Updated payment timestamp in ISO 8601 format.",
3502
3476
  "type": "string",
3503
3477
  "required": false,
3504
3478
  "position": "body"
@@ -3655,8 +3629,8 @@
3655
3629
  "position": "query"
3656
3630
  },
3657
3631
  {
3658
- "name": "search",
3659
- "description": "Search by product name.",
3632
+ "name": "name__ilike",
3633
+ "description": "Case-insensitive partial match for product name.",
3660
3634
  "type": "string",
3661
3635
  "required": false,
3662
3636
  "position": "query"
@@ -3730,8 +3704,8 @@
3730
3704
  "position": "query"
3731
3705
  },
3732
3706
  {
3733
- "name": "search",
3734
- "description": "Search query to filter accounts by name or other fields. Format: 'field=value'.",
3707
+ "name": "name__ilike",
3708
+ "description": "Case-insensitive partial match for account name.",
3735
3709
  "type": "string",
3736
3710
  "required": false,
3737
3711
  "position": "query"
@@ -3759,13 +3733,6 @@
3759
3733
  "required": true,
3760
3734
  "position": "body"
3761
3735
  },
3762
- {
3763
- "name": "account_code",
3764
- "description": "Unique account code/number.",
3765
- "type": "string",
3766
- "required": false,
3767
- "position": "body"
3768
- },
3769
3736
  {
3770
3737
  "name": "account_category",
3771
3738
  "description": "Category of account. Valid values: 'Assets', 'Liabilities', 'Equity', 'Income', 'Expenses'.",
@@ -3781,9 +3748,9 @@
3781
3748
  "position": "body"
3782
3749
  },
3783
3750
  {
3784
- "name": "parent_account_id",
3785
- "description": "ID of the parent account for hierarchical structure.",
3786
- "type": "string",
3751
+ "name": "custom_data",
3752
+ "description": "Custom data object for the account.",
3753
+ "type": "object",
3787
3754
  "required": false,
3788
3755
  "position": "body"
3789
3756
  }
@@ -3818,8 +3785,8 @@
3818
3785
  "position": "query"
3819
3786
  },
3820
3787
  {
3821
- "name": "search",
3822
- "description": "Search query to filter journal entries. Format: 'field=value'.",
3788
+ "name": "search_query",
3789
+ "description": "Search query to filter journal entries.",
3823
3790
  "type": "string",
3824
3791
  "required": false,
3825
3792
  "position": "query"
@@ -3841,10 +3808,10 @@
3841
3808
  "description": "Create a new manual journal entry with debit and credit lines.",
3842
3809
  "args": [
3843
3810
  {
3844
- "name": "date",
3845
- "description": "Date of the journal entry (YYYY-MM-DD).",
3811
+ "name": "posted_at",
3812
+ "description": "Posting date of the journal entry in ISO 8601 format (e.g., '2026-01-15T00:00:00').",
3846
3813
  "type": "string",
3847
- "required": true,
3814
+ "required": false,
3848
3815
  "position": "body"
3849
3816
  },
3850
3817
  {
@@ -3863,17 +3830,25 @@
3863
3830
  },
3864
3831
  {
3865
3832
  "name": "journal_lines",
3866
- "description": "Array of journal lines. Each line requires: {account_id, debits, credits, currency}. Use 'debits' and 'credits' (plural, integers in cents). Example: [{account_id:'...', debits:10000, credits:0, currency:'USD'}, {account_id:'...', debits:0, credits:10000, currency:'USD'}].",
3833
+ "description": "Array of journal lines. Each line requires: {account_id, debits, credits, currency}. Use 'debits' and 'credits' (plural, integers in cents). Example: [{account_id:'...', debits:10000, credits:0, currency:'USD'}, {account_id:'...', debits:0, credits:10000, currency:'USD'}]. Optional tags: customer_id, contract_id, invoice_id, custom_tags.",
3867
3834
  "type": "array",
3868
3835
  "required": true,
3869
3836
  "position": "body"
3870
3837
  },
3871
3838
  {
3872
- "name": "reference",
3873
- "description": "External reference number.",
3874
- "type": "string",
3839
+ "name": "custom_data",
3840
+ "description": "Additional metadata as key-value pairs.",
3841
+ "type": "object",
3875
3842
  "required": false,
3876
3843
  "position": "body"
3844
+ },
3845
+ {
3846
+ "name": "status_type",
3847
+ "description": "Journal entry status (default: 'posted').",
3848
+ "type": "string",
3849
+ "required": false,
3850
+ "position": "body",
3851
+ "default": "posted"
3877
3852
  }
3878
3853
  ],
3879
3854
  "requestTemplate": {
@@ -3929,8 +3904,8 @@
3929
3904
  "position": "query"
3930
3905
  },
3931
3906
  {
3932
- "name": "search",
3933
- "description": "Search query to filter journal lines. Format: 'field=value'.",
3907
+ "name": "search_query",
3908
+ "description": "Search query to filter journal lines.",
3934
3909
  "type": "string",
3935
3910
  "required": false,
3936
3911
  "position": "query"
@@ -3952,8 +3927,15 @@
3952
3927
  "description": "Retrieve the balance sheet report showing assets, liabilities, and equity.",
3953
3928
  "args": [
3954
3929
  {
3955
- "name": "as_of_date",
3956
- "description": "Date for the balance sheet snapshot (YYYY-MM-DD). Defaults to today.",
3930
+ "name": "start_date",
3931
+ "description": "Start date for the balance sheet period (YYYY-MM-DD).",
3932
+ "type": "string",
3933
+ "required": false,
3934
+ "position": "query"
3935
+ },
3936
+ {
3937
+ "name": "end_date",
3938
+ "description": "End date for the balance sheet period (YYYY-MM-DD). Defaults to today.",
3957
3939
  "type": "string",
3958
3940
  "required": false,
3959
3941
  "position": "query"
@@ -4012,7 +3994,7 @@
4012
3994
  "position": "path"
4013
3995
  },
4014
3996
  {
4015
- "name": "as_of_date",
3997
+ "name": "as_of",
4016
3998
  "description": "Date for the balance snapshot (YYYY-MM-DD).",
4017
3999
  "type": "string",
4018
4000
  "required": false,
@@ -4057,7 +4039,7 @@
4057
4039
  },
4058
4040
  {
4059
4041
  "name": "type",
4060
- "description": "Product type. Use 'product' for standard products, 'service' for services.",
4042
+ "description": "Product type. Valid values: 'product' (standard product) or 'group' (product group).",
4061
4043
  "type": "string",
4062
4044
  "required": true,
4063
4045
  "position": "body"
@@ -4185,7 +4167,7 @@
4185
4167
  },
4186
4168
  {
4187
4169
  "name": "createProductPricing",
4188
- "description": "Create a new pricing configuration for a product.",
4170
+ "description": "Create a new pricing configuration for a product. The pricing_data object is a discriminated union — the 'pricing_type' field determines which pricing model schema to use.",
4189
4171
  "args": [
4190
4172
  {
4191
4173
  "name": "productId",
@@ -4196,45 +4178,45 @@
4196
4178
  },
4197
4179
  {
4198
4180
  "name": "name",
4199
- "description": "Name of the pricing.",
4200
- "type": "string",
4201
- "required": true,
4202
- "position": "body"
4203
- },
4204
- {
4205
- "name": "pricing_model",
4206
- "description": "Pricing model type (e.g., 'flat_fee', 'per_unit', 'tiered', 'volume', 'staircase', 'percentage').",
4181
+ "description": "Name of the pricing (optional).",
4207
4182
  "type": "string",
4208
- "required": true,
4183
+ "required": false,
4209
4184
  "position": "body"
4210
4185
  },
4211
4186
  {
4212
- "name": "currency",
4213
- "description": "Currency code (e.g., 'USD').",
4187
+ "name": "description",
4188
+ "description": "Description of this pricing configuration.",
4214
4189
  "type": "string",
4215
4190
  "required": false,
4216
4191
  "position": "body"
4217
4192
  },
4218
4193
  {
4219
4194
  "name": "pricing_data",
4220
- "description": "Pricing data object. Must include 'pricing_type' discriminator matching pricing_model. For flat_fee: {pricing_type:'flat_fee', unit_amount:10000} (amount in cents). For per_unit: {pricing_type:'per_unit', unit_amount:500}.",
4195
+ "description": "Pricing data object (required). Must include 'pricing_type' discriminator. Supported types: flat_fee: {pricing_type:'flat_fee', unit_amount:10000}. per_unit: {pricing_type:'per_unit', unit_amount:500}. tiered: {pricing_type:'tiered', unit_amount:[1000,500], up_to:[100,null]}. volume: {pricing_type:'volume', unit_amount:[1000,500], up_to:[100,null]}. percent: {pricing_type:'percent', percentage:5.0}. package: {pricing_type:'package', package_size:10, unit_amount:5000}. step: {pricing_type:'step', unit_amount:[...], up_to:[...]}. matrix: {pricing_type:'matrix', dimensions:[...], values:[...]}.",
4221
4196
  "type": "object",
4222
4197
  "required": true,
4223
4198
  "position": "body"
4224
4199
  },
4225
4200
  {
4226
- "name": "billing_frequency",
4227
- "description": "Billing frequency (e.g., 'monthly', 'quarterly', 'annually').",
4228
- "type": "string",
4201
+ "name": "billing_period",
4202
+ "description": "Billing cadence for this pricing. Object with 'cadence' (ISO 8601 duration, e.g. 'P1M' for monthly, 'P3M' for quarterly, 'P1Y' for annually) and optional 'offset'. Example: {cadence: 'P1M'}.",
4203
+ "type": "object",
4229
4204
  "required": false,
4230
4205
  "position": "body"
4231
4206
  },
4232
4207
  {
4233
- "name": "invoice_timing",
4234
- "description": "When to invoice: 'in_advance' or 'in_arrears'.",
4235
- "type": "string",
4208
+ "name": "is_recurring",
4209
+ "description": "Whether this pricing is recurring (true) or one-time (false).",
4210
+ "type": "boolean",
4236
4211
  "required": false,
4237
4212
  "position": "body"
4213
+ },
4214
+ {
4215
+ "name": "return_existing",
4216
+ "description": "If true, returns existing pricing with matching hash instead of creating a duplicate.",
4217
+ "type": "boolean",
4218
+ "required": false,
4219
+ "position": "query"
4238
4220
  }
4239
4221
  ],
4240
4222
  "requestTemplate": {
@@ -4267,8 +4249,15 @@
4267
4249
  "position": "query"
4268
4250
  },
4269
4251
  {
4270
- "name": "search",
4271
- "description": "Search query to filter plans. Format: 'field=value'.",
4252
+ "name": "name__ilike",
4253
+ "description": "Case-insensitive partial match for plan name.",
4254
+ "type": "string",
4255
+ "required": false,
4256
+ "position": "query"
4257
+ },
4258
+ {
4259
+ "name": "status",
4260
+ "description": "Filter by plan status. Valid values: draft, active, archived.",
4272
4261
  "type": "string",
4273
4262
  "required": false,
4274
4263
  "position": "query"
@@ -4310,7 +4299,7 @@
4310
4299
  },
4311
4300
  {
4312
4301
  "name": "createPlan",
4313
- "description": "Create a new plan (template) that defines a reusable contract structure with phases and pricing.",
4302
+ "description": "Create a new plan (template) that defines a reusable contract structure with products and pricing.",
4314
4303
  "args": [
4315
4304
  {
4316
4305
  "name": "name",
@@ -4320,22 +4309,29 @@
4320
4309
  "position": "body"
4321
4310
  },
4322
4311
  {
4323
- "name": "description",
4324
- "description": "Description of the plan.",
4312
+ "name": "currency",
4313
+ "description": "Three-letter ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP').",
4325
4314
  "type": "string",
4315
+ "required": true,
4316
+ "position": "body"
4317
+ },
4318
+ {
4319
+ "name": "display_config",
4320
+ "description": "Customer-facing display content. Object with fields like title, description, etc.",
4321
+ "type": "object",
4326
4322
  "required": false,
4327
4323
  "position": "body"
4328
4324
  },
4329
4325
  {
4330
- "name": "currency",
4331
- "description": "Three-letter ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP').",
4326
+ "name": "duration",
4327
+ "description": "Billing period in ISO 8601 duration format (e.g., 'P1M' for monthly, 'P1Y' for yearly).",
4332
4328
  "type": "string",
4333
- "required": true,
4329
+ "required": false,
4334
4330
  "position": "body"
4335
4331
  },
4336
4332
  {
4337
- "name": "phases",
4338
- "description": "Array of plan phases, each with name, pricings, etc.",
4333
+ "name": "products",
4334
+ "description": "Array of products to add to plan, each with product_id and pricing configuration.",
4339
4335
  "type": "array",
4340
4336
  "required": false,
4341
4337
  "position": "body"
@@ -4346,6 +4342,20 @@
4346
4342
  "type": "object",
4347
4343
  "required": false,
4348
4344
  "position": "body"
4345
+ },
4346
+ {
4347
+ "name": "status",
4348
+ "description": "Plan status. Default: 'draft'. Options: 'draft', 'active', 'archived'.",
4349
+ "type": "string",
4350
+ "required": false,
4351
+ "position": "body"
4352
+ },
4353
+ {
4354
+ "name": "business_entity_id",
4355
+ "description": "Business entity ID for invoicing.",
4356
+ "type": "string",
4357
+ "required": false,
4358
+ "position": "body"
4349
4359
  }
4350
4360
  ],
4351
4361
  "requestTemplate": {
@@ -4409,9 +4419,9 @@
4409
4419
  },
4410
4420
  {
4411
4421
  "name": "end_date",
4412
- "description": "End date for the estimate (YYYY-MM-DD).",
4422
+ "description": "End date for the estimate (YYYY-MM-DD). Optional — calculated from plan duration if omitted.",
4413
4423
  "type": "string",
4414
- "required": true,
4424
+ "required": false,
4415
4425
  "position": "body"
4416
4426
  }
4417
4427
  ],
@@ -4431,8 +4441,8 @@
4431
4441
  "description": "Retrieve a list of custom attribute definitions configured for the organization.",
4432
4442
  "args": [
4433
4443
  {
4434
- "name": "entity_type",
4435
- "description": "Filter by entity type (e.g., 'customer', 'contract', 'invoice', 'product').",
4444
+ "name": "module",
4445
+ "description": "Filter by module. Valid values: 'customers', 'contracts', 'invoices', 'payments', 'products', 'plans'.",
4436
4446
  "type": "string",
4437
4447
  "required": false,
4438
4448
  "position": "query"
@@ -4476,7 +4486,7 @@
4476
4486
  },
4477
4487
  {
4478
4488
  "name": "data_type",
4479
- "description": "Data type of the attribute (e.g., 'string', 'number', 'boolean', 'date', 'enum').",
4489
+ "description": "Data type of the attribute. Valid values: 'STRING', 'INTEGER', 'FLOAT', 'BOOLEAN', 'LIST_STRING', 'ENUM', 'JSON', 'DATE'.",
4480
4490
  "type": "string",
4481
4491
  "required": true,
4482
4492
  "position": "body"
@@ -4548,23 +4558,9 @@
4548
4558
  "position": "body"
4549
4559
  },
4550
4560
  {
4551
- "name": "tax_code",
4552
- "description": "Tax code identifier.",
4553
- "type": "string",
4554
- "required": false,
4555
- "position": "body"
4556
- },
4557
- {
4558
- "name": "description",
4559
- "description": "Description of the tax category.",
4560
- "type": "string",
4561
- "required": false,
4562
- "position": "body"
4563
- },
4564
- {
4565
- "name": "rate",
4566
- "description": "Tax rate as a decimal (e.g., 0.1 for 10%).",
4567
- "type": "number",
4561
+ "name": "external_codes",
4562
+ "description": "Array of external tax code mappings (e.g., [{ \"provider\": \"avalara\", \"code\": \"P0000000\" }]).",
4563
+ "type": "array",
4568
4564
  "required": false,
4569
4565
  "position": "body"
4570
4566
  }
@@ -4580,189 +4576,6 @@
4580
4576
  "prependBody": "## Created Tax Category\n\n"
4581
4577
  }
4582
4578
  },
4583
- {
4584
- "name": "createQuote",
4585
- "description": "Create a new quote/proposal for a customer.",
4586
- "args": [
4587
- {
4588
- "name": "name",
4589
- "description": "Name/title of the quote.",
4590
- "type": "string",
4591
- "required": true,
4592
- "position": "body"
4593
- },
4594
- {
4595
- "name": "currency",
4596
- "description": "Currency code (e.g., 'USD').",
4597
- "type": "string",
4598
- "required": true,
4599
- "position": "body"
4600
- },
4601
- {
4602
- "name": "line_items",
4603
- "description": "Array of line items for the quote. Each item includes product/pricing details.",
4604
- "type": "array",
4605
- "required": true,
4606
- "position": "body"
4607
- },
4608
- {
4609
- "name": "customer_id",
4610
- "description": "The customer ID this quote is for (required for non-amendment quotes).",
4611
- "type": "string",
4612
- "required": true,
4613
- "position": "body"
4614
- },
4615
- {
4616
- "name": "description",
4617
- "description": "Description of the quote.",
4618
- "type": "string",
4619
- "required": false,
4620
- "position": "body"
4621
- },
4622
- {
4623
- "name": "start_date",
4624
- "description": "Start date for the quote (YYYY-MM-DD).",
4625
- "type": "string",
4626
- "required": true,
4627
- "position": "body"
4628
- },
4629
- {
4630
- "name": "end_date",
4631
- "description": "End date for the quote (YYYY-MM-DD).",
4632
- "type": "string",
4633
- "required": true,
4634
- "position": "body"
4635
- },
4636
- {
4637
- "name": "custom_attributes",
4638
- "description": "Custom attributes as key-value pairs.",
4639
- "type": "object",
4640
- "required": false,
4641
- "position": "body"
4642
- }
4643
- ],
4644
- "requestTemplate": {
4645
- "url": "/quotes",
4646
- "method": "POST",
4647
- "headers": {
4648
- "Content-Type": "application/json"
4649
- }
4650
- },
4651
- "responseTemplate": {
4652
- "prependBody": "## Created Quote\n\n"
4653
- }
4654
- },
4655
- {
4656
- "name": "previewQuoteEstimate",
4657
- "description": "Preview the estimated billing for a quote before creating it. Requires customer_id, currency, and line_items at minimum. Use getProductPricings to find valid product_id + pricing_id combos for line_items.",
4658
- "args": [
4659
- {
4660
- "name": "customer_id",
4661
- "description": "The customer ID for the estimate.",
4662
- "type": "string",
4663
- "required": true,
4664
- "position": "body"
4665
- },
4666
- {
4667
- "name": "currency",
4668
- "description": "Three-letter ISO 4217 currency code (e.g. USD).",
4669
- "type": "string",
4670
- "required": true,
4671
- "position": "body"
4672
- },
4673
- {
4674
- "name": "line_items",
4675
- "description": "Array of line items. Each item: {product_id, pricing_id}. The pricing_id must belong to the product_id — use getProductPricings to find valid combos.",
4676
- "type": "array",
4677
- "required": true,
4678
- "position": "body"
4679
- },
4680
- {
4681
- "name": "plan_id",
4682
- "description": "Plan ID to estimate (alternative to line_items).",
4683
- "type": "string",
4684
- "required": false,
4685
- "position": "body"
4686
- },
4687
- {
4688
- "name": "start_date",
4689
- "description": "Start date (YYYY-MM-DD).",
4690
- "type": "string",
4691
- "required": true,
4692
- "position": "body"
4693
- },
4694
- {
4695
- "name": "end_date",
4696
- "description": "End date (YYYY-MM-DD).",
4697
- "type": "string",
4698
- "required": true,
4699
- "position": "body"
4700
- },
4701
- {
4702
- "name": "phases",
4703
- "description": "Array of quote phases with pricing.",
4704
- "type": "array",
4705
- "required": false,
4706
- "position": "body"
4707
- }
4708
- ],
4709
- "requestTemplate": {
4710
- "url": "/quotes/preview",
4711
- "method": "POST",
4712
- "headers": {
4713
- "Content-Type": "application/json"
4714
- }
4715
- },
4716
- "responseTemplate": {
4717
- "prependBody": "## Quote Estimate Preview\n\n"
4718
- }
4719
- },
4720
- {
4721
- "name": "getQuoteById",
4722
- "description": "Retrieve a quote by its ID, including phases, pricing, and status.",
4723
- "args": [
4724
- {
4725
- "name": "quoteId",
4726
- "description": "The unique identifier of the quote.",
4727
- "type": "string",
4728
- "required": true,
4729
- "position": "path"
4730
- }
4731
- ],
4732
- "requestTemplate": {
4733
- "url": "/quotes/{quoteId}",
4734
- "method": "GET",
4735
- "headers": {
4736
- "Content-Type": "application/json"
4737
- }
4738
- },
4739
- "responseTemplate": {
4740
- "prependBody": "## Quote Details\n\n"
4741
- }
4742
- },
4743
- {
4744
- "name": "acceptQuote",
4745
- "description": "Accept a quote, converting it into an active contract.",
4746
- "args": [
4747
- {
4748
- "name": "quoteId",
4749
- "description": "The unique identifier of the quote to accept.",
4750
- "type": "string",
4751
- "required": true,
4752
- "position": "path"
4753
- }
4754
- ],
4755
- "requestTemplate": {
4756
- "url": "/quotes/{quoteId}/accept",
4757
- "method": "POST",
4758
- "headers": {
4759
- "Content-Type": "application/json"
4760
- }
4761
- },
4762
- "responseTemplate": {
4763
- "prependBody": "## Accepted Quote\n\n"
4764
- }
4765
- },
4766
4579
  {
4767
4580
  "name": "listJobs",
4768
4581
  "description": "Retrieve a paginated list of async jobs (invoice generation, revenue recognition, etc.).",
@@ -4838,7 +4651,7 @@
4838
4651
  "name": "first_name",
4839
4652
  "description": "First name of the contact.",
4840
4653
  "type": "string",
4841
- "required": true,
4654
+ "required": false,
4842
4655
  "position": "body"
4843
4656
  },
4844
4657
  {
@@ -4856,22 +4669,15 @@
4856
4669
  "position": "body"
4857
4670
  },
4858
4671
  {
4859
- "name": "phone",
4860
- "description": "Phone number of the contact.",
4861
- "type": "string",
4862
- "required": false,
4863
- "position": "body"
4864
- },
4865
- {
4866
- "name": "designation",
4867
- "description": "Job title/designation of the contact.",
4868
- "type": "string",
4672
+ "name": "send_contract",
4673
+ "description": "Whether to send contracts to this contact.",
4674
+ "type": "boolean",
4869
4675
  "required": false,
4870
4676
  "position": "body"
4871
4677
  },
4872
4678
  {
4873
- "name": "is_primary",
4874
- "description": "Whether this is the primary contact.",
4679
+ "name": "send_invoice",
4680
+ "description": "Whether to send invoices to this contact.",
4875
4681
  "type": "boolean",
4876
4682
  "required": false,
4877
4683
  "position": "body"
@@ -4890,7 +4696,7 @@
4890
4696
  },
4891
4697
  {
4892
4698
  "name": "updateContact",
4893
- "description": "Update an existing contact's details. Requires customer (customer ID) and email even for partial updates.",
4699
+ "description": "Update an existing contact's details. Supports partial updates.",
4894
4700
  "args": [
4895
4701
  {
4896
4702
  "name": "contactId",
@@ -4901,9 +4707,9 @@
4901
4707
  },
4902
4708
  {
4903
4709
  "name": "customer",
4904
- "description": "The customer ID (UUID) this contact belongs to. Required even for updates.",
4710
+ "description": "The customer ID (UUID) this contact belongs to.",
4905
4711
  "type": "string",
4906
- "required": true,
4712
+ "required": false,
4907
4713
  "position": "body"
4908
4714
  },
4909
4715
  {
@@ -4922,28 +4728,21 @@
4922
4728
  },
4923
4729
  {
4924
4730
  "name": "email",
4925
- "description": "Email address of the contact. Required even for updates.",
4926
- "type": "string",
4927
- "required": true,
4928
- "position": "body"
4929
- },
4930
- {
4931
- "name": "phone",
4932
- "description": "Updated phone number.",
4731
+ "description": "Updated email address.",
4933
4732
  "type": "string",
4934
4733
  "required": false,
4935
4734
  "position": "body"
4936
4735
  },
4937
4736
  {
4938
- "name": "designation",
4939
- "description": "Updated job title/designation.",
4940
- "type": "string",
4737
+ "name": "send_contract",
4738
+ "description": "Whether to send contracts to this contact.",
4739
+ "type": "boolean",
4941
4740
  "required": false,
4942
4741
  "position": "body"
4943
4742
  },
4944
4743
  {
4945
- "name": "is_primary",
4946
- "description": "Whether this is the primary contact.",
4744
+ "name": "send_invoice",
4745
+ "description": "Whether to send invoices to this contact.",
4947
4746
  "type": "boolean",
4948
4747
  "required": false,
4949
4748
  "position": "body"
@@ -5039,9 +4838,9 @@
5039
4838
  "position": "body"
5040
4839
  },
5041
4840
  {
5042
- "name": "tax_id",
5043
- "description": "Updated tax ID.",
5044
- "type": "string",
4841
+ "name": "tax_config",
4842
+ "description": "Tax configuration object (e.g., { \"tax_id\": \"...\", \"tax_provider\": \"...\" }).",
4843
+ "type": "object",
5045
4844
  "required": false,
5046
4845
  "position": "body"
5047
4846
  },
@@ -5148,11 +4947,25 @@
5148
4947
  "position": "body"
5149
4948
  },
5150
4949
  {
5151
- "name": "address_type",
5152
- "description": "Type of address (e.g., 'billing', 'shipping').",
4950
+ "name": "line3",
4951
+ "description": "Address line 3.",
5153
4952
  "type": "string",
5154
4953
  "required": false,
5155
4954
  "position": "body"
4955
+ },
4956
+ {
4957
+ "name": "is_default_billing",
4958
+ "description": "Set as default billing address. Default: false.",
4959
+ "type": "boolean",
4960
+ "required": false,
4961
+ "position": "body"
4962
+ },
4963
+ {
4964
+ "name": "is_default_shipping",
4965
+ "description": "Set as default shipping address. Default: false.",
4966
+ "type": "boolean",
4967
+ "required": false,
4968
+ "position": "body"
5156
4969
  }
5157
4970
  ],
5158
4971
  "requestTemplate": {
@@ -5232,6 +5045,27 @@
5232
5045
  "type": "string",
5233
5046
  "required": false,
5234
5047
  "position": "body"
5048
+ },
5049
+ {
5050
+ "name": "line3",
5051
+ "description": "Updated address line 3.",
5052
+ "type": "string",
5053
+ "required": false,
5054
+ "position": "body"
5055
+ },
5056
+ {
5057
+ "name": "is_default_billing",
5058
+ "description": "Set as default billing address.",
5059
+ "type": "boolean",
5060
+ "required": false,
5061
+ "position": "body"
5062
+ },
5063
+ {
5064
+ "name": "is_default_shipping",
5065
+ "description": "Set as default shipping address.",
5066
+ "type": "boolean",
5067
+ "required": false,
5068
+ "position": "body"
5235
5069
  }
5236
5070
  ],
5237
5071
  "requestTemplate": {
@@ -5287,14 +5121,14 @@
5287
5121
  "position": "body"
5288
5122
  },
5289
5123
  {
5290
- "name": "gateway",
5291
- "description": "Payment gateway name (e.g., 'stripe').",
5124
+ "name": "connector",
5125
+ "description": "Payment connector name (e.g., 'stripe').",
5292
5126
  "type": "string",
5293
5127
  "required": false,
5294
5128
  "position": "body"
5295
5129
  },
5296
5130
  {
5297
- "name": "is_default",
5131
+ "name": "set_as_default",
5298
5132
  "description": "Whether to set as the default payment method.",
5299
5133
  "type": "boolean",
5300
5134
  "required": false,