mcp-zenskar 1.1.12 → 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/mcp-config.json +626 -59
- package/src/server.js +4 -0
- package/src/ui/shapes/app.html +12 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-zenskar",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.14",
|
|
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": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"author": "Abhishek Gahlot <me@abhishek.it>",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
27
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
28
28
|
"uuid": "^9.0.1",
|
|
29
29
|
"zod": "^3.22.0"
|
|
30
30
|
},
|
package/src/mcp-config.json
CHANGED
|
@@ -790,14 +790,14 @@
|
|
|
790
790
|
},
|
|
791
791
|
{
|
|
792
792
|
"name": "start_date",
|
|
793
|
-
"description": "Start date of the estimate
|
|
793
|
+
"description": "Start date of the estimate window. ISO 8601 date format only — YYYY-MM-DD (e.g., '2025-01-15'). NOT datetime.",
|
|
794
794
|
"type": "string",
|
|
795
795
|
"required": true,
|
|
796
796
|
"position": "query"
|
|
797
797
|
},
|
|
798
798
|
{
|
|
799
799
|
"name": "end_date",
|
|
800
|
-
"description": "End date of the estimate
|
|
800
|
+
"description": "End date of the estimate window. ISO 8601 date format only — YYYY-MM-DD (e.g., '2025-01-31'). NOT datetime.",
|
|
801
801
|
"type": "string",
|
|
802
802
|
"required": true,
|
|
803
803
|
"position": "query"
|
|
@@ -1071,7 +1071,7 @@
|
|
|
1071
1071
|
},
|
|
1072
1072
|
{
|
|
1073
1073
|
"name": "getRawMetricLogs",
|
|
1074
|
-
"description": "Get Usage Event
|
|
1074
|
+
"description": "Get recent Usage Event rows for a resource by ID. Returns the most recent event rows; backend does NOT support filters, pagination, ordering, or aggregation on this endpoint. For filtered/aggregated queries use the aggregate endpoints. Backend/API terminology may also call this a raw metric.",
|
|
1075
1075
|
"args": [
|
|
1076
1076
|
{
|
|
1077
1077
|
"name": "rawMetricId",
|
|
@@ -1079,43 +1079,6 @@
|
|
|
1079
1079
|
"type": "string",
|
|
1080
1080
|
"required": true,
|
|
1081
1081
|
"position": "path"
|
|
1082
|
-
},
|
|
1083
|
-
{
|
|
1084
|
-
"name": "filters",
|
|
1085
|
-
"description": "Optional visual-query filter array, matching the frontend usage-event viewer format. Default is an empty filter list.",
|
|
1086
|
-
"type": "array",
|
|
1087
|
-
"required": false,
|
|
1088
|
-
"position": "body"
|
|
1089
|
-
},
|
|
1090
|
-
{
|
|
1091
|
-
"name": "limit",
|
|
1092
|
-
"description": "Maximum number of event rows to return. Defaults to 20, matching frontend behavior.",
|
|
1093
|
-
"type": "integer",
|
|
1094
|
-
"required": false,
|
|
1095
|
-
"position": "body",
|
|
1096
|
-
"default": 20
|
|
1097
|
-
},
|
|
1098
|
-
{
|
|
1099
|
-
"name": "offset",
|
|
1100
|
-
"description": "Pagination offset for event rows. Defaults to 0.",
|
|
1101
|
-
"type": "integer",
|
|
1102
|
-
"required": false,
|
|
1103
|
-
"position": "body",
|
|
1104
|
-
"default": 0
|
|
1105
|
-
},
|
|
1106
|
-
{
|
|
1107
|
-
"name": "aggregate_operation",
|
|
1108
|
-
"description": "Optional aggregate operation object used by the frontend for event counts (for example COUNT on timestamp). Leave null for normal row listing.",
|
|
1109
|
-
"type": "object",
|
|
1110
|
-
"required": false,
|
|
1111
|
-
"position": "body"
|
|
1112
|
-
},
|
|
1113
|
-
{
|
|
1114
|
-
"name": "order_by",
|
|
1115
|
-
"description": "Optional ordering array. Defaults to [{column:'timestamp', type:'DESC'}] to match frontend event viewing.",
|
|
1116
|
-
"type": "array",
|
|
1117
|
-
"required": false,
|
|
1118
|
-
"position": "body"
|
|
1119
1082
|
}
|
|
1120
1083
|
],
|
|
1121
1084
|
"requestTemplate": {
|
|
@@ -1487,7 +1450,7 @@
|
|
|
1487
1450
|
},
|
|
1488
1451
|
{
|
|
1489
1452
|
"name": "createContractPrompt",
|
|
1490
|
-
"description": "
|
|
1453
|
+
"description": "Save a reusable AI extraction prompt that drives contract data extraction (used by extractContractFromRaw). Use this to create / update / version the instructions the AI follows when parsing raw contract text.",
|
|
1491
1454
|
"needsApproval": false,
|
|
1492
1455
|
"approvalConfig": {
|
|
1493
1456
|
"title": "Create Contract Prompt",
|
|
@@ -1503,21 +1466,21 @@
|
|
|
1503
1466
|
"args": [
|
|
1504
1467
|
{
|
|
1505
1468
|
"name": "prompt_name",
|
|
1506
|
-
"description": "
|
|
1469
|
+
"description": "Identifier for this prompt template (e.g., 'Standard Contract Extraction', 'SaaS Subscription v2'). Used to look up / version-track the prompt.",
|
|
1507
1470
|
"type": "string",
|
|
1508
1471
|
"required": true,
|
|
1509
1472
|
"position": "body"
|
|
1510
1473
|
},
|
|
1511
1474
|
{
|
|
1512
1475
|
"name": "prompt_text",
|
|
1513
|
-
"description": "
|
|
1476
|
+
"description": "AI instructions that tell the model how to extract contract fields from raw text (e.g., what to do with dates, products, pricing tiers, billing cadence). This is the system/user prompt body the extractor will run against.",
|
|
1514
1477
|
"type": "string",
|
|
1515
1478
|
"required": true,
|
|
1516
1479
|
"position": "body"
|
|
1517
1480
|
},
|
|
1518
1481
|
{
|
|
1519
1482
|
"name": "prompt_schema",
|
|
1520
|
-
"description": "Optional schema
|
|
1483
|
+
"description": "Optional schema name pinning the expected output shape (e.g., 'billing_schema', 'subscription_schema'). Null lets the AI infer.",
|
|
1521
1484
|
"type": [
|
|
1522
1485
|
"string",
|
|
1523
1486
|
"null"
|
|
@@ -2001,6 +1964,165 @@
|
|
|
2001
1964
|
"prependBody": "## Revenue Recognition\n\nRevenue recognition has been processed successfully:\n\n"
|
|
2002
1965
|
}
|
|
2003
1966
|
},
|
|
1967
|
+
{
|
|
1968
|
+
"name": "listRevenuePostings",
|
|
1969
|
+
"description": "Retrieve a paginated list of revenue postings (per-period revenue allocations against revenue contracts and performance obligations). Supports filtering by contract, revenue contract, performance obligation, posting date, and currency.",
|
|
1970
|
+
"args": [
|
|
1971
|
+
{
|
|
1972
|
+
"name": "cursor",
|
|
1973
|
+
"description": "Cursor for pagination.",
|
|
1974
|
+
"type": "string",
|
|
1975
|
+
"required": false,
|
|
1976
|
+
"position": "query"
|
|
1977
|
+
},
|
|
1978
|
+
{
|
|
1979
|
+
"name": "limit",
|
|
1980
|
+
"description": "Maximum number of revenue postings to return per page.",
|
|
1981
|
+
"type": "integer",
|
|
1982
|
+
"required": false,
|
|
1983
|
+
"position": "query"
|
|
1984
|
+
},
|
|
1985
|
+
{
|
|
1986
|
+
"name": "order",
|
|
1987
|
+
"description": "Sort order. Prefix with '-' for descending. Defaults to '-created_at'.",
|
|
1988
|
+
"type": "string",
|
|
1989
|
+
"required": false,
|
|
1990
|
+
"position": "query"
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
"name": "contract_id",
|
|
1994
|
+
"description": "Filter by billing contract UUID.",
|
|
1995
|
+
"type": "string",
|
|
1996
|
+
"required": false,
|
|
1997
|
+
"position": "query"
|
|
1998
|
+
},
|
|
1999
|
+
{
|
|
2000
|
+
"name": "revenue_contract_id",
|
|
2001
|
+
"description": "Filter by revenue recognition contract UUID.",
|
|
2002
|
+
"type": "string",
|
|
2003
|
+
"required": false,
|
|
2004
|
+
"position": "query"
|
|
2005
|
+
},
|
|
2006
|
+
{
|
|
2007
|
+
"name": "revenue_contract_item_id",
|
|
2008
|
+
"description": "Filter by revenue contract item UUID.",
|
|
2009
|
+
"type": "string",
|
|
2010
|
+
"required": false,
|
|
2011
|
+
"position": "query"
|
|
2012
|
+
},
|
|
2013
|
+
{
|
|
2014
|
+
"name": "performance_obligation_id",
|
|
2015
|
+
"description": "Filter by performance obligation UUID.",
|
|
2016
|
+
"type": "string",
|
|
2017
|
+
"required": false,
|
|
2018
|
+
"position": "query"
|
|
2019
|
+
},
|
|
2020
|
+
{
|
|
2021
|
+
"name": "posting_date__gte",
|
|
2022
|
+
"description": "Posting date lower bound (inclusive, YYYY-MM-DD).",
|
|
2023
|
+
"type": "string",
|
|
2024
|
+
"required": false,
|
|
2025
|
+
"position": "query"
|
|
2026
|
+
},
|
|
2027
|
+
{
|
|
2028
|
+
"name": "posting_date__lte",
|
|
2029
|
+
"description": "Posting date upper bound (inclusive, YYYY-MM-DD).",
|
|
2030
|
+
"type": "string",
|
|
2031
|
+
"required": false,
|
|
2032
|
+
"position": "query"
|
|
2033
|
+
},
|
|
2034
|
+
{
|
|
2035
|
+
"name": "currency",
|
|
2036
|
+
"description": "Three-letter ISO currency code (e.g. 'USD').",
|
|
2037
|
+
"type": "string",
|
|
2038
|
+
"required": false,
|
|
2039
|
+
"position": "query"
|
|
2040
|
+
},
|
|
2041
|
+
{
|
|
2042
|
+
"name": "journal_entry_id__isnull",
|
|
2043
|
+
"description": "If true, return only postings not yet posted to a journal entry. If false, return only postings already journalised.",
|
|
2044
|
+
"type": "boolean",
|
|
2045
|
+
"required": false,
|
|
2046
|
+
"position": "query"
|
|
2047
|
+
}
|
|
2048
|
+
],
|
|
2049
|
+
"requestTemplate": {
|
|
2050
|
+
"url": "/revenue_recognition_v3/revenue_postings",
|
|
2051
|
+
"method": "GET",
|
|
2052
|
+
"headers": {
|
|
2053
|
+
"Content-Type": "application/json"
|
|
2054
|
+
}
|
|
2055
|
+
},
|
|
2056
|
+
"responseTemplate": {
|
|
2057
|
+
"prependBody": "## Revenue Postings\n\n"
|
|
2058
|
+
}
|
|
2059
|
+
},
|
|
2060
|
+
{
|
|
2061
|
+
"name": "refreshRevenuePostings",
|
|
2062
|
+
"description": "Recalculate and upsert revenue postings for a specific revenue contract item / performance obligation at a given posting date. All five identifiers are required (the backend rejects partial inputs). Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.",
|
|
2063
|
+
"needsApproval": true,
|
|
2064
|
+
"approvalConfig": {
|
|
2065
|
+
"title": "Refresh Revenue Postings",
|
|
2066
|
+
"description": "This will recalculate and upsert revenue postings for the specified revenue contract item / performance obligation at the specified posting date.",
|
|
2067
|
+
"warningText": "This action mutates revenue posting state and may shift period revenue figures. Review the identifiers and posting_date before confirming.",
|
|
2068
|
+
"confirmText": "Refresh Postings",
|
|
2069
|
+
"cancelText": "Cancel",
|
|
2070
|
+
"sensitiveFields": [
|
|
2071
|
+
"contract_id",
|
|
2072
|
+
"revenue_contract_id",
|
|
2073
|
+
"revenue_contract_item_id",
|
|
2074
|
+
"performance_obligation_id",
|
|
2075
|
+
"posting_date"
|
|
2076
|
+
]
|
|
2077
|
+
},
|
|
2078
|
+
"args": [
|
|
2079
|
+
{
|
|
2080
|
+
"name": "contract_id",
|
|
2081
|
+
"description": "Billing contract UUID (required).",
|
|
2082
|
+
"type": "string",
|
|
2083
|
+
"required": true,
|
|
2084
|
+
"position": "body"
|
|
2085
|
+
},
|
|
2086
|
+
{
|
|
2087
|
+
"name": "revenue_contract_id",
|
|
2088
|
+
"description": "Revenue recognition contract UUID (required).",
|
|
2089
|
+
"type": "string",
|
|
2090
|
+
"required": true,
|
|
2091
|
+
"position": "body"
|
|
2092
|
+
},
|
|
2093
|
+
{
|
|
2094
|
+
"name": "revenue_contract_item_id",
|
|
2095
|
+
"description": "Revenue contract item UUID (required).",
|
|
2096
|
+
"type": "string",
|
|
2097
|
+
"required": true,
|
|
2098
|
+
"position": "body"
|
|
2099
|
+
},
|
|
2100
|
+
{
|
|
2101
|
+
"name": "performance_obligation_id",
|
|
2102
|
+
"description": "Performance obligation UUID (required).",
|
|
2103
|
+
"type": "string",
|
|
2104
|
+
"required": true,
|
|
2105
|
+
"position": "body"
|
|
2106
|
+
},
|
|
2107
|
+
{
|
|
2108
|
+
"name": "posting_date",
|
|
2109
|
+
"description": "Posting date in YYYY-MM-DD format (required).",
|
|
2110
|
+
"type": "string",
|
|
2111
|
+
"required": true,
|
|
2112
|
+
"position": "body"
|
|
2113
|
+
}
|
|
2114
|
+
],
|
|
2115
|
+
"requestTemplate": {
|
|
2116
|
+
"url": "/revenue_recognition_v3/revenue_postings/refresh",
|
|
2117
|
+
"method": "POST",
|
|
2118
|
+
"headers": {
|
|
2119
|
+
"Content-Type": "application/json"
|
|
2120
|
+
}
|
|
2121
|
+
},
|
|
2122
|
+
"responseTemplate": {
|
|
2123
|
+
"prependBody": "## Revenue Postings Refreshed\n\n"
|
|
2124
|
+
}
|
|
2125
|
+
},
|
|
2004
2126
|
{
|
|
2005
2127
|
"name": "createBusinessEntity",
|
|
2006
2128
|
"description": "Creates a new business entity in the system with various attributes including name, address, contact details, tax configuration, and logo. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.",
|
|
@@ -2301,6 +2423,20 @@
|
|
|
2301
2423
|
"type": "string",
|
|
2302
2424
|
"required": false,
|
|
2303
2425
|
"position": "body"
|
|
2426
|
+
},
|
|
2427
|
+
{
|
|
2428
|
+
"name": "custom_data",
|
|
2429
|
+
"description": "Custom key-value pairs for additional customer info (e.g., {\"industry\": \"saas\", \"account_tier\": \"enterprise\", \"sales_rep\": \"jane\"}). Optional.",
|
|
2430
|
+
"type": "object",
|
|
2431
|
+
"required": false,
|
|
2432
|
+
"position": "body"
|
|
2433
|
+
},
|
|
2434
|
+
{
|
|
2435
|
+
"name": "tax_info",
|
|
2436
|
+
"description": "List of tax identifiers. Each item: {country_code, tax_code, tax_id}. country_code uses mixed ISO formats (e.g. 'USA', 'IND', 'AUS', 'EU', 'GB'/'UK', 'SG', 'JP', 'BR', 'CA', and 2-letter codes for EU members like 'DE', 'FR', 'IT'). tax_code varies by country — common pairings: VAT (most of EU + UK + CH + most of MENA + IL/PH/ZA/EG/JO etc.), GST (India, Australia, Singapore), GST/HST (Canada), GST/IRD (NZ), TIN (USA, Qatar, Kuwait, Iraq, Libya), JCT (Japan), CNPJ (Brazil), SST (Malaysia), NPWP (Indonesia), MVA (Norway). Pair country_code + tax_code correctly. Optional.",
|
|
2437
|
+
"type": "array",
|
|
2438
|
+
"required": false,
|
|
2439
|
+
"position": "body"
|
|
2304
2440
|
}
|
|
2305
2441
|
],
|
|
2306
2442
|
"requestTemplate": {
|
|
@@ -2871,7 +3007,7 @@
|
|
|
2871
3007
|
},
|
|
2872
3008
|
{
|
|
2873
3009
|
"name": "createContractPhasePricing",
|
|
2874
|
-
"description": "Add pricing to a contract phase.
|
|
3010
|
+
"description": "Add pricing to a contract phase. REQUIRED: pass EXACTLY ONE of `pricing_id` (reference an existing product pricing) OR `pricing` (inline pricing object) — never both, never neither. Pair with `product_id` (existing product) or inline `product` to associate with a product.",
|
|
2875
3011
|
"args": [
|
|
2876
3012
|
{
|
|
2877
3013
|
"name": "contractId",
|
|
@@ -3415,7 +3551,21 @@
|
|
|
3415
3551
|
},
|
|
3416
3552
|
{
|
|
3417
3553
|
"name": "refundPayment",
|
|
3418
|
-
"description": "Refund a payment (full or partial).
|
|
3554
|
+
"description": "Refund a payment (full or partial). Pass refund_amount=0 (or full original amount) for a full refund, or a smaller positive integer for a partial refund. refund_destination + writeoff_invoices control where the refund money goes and whether linked invoices are written off. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.",
|
|
3555
|
+
"needsApproval": true,
|
|
3556
|
+
"approvalConfig": {
|
|
3557
|
+
"title": "Refund Payment",
|
|
3558
|
+
"description": "This will refund the payment via the selected destination and may write off linked invoices.",
|
|
3559
|
+
"warningText": "DESTRUCTIVE — refunds money via the original payment method (or issues credits) and may write off invoices. Verify amount, destination, and writeoff flag before proceeding.",
|
|
3560
|
+
"confirmText": "Refund Payment",
|
|
3561
|
+
"cancelText": "Cancel",
|
|
3562
|
+
"sensitiveFields": [
|
|
3563
|
+
"paymentId",
|
|
3564
|
+
"refund_amount",
|
|
3565
|
+
"refund_destination",
|
|
3566
|
+
"writeoff_invoices"
|
|
3567
|
+
]
|
|
3568
|
+
},
|
|
3419
3569
|
"args": [
|
|
3420
3570
|
{
|
|
3421
3571
|
"name": "paymentId",
|
|
@@ -3426,21 +3576,25 @@
|
|
|
3426
3576
|
},
|
|
3427
3577
|
{
|
|
3428
3578
|
"name": "refund_amount",
|
|
3429
|
-
"description": "
|
|
3579
|
+
"description": "Refund amount in the smallest currency unit (integer cents/paise). Use 0 to refund the full payment, or a positive integer for a partial refund. Must not exceed the payment's remaining refundable amount.",
|
|
3430
3580
|
"type": "number",
|
|
3431
3581
|
"required": true,
|
|
3432
3582
|
"position": "body"
|
|
3433
3583
|
},
|
|
3434
3584
|
{
|
|
3435
3585
|
"name": "refund_destination",
|
|
3436
|
-
"description": "Where to send the refund: original_payment_method, credits
|
|
3586
|
+
"description": "Where to send the refund. Valid values: 'original_payment_method' (refund back to the source card/bank), 'credits' (issue customer credits instead of returning money).",
|
|
3437
3587
|
"type": "string",
|
|
3438
3588
|
"required": true,
|
|
3439
|
-
"position": "body"
|
|
3589
|
+
"position": "body",
|
|
3590
|
+
"enum": [
|
|
3591
|
+
"original_payment_method",
|
|
3592
|
+
"credits"
|
|
3593
|
+
]
|
|
3440
3594
|
},
|
|
3441
3595
|
{
|
|
3442
3596
|
"name": "writeoff_invoices",
|
|
3443
|
-
"description": "
|
|
3597
|
+
"description": "If true, the invoice(s) linked to this payment are marked written off (no further collection). Set false to leave invoice balance owing after refund.",
|
|
3444
3598
|
"type": "boolean",
|
|
3445
3599
|
"required": true,
|
|
3446
3600
|
"position": "body"
|
|
@@ -3467,6 +3621,34 @@
|
|
|
3467
3621
|
"type": "string",
|
|
3468
3622
|
"required": true,
|
|
3469
3623
|
"position": "path"
|
|
3624
|
+
},
|
|
3625
|
+
{
|
|
3626
|
+
"name": "connector",
|
|
3627
|
+
"description": "Optional payment provider connector config object (e.g., {\"name\": \"stripe\", \"reference_id\": \"cus_xxx\"}). Backend auto-detects if omitted.",
|
|
3628
|
+
"type": "object",
|
|
3629
|
+
"required": false,
|
|
3630
|
+
"position": "body"
|
|
3631
|
+
},
|
|
3632
|
+
{
|
|
3633
|
+
"name": "source",
|
|
3634
|
+
"description": "Optional source identifier for the charge.",
|
|
3635
|
+
"type": "string",
|
|
3636
|
+
"required": false,
|
|
3637
|
+
"position": "body"
|
|
3638
|
+
},
|
|
3639
|
+
{
|
|
3640
|
+
"name": "payment_method_types",
|
|
3641
|
+
"description": "Optional list of allowed payment method types (e.g., [\"card\", \"ach\"]).",
|
|
3642
|
+
"type": "array",
|
|
3643
|
+
"required": false,
|
|
3644
|
+
"position": "body"
|
|
3645
|
+
},
|
|
3646
|
+
{
|
|
3647
|
+
"name": "skip_invoice_due_date_check",
|
|
3648
|
+
"description": "If true, charge proceeds even if the invoice is not yet due. Defaults to false.",
|
|
3649
|
+
"type": "boolean",
|
|
3650
|
+
"required": false,
|
|
3651
|
+
"position": "body"
|
|
3470
3652
|
}
|
|
3471
3653
|
],
|
|
3472
3654
|
"requestTemplate": {
|
|
@@ -3646,6 +3828,83 @@
|
|
|
3646
3828
|
"type": "string",
|
|
3647
3829
|
"required": false,
|
|
3648
3830
|
"position": "body"
|
|
3831
|
+
},
|
|
3832
|
+
{
|
|
3833
|
+
"name": "address_line3",
|
|
3834
|
+
"description": "Address line 3.",
|
|
3835
|
+
"type": "string",
|
|
3836
|
+
"required": false,
|
|
3837
|
+
"position": "body"
|
|
3838
|
+
},
|
|
3839
|
+
{
|
|
3840
|
+
"name": "ship_to_line1",
|
|
3841
|
+
"description": "Shipping address line 1.",
|
|
3842
|
+
"type": "string",
|
|
3843
|
+
"required": false,
|
|
3844
|
+
"position": "body"
|
|
3845
|
+
},
|
|
3846
|
+
{
|
|
3847
|
+
"name": "ship_to_line2",
|
|
3848
|
+
"description": "Shipping address line 2.",
|
|
3849
|
+
"type": "string",
|
|
3850
|
+
"required": false,
|
|
3851
|
+
"position": "body"
|
|
3852
|
+
},
|
|
3853
|
+
{
|
|
3854
|
+
"name": "ship_to_line3",
|
|
3855
|
+
"description": "Shipping address line 3.",
|
|
3856
|
+
"type": "string",
|
|
3857
|
+
"required": false,
|
|
3858
|
+
"position": "body"
|
|
3859
|
+
},
|
|
3860
|
+
{
|
|
3861
|
+
"name": "ship_to_city",
|
|
3862
|
+
"description": "Shipping address city.",
|
|
3863
|
+
"type": "string",
|
|
3864
|
+
"required": false,
|
|
3865
|
+
"position": "body"
|
|
3866
|
+
},
|
|
3867
|
+
{
|
|
3868
|
+
"name": "ship_to_state",
|
|
3869
|
+
"description": "Shipping address state.",
|
|
3870
|
+
"type": "string",
|
|
3871
|
+
"required": false,
|
|
3872
|
+
"position": "body"
|
|
3873
|
+
},
|
|
3874
|
+
{
|
|
3875
|
+
"name": "ship_to_zipCode",
|
|
3876
|
+
"description": "Shipping address ZIP/postal code.",
|
|
3877
|
+
"type": "string",
|
|
3878
|
+
"required": false,
|
|
3879
|
+
"position": "body"
|
|
3880
|
+
},
|
|
3881
|
+
{
|
|
3882
|
+
"name": "ship_to_country",
|
|
3883
|
+
"description": "Shipping address country.",
|
|
3884
|
+
"type": "string",
|
|
3885
|
+
"required": false,
|
|
3886
|
+
"position": "body"
|
|
3887
|
+
},
|
|
3888
|
+
{
|
|
3889
|
+
"name": "ship_to_country_code",
|
|
3890
|
+
"description": "Shipping address country code (e.g. US, GB).",
|
|
3891
|
+
"type": "string",
|
|
3892
|
+
"required": false,
|
|
3893
|
+
"position": "body"
|
|
3894
|
+
},
|
|
3895
|
+
{
|
|
3896
|
+
"name": "custom_data",
|
|
3897
|
+
"description": "Custom key-value pairs for additional customer info (e.g., {\"industry\": \"saas\", \"account_tier\": \"enterprise\"}).",
|
|
3898
|
+
"type": "object",
|
|
3899
|
+
"required": false,
|
|
3900
|
+
"position": "body"
|
|
3901
|
+
},
|
|
3902
|
+
{
|
|
3903
|
+
"name": "tax_info",
|
|
3904
|
+
"description": "List of tax identifiers. Each item: {country_code, tax_code, tax_id}. country_code uses mixed ISO formats (e.g. 'USA', 'IND', 'AUS', 'EU', 'GB'/'UK', 'SG', 'JP', 'BR', 'CA', and 2-letter codes for EU members like 'DE', 'FR', 'IT'). tax_code varies by country — common pairings: VAT (most of EU + UK + CH + most of MENA + IL/PH/ZA/EG/JO etc.), GST (India, Australia, Singapore), GST/HST (Canada), GST/IRD (NZ), TIN (USA, Qatar, Kuwait, Iraq, Libya), JCT (Japan), CNPJ (Brazil), SST (Malaysia), NPWP (Indonesia), MVA (Norway). Pair country_code + tax_code correctly.",
|
|
3905
|
+
"type": "array",
|
|
3906
|
+
"required": false,
|
|
3907
|
+
"position": "body"
|
|
3649
3908
|
}
|
|
3650
3909
|
],
|
|
3651
3910
|
"requestTemplate": {
|
|
@@ -3817,7 +4076,7 @@
|
|
|
3817
4076
|
},
|
|
3818
4077
|
{
|
|
3819
4078
|
"name": "listJournalEntries",
|
|
3820
|
-
"description": "Retrieve a paginated list of journal entries with optional filtering by date, account, or
|
|
4079
|
+
"description": "Retrieve a paginated list of journal entries with optional filtering by date, status, account, or job. Filters use fastapi-filter conventions (e.g. posted_at__gte=YYYY-MM-DD, lines__account_id=<uuid>).",
|
|
3821
4080
|
"args": [
|
|
3822
4081
|
{
|
|
3823
4082
|
"name": "cursor",
|
|
@@ -3839,6 +4098,62 @@
|
|
|
3839
4098
|
"type": "string",
|
|
3840
4099
|
"required": false,
|
|
3841
4100
|
"position": "query"
|
|
4101
|
+
},
|
|
4102
|
+
{
|
|
4103
|
+
"name": "order",
|
|
4104
|
+
"description": "Sort order. Prefix with '-' for descending. Defaults to '-created_at'.",
|
|
4105
|
+
"type": "string",
|
|
4106
|
+
"required": false,
|
|
4107
|
+
"position": "query"
|
|
4108
|
+
},
|
|
4109
|
+
{
|
|
4110
|
+
"name": "id",
|
|
4111
|
+
"description": "Filter by journal entry UUID (exact match).",
|
|
4112
|
+
"type": "string",
|
|
4113
|
+
"required": false,
|
|
4114
|
+
"position": "query"
|
|
4115
|
+
},
|
|
4116
|
+
{
|
|
4117
|
+
"name": "posted_at__gte",
|
|
4118
|
+
"description": "Posted-at date lower bound (inclusive). Accepts ISO date YYYY-MM-DD or full datetime.",
|
|
4119
|
+
"type": "string",
|
|
4120
|
+
"required": false,
|
|
4121
|
+
"position": "query"
|
|
4122
|
+
},
|
|
4123
|
+
{
|
|
4124
|
+
"name": "posted_at__lte",
|
|
4125
|
+
"description": "Posted-at date upper bound (inclusive).",
|
|
4126
|
+
"type": "string",
|
|
4127
|
+
"required": false,
|
|
4128
|
+
"position": "query"
|
|
4129
|
+
},
|
|
4130
|
+
{
|
|
4131
|
+
"name": "status_type",
|
|
4132
|
+
"description": "Filter by status. Common values: 'posted', 'draft'.",
|
|
4133
|
+
"type": "string",
|
|
4134
|
+
"required": false,
|
|
4135
|
+
"position": "query"
|
|
4136
|
+
},
|
|
4137
|
+
{
|
|
4138
|
+
"name": "description__ilike",
|
|
4139
|
+
"description": "Case-insensitive partial match on description.",
|
|
4140
|
+
"type": "string",
|
|
4141
|
+
"required": false,
|
|
4142
|
+
"position": "query"
|
|
4143
|
+
},
|
|
4144
|
+
{
|
|
4145
|
+
"name": "job_id",
|
|
4146
|
+
"description": "Filter by originating job UUID (e.g. revenue recognition batch).",
|
|
4147
|
+
"type": "string",
|
|
4148
|
+
"required": false,
|
|
4149
|
+
"position": "query"
|
|
4150
|
+
},
|
|
4151
|
+
{
|
|
4152
|
+
"name": "lines__account_id",
|
|
4153
|
+
"description": "Filter entries having a line on this account UUID.",
|
|
4154
|
+
"type": "string",
|
|
4155
|
+
"required": false,
|
|
4156
|
+
"position": "query"
|
|
3842
4157
|
}
|
|
3843
4158
|
],
|
|
3844
4159
|
"requestTemplate": {
|
|
@@ -3936,7 +4251,7 @@
|
|
|
3936
4251
|
},
|
|
3937
4252
|
{
|
|
3938
4253
|
"name": "listJournalLines",
|
|
3939
|
-
"description": "Retrieve a paginated list of journal lines (individual debit/credit entries) across all journal entries.",
|
|
4254
|
+
"description": "Retrieve a paginated list of journal lines (individual debit/credit entries) across all journal entries. Supports filtering by customer, contract, account, currency, and parent journal entry posted date.",
|
|
3940
4255
|
"args": [
|
|
3941
4256
|
{
|
|
3942
4257
|
"name": "cursor",
|
|
@@ -3958,6 +4273,83 @@
|
|
|
3958
4273
|
"type": "string",
|
|
3959
4274
|
"required": false,
|
|
3960
4275
|
"position": "query"
|
|
4276
|
+
},
|
|
4277
|
+
{
|
|
4278
|
+
"name": "order",
|
|
4279
|
+
"description": "Sort order. Prefix with '-' for descending. Defaults to '-created_at'.",
|
|
4280
|
+
"type": "string",
|
|
4281
|
+
"required": false,
|
|
4282
|
+
"position": "query"
|
|
4283
|
+
},
|
|
4284
|
+
{
|
|
4285
|
+
"name": "customer_id",
|
|
4286
|
+
"description": "Filter by customer UUID.",
|
|
4287
|
+
"type": "string",
|
|
4288
|
+
"required": false,
|
|
4289
|
+
"position": "query"
|
|
4290
|
+
},
|
|
4291
|
+
{
|
|
4292
|
+
"name": "contract_id",
|
|
4293
|
+
"description": "Filter by billing contract UUID.",
|
|
4294
|
+
"type": "string",
|
|
4295
|
+
"required": false,
|
|
4296
|
+
"position": "query"
|
|
4297
|
+
},
|
|
4298
|
+
{
|
|
4299
|
+
"name": "account_id",
|
|
4300
|
+
"description": "Filter by GL account UUID.",
|
|
4301
|
+
"type": "string",
|
|
4302
|
+
"required": false,
|
|
4303
|
+
"position": "query"
|
|
4304
|
+
},
|
|
4305
|
+
{
|
|
4306
|
+
"name": "journal_entry_id",
|
|
4307
|
+
"description": "Filter by parent journal entry UUID.",
|
|
4308
|
+
"type": "string",
|
|
4309
|
+
"required": false,
|
|
4310
|
+
"position": "query"
|
|
4311
|
+
},
|
|
4312
|
+
{
|
|
4313
|
+
"name": "revenue_contract_id",
|
|
4314
|
+
"description": "Filter by revenue recognition contract UUID (distinct from billing contract_id).",
|
|
4315
|
+
"type": "string",
|
|
4316
|
+
"required": false,
|
|
4317
|
+
"position": "query"
|
|
4318
|
+
},
|
|
4319
|
+
{
|
|
4320
|
+
"name": "performance_obligation_id",
|
|
4321
|
+
"description": "Filter by performance obligation UUID.",
|
|
4322
|
+
"type": "string",
|
|
4323
|
+
"required": false,
|
|
4324
|
+
"position": "query"
|
|
4325
|
+
},
|
|
4326
|
+
{
|
|
4327
|
+
"name": "invoice_id",
|
|
4328
|
+
"description": "Filter by invoice UUID.",
|
|
4329
|
+
"type": "string",
|
|
4330
|
+
"required": false,
|
|
4331
|
+
"position": "query"
|
|
4332
|
+
},
|
|
4333
|
+
{
|
|
4334
|
+
"name": "currency",
|
|
4335
|
+
"description": "Three-letter ISO currency code (e.g. 'USD').",
|
|
4336
|
+
"type": "string",
|
|
4337
|
+
"required": false,
|
|
4338
|
+
"position": "query"
|
|
4339
|
+
},
|
|
4340
|
+
{
|
|
4341
|
+
"name": "journal_entry__posted_at__gte",
|
|
4342
|
+
"description": "Parent entry posted-at lower bound (inclusive). YYYY-MM-DD or ISO datetime.",
|
|
4343
|
+
"type": "string",
|
|
4344
|
+
"required": false,
|
|
4345
|
+
"position": "query"
|
|
4346
|
+
},
|
|
4347
|
+
{
|
|
4348
|
+
"name": "journal_entry__posted_at__lte",
|
|
4349
|
+
"description": "Parent entry posted-at upper bound (inclusive).",
|
|
4350
|
+
"type": "string",
|
|
4351
|
+
"required": false,
|
|
4352
|
+
"position": "query"
|
|
3961
4353
|
}
|
|
3962
4354
|
],
|
|
3963
4355
|
"requestTemplate": {
|
|
@@ -3973,7 +4365,7 @@
|
|
|
3973
4365
|
},
|
|
3974
4366
|
{
|
|
3975
4367
|
"name": "getBalanceSheet",
|
|
3976
|
-
"description": "Retrieve the balance sheet report
|
|
4368
|
+
"description": "Retrieve the balance sheet report (assets, liabilities, equity). Supports per-customer / per-contract / per-account scoping via filters and currency / cadence selection.",
|
|
3977
4369
|
"args": [
|
|
3978
4370
|
{
|
|
3979
4371
|
"name": "start_date",
|
|
@@ -3988,6 +4380,69 @@
|
|
|
3988
4380
|
"type": "string",
|
|
3989
4381
|
"required": false,
|
|
3990
4382
|
"position": "query"
|
|
4383
|
+
},
|
|
4384
|
+
{
|
|
4385
|
+
"name": "cadence",
|
|
4386
|
+
"description": "Bucket cadence for the report. One of 'month', 'quarter', 'year'. Defaults to 'month'.",
|
|
4387
|
+
"type": "string",
|
|
4388
|
+
"required": false,
|
|
4389
|
+
"position": "query"
|
|
4390
|
+
},
|
|
4391
|
+
{
|
|
4392
|
+
"name": "currency",
|
|
4393
|
+
"description": "Three-letter ISO currency code to scope the report (e.g. 'USD').",
|
|
4394
|
+
"type": "string",
|
|
4395
|
+
"required": false,
|
|
4396
|
+
"position": "query"
|
|
4397
|
+
},
|
|
4398
|
+
{
|
|
4399
|
+
"name": "customer_id",
|
|
4400
|
+
"description": "Restrict report to a single customer UUID.",
|
|
4401
|
+
"type": "string",
|
|
4402
|
+
"required": false,
|
|
4403
|
+
"position": "query"
|
|
4404
|
+
},
|
|
4405
|
+
{
|
|
4406
|
+
"name": "contract_id",
|
|
4407
|
+
"description": "Restrict report to a single billing contract UUID (enables per-contract balance sheet).",
|
|
4408
|
+
"type": "string",
|
|
4409
|
+
"required": false,
|
|
4410
|
+
"position": "query"
|
|
4411
|
+
},
|
|
4412
|
+
{
|
|
4413
|
+
"name": "account_id__in",
|
|
4414
|
+
"description": "Filter to a list of GL account UUIDs.",
|
|
4415
|
+
"type": "array",
|
|
4416
|
+
"required": false,
|
|
4417
|
+
"position": "query"
|
|
4418
|
+
},
|
|
4419
|
+
{
|
|
4420
|
+
"name": "grouping_keys",
|
|
4421
|
+
"description": "Optional grouping dimensions, e.g. ['customer_id'] or ['contract_id'].",
|
|
4422
|
+
"type": "array",
|
|
4423
|
+
"required": false,
|
|
4424
|
+
"position": "query"
|
|
4425
|
+
},
|
|
4426
|
+
{
|
|
4427
|
+
"name": "get_changes",
|
|
4428
|
+
"description": "If true, return period-over-period changes instead of cumulative values.",
|
|
4429
|
+
"type": "boolean",
|
|
4430
|
+
"required": false,
|
|
4431
|
+
"position": "query"
|
|
4432
|
+
},
|
|
4433
|
+
{
|
|
4434
|
+
"name": "cursor",
|
|
4435
|
+
"description": "Cursor for pagination.",
|
|
4436
|
+
"type": "string",
|
|
4437
|
+
"required": false,
|
|
4438
|
+
"position": "query"
|
|
4439
|
+
},
|
|
4440
|
+
{
|
|
4441
|
+
"name": "limit",
|
|
4442
|
+
"description": "Maximum rows per page (default 10).",
|
|
4443
|
+
"type": "integer",
|
|
4444
|
+
"required": false,
|
|
4445
|
+
"position": "query"
|
|
3991
4446
|
}
|
|
3992
4447
|
],
|
|
3993
4448
|
"requestTemplate": {
|
|
@@ -4003,7 +4458,7 @@
|
|
|
4003
4458
|
},
|
|
4004
4459
|
{
|
|
4005
4460
|
"name": "getIncomeStatement",
|
|
4006
|
-
"description": "Retrieve the income statement (P&L) report
|
|
4461
|
+
"description": "Retrieve the income statement (P&L) report. Supports per-customer / per-contract / per-account scoping via filters and currency / cadence selection.",
|
|
4007
4462
|
"args": [
|
|
4008
4463
|
{
|
|
4009
4464
|
"name": "start_date",
|
|
@@ -4018,6 +4473,69 @@
|
|
|
4018
4473
|
"type": "string",
|
|
4019
4474
|
"required": false,
|
|
4020
4475
|
"position": "query"
|
|
4476
|
+
},
|
|
4477
|
+
{
|
|
4478
|
+
"name": "cadence",
|
|
4479
|
+
"description": "Bucket cadence for the report. One of 'month', 'quarter', 'year'. Defaults to 'month'.",
|
|
4480
|
+
"type": "string",
|
|
4481
|
+
"required": false,
|
|
4482
|
+
"position": "query"
|
|
4483
|
+
},
|
|
4484
|
+
{
|
|
4485
|
+
"name": "currency",
|
|
4486
|
+
"description": "Three-letter ISO currency code to scope the report (e.g. 'USD').",
|
|
4487
|
+
"type": "string",
|
|
4488
|
+
"required": false,
|
|
4489
|
+
"position": "query"
|
|
4490
|
+
},
|
|
4491
|
+
{
|
|
4492
|
+
"name": "customer_id",
|
|
4493
|
+
"description": "Restrict report to a single customer UUID (enables per-customer P&L).",
|
|
4494
|
+
"type": "string",
|
|
4495
|
+
"required": false,
|
|
4496
|
+
"position": "query"
|
|
4497
|
+
},
|
|
4498
|
+
{
|
|
4499
|
+
"name": "contract_id",
|
|
4500
|
+
"description": "Restrict report to a single billing contract UUID (enables per-contract P&L).",
|
|
4501
|
+
"type": "string",
|
|
4502
|
+
"required": false,
|
|
4503
|
+
"position": "query"
|
|
4504
|
+
},
|
|
4505
|
+
{
|
|
4506
|
+
"name": "account_id__in",
|
|
4507
|
+
"description": "Filter to a list of GL account UUIDs.",
|
|
4508
|
+
"type": "array",
|
|
4509
|
+
"required": false,
|
|
4510
|
+
"position": "query"
|
|
4511
|
+
},
|
|
4512
|
+
{
|
|
4513
|
+
"name": "grouping_keys",
|
|
4514
|
+
"description": "Optional grouping dimensions, e.g. ['customer_id'] or ['contract_id'].",
|
|
4515
|
+
"type": "array",
|
|
4516
|
+
"required": false,
|
|
4517
|
+
"position": "query"
|
|
4518
|
+
},
|
|
4519
|
+
{
|
|
4520
|
+
"name": "get_changes",
|
|
4521
|
+
"description": "If true, return period-over-period changes (default true for income statement).",
|
|
4522
|
+
"type": "boolean",
|
|
4523
|
+
"required": false,
|
|
4524
|
+
"position": "query"
|
|
4525
|
+
},
|
|
4526
|
+
{
|
|
4527
|
+
"name": "cursor",
|
|
4528
|
+
"description": "Cursor for pagination.",
|
|
4529
|
+
"type": "string",
|
|
4530
|
+
"required": false,
|
|
4531
|
+
"position": "query"
|
|
4532
|
+
},
|
|
4533
|
+
{
|
|
4534
|
+
"name": "limit",
|
|
4535
|
+
"description": "Maximum rows per page (default 10).",
|
|
4536
|
+
"type": "integer",
|
|
4537
|
+
"required": false,
|
|
4538
|
+
"position": "query"
|
|
4021
4539
|
}
|
|
4022
4540
|
],
|
|
4023
4541
|
"requestTemplate": {
|
|
@@ -4033,7 +4551,7 @@
|
|
|
4033
4551
|
},
|
|
4034
4552
|
{
|
|
4035
4553
|
"name": "getAccountBalance",
|
|
4036
|
-
"description": "Retrieve the balance for a specific accounting account.",
|
|
4554
|
+
"description": "Retrieve the balance for a specific accounting account. Supports filtering by customer, contract, currency, and posted-at date range.",
|
|
4037
4555
|
"args": [
|
|
4038
4556
|
{
|
|
4039
4557
|
"name": "accountId",
|
|
@@ -4048,6 +4566,41 @@
|
|
|
4048
4566
|
"type": "string",
|
|
4049
4567
|
"required": false,
|
|
4050
4568
|
"position": "query"
|
|
4569
|
+
},
|
|
4570
|
+
{
|
|
4571
|
+
"name": "customer_id",
|
|
4572
|
+
"description": "Filter the balance to a single customer UUID.",
|
|
4573
|
+
"type": "string",
|
|
4574
|
+
"required": false,
|
|
4575
|
+
"position": "query"
|
|
4576
|
+
},
|
|
4577
|
+
{
|
|
4578
|
+
"name": "contract_id",
|
|
4579
|
+
"description": "Filter the balance to a single billing contract UUID (enables per-contract GL balance).",
|
|
4580
|
+
"type": "string",
|
|
4581
|
+
"required": false,
|
|
4582
|
+
"position": "query"
|
|
4583
|
+
},
|
|
4584
|
+
{
|
|
4585
|
+
"name": "currency",
|
|
4586
|
+
"description": "Three-letter ISO currency code (e.g. 'USD').",
|
|
4587
|
+
"type": "string",
|
|
4588
|
+
"required": false,
|
|
4589
|
+
"position": "query"
|
|
4590
|
+
},
|
|
4591
|
+
{
|
|
4592
|
+
"name": "journal_entry__posted_at__gte",
|
|
4593
|
+
"description": "Lower bound on parent journal entry posted-at date (inclusive).",
|
|
4594
|
+
"type": "string",
|
|
4595
|
+
"required": false,
|
|
4596
|
+
"position": "query"
|
|
4597
|
+
},
|
|
4598
|
+
{
|
|
4599
|
+
"name": "journal_entry__posted_at__lte",
|
|
4600
|
+
"description": "Upper bound on parent journal entry posted-at date (inclusive).",
|
|
4601
|
+
"type": "string",
|
|
4602
|
+
"required": false,
|
|
4603
|
+
"position": "query"
|
|
4051
4604
|
}
|
|
4052
4605
|
],
|
|
4053
4606
|
"requestTemplate": {
|
|
@@ -4102,8 +4655,8 @@
|
|
|
4102
4655
|
},
|
|
4103
4656
|
{
|
|
4104
4657
|
"name": "tax_codes",
|
|
4105
|
-
"description": "
|
|
4106
|
-
"type": "
|
|
4658
|
+
"description": "Tax code mapping object keyed by region/provider (e.g., {\"avalara\": \"PS081282\", \"stripe\": \"txcd_99999999\"}).",
|
|
4659
|
+
"type": "object",
|
|
4107
4660
|
"required": false,
|
|
4108
4661
|
"position": "body"
|
|
4109
4662
|
},
|
|
@@ -4823,6 +5376,13 @@
|
|
|
4823
5376
|
"type": "string",
|
|
4824
5377
|
"required": false,
|
|
4825
5378
|
"position": "body"
|
|
5379
|
+
},
|
|
5380
|
+
{
|
|
5381
|
+
"name": "phone_number",
|
|
5382
|
+
"description": "Updated phone number (max 20 chars). Include country code (e.g., +1-555-0100).",
|
|
5383
|
+
"type": "string",
|
|
5384
|
+
"required": false,
|
|
5385
|
+
"position": "body"
|
|
4826
5386
|
}
|
|
4827
5387
|
],
|
|
4828
5388
|
"requestTemplate": {
|
|
@@ -5095,8 +5655,8 @@
|
|
|
5095
5655
|
},
|
|
5096
5656
|
{
|
|
5097
5657
|
"name": "connector",
|
|
5098
|
-
"description": "Payment connector
|
|
5099
|
-
"type": "
|
|
5658
|
+
"description": "Payment provider connector config object (e.g., {\"name\": \"stripe\", \"reference_id\": \"cus_xxx\"}). Either field is optional. If omitted, backend auto-detects from resource mappings.",
|
|
5659
|
+
"type": "object",
|
|
5100
5660
|
"required": false,
|
|
5101
5661
|
"position": "body"
|
|
5102
5662
|
},
|
|
@@ -5302,6 +5862,13 @@
|
|
|
5302
5862
|
"required": false,
|
|
5303
5863
|
"position": "body"
|
|
5304
5864
|
},
|
|
5865
|
+
{
|
|
5866
|
+
"name": "pause_phase_id",
|
|
5867
|
+
"description": "UUID of the specific pause phase to edit. Optional — required only when a contract has multiple pause phases and you need to disambiguate which one to edit.",
|
|
5868
|
+
"type": "string",
|
|
5869
|
+
"required": false,
|
|
5870
|
+
"position": "body"
|
|
5871
|
+
},
|
|
5305
5872
|
{
|
|
5306
5873
|
"name": "unpause_extension_policy",
|
|
5307
5874
|
"description": "How to handle the contract end date when unpaused. 'extend' or 'overlap'.",
|
package/src/server.js
CHANGED
|
@@ -713,6 +713,10 @@ function convertArgsToZodSchema(args) {
|
|
|
713
713
|
// Add approval support for human-in-the-loop workflow
|
|
714
714
|
approval: z.object({
|
|
715
715
|
approved: z.boolean(),
|
|
716
|
+
// Single-use token issued by server in the approval_required response.
|
|
717
|
+
// Without this in the schema, Zod strips it from __userContext.approval
|
|
718
|
+
// and consumeApprovalToken() always sees undefined → infinite re-approval loop.
|
|
719
|
+
token: z.string().optional(),
|
|
716
720
|
modifiedArguments: z.record(z.any()).optional(),
|
|
717
721
|
originalArguments: z.record(z.any()).optional(),
|
|
718
722
|
toolName: z.string().optional()
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>app</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="root"></div>
|
|
10
|
+
<script type="module" src="./app.tsx"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|