@metronome/mcp 1.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/README.md +127 -75
  2. package/docs-search-tool.d.mts +44 -0
  3. package/docs-search-tool.d.mts.map +1 -0
  4. package/docs-search-tool.d.ts +44 -0
  5. package/docs-search-tool.d.ts.map +1 -0
  6. package/docs-search-tool.js +43 -0
  7. package/docs-search-tool.js.map +1 -0
  8. package/docs-search-tool.mjs +39 -0
  9. package/docs-search-tool.mjs.map +1 -0
  10. package/options.d.mts +1 -0
  11. package/options.d.mts.map +1 -1
  12. package/options.d.ts +1 -0
  13. package/options.d.ts.map +1 -1
  14. package/options.js +13 -6
  15. package/options.js.map +1 -1
  16. package/options.mjs +13 -6
  17. package/options.mjs.map +1 -1
  18. package/package.json +12 -2
  19. package/server.d.mts.map +1 -1
  20. package/server.d.ts.map +1 -1
  21. package/server.js +8 -4
  22. package/server.js.map +1 -1
  23. package/server.mjs +8 -4
  24. package/server.mjs.map +1 -1
  25. package/src/docs-search-tool.ts +48 -0
  26. package/src/options.ts +17 -7
  27. package/src/server.ts +8 -5
  28. package/src/tools/index.ts +14 -0
  29. package/src/tools/v1/alerts/archive-v1-alerts.ts +3 -3
  30. package/src/tools/v1/alerts/create-v1-alerts.ts +14 -13
  31. package/src/tools/v1/audit-logs/list-v1-audit-logs.ts +1 -1
  32. package/src/tools/v1/billable-metrics/archive-v1-billable-metrics.ts +1 -1
  33. package/src/tools/v1/billable-metrics/create-v1-billable-metrics.ts +1 -1
  34. package/src/tools/v1/billable-metrics/list-v1-billable-metrics.ts +1 -1
  35. package/src/tools/v1/billable-metrics/retrieve-v1-billable-metrics.ts +1 -1
  36. package/src/tools/v1/contracts/amend-v1-contracts.ts +2 -2
  37. package/src/tools/v1/contracts/archive-v1-contracts.ts +1 -1
  38. package/src/tools/v1/contracts/create-v1-contracts.ts +30 -6
  39. package/src/tools/v1/contracts/list-balances-v1-contracts.ts +4 -0
  40. package/src/tools/v1/contracts/named-schedules/retrieve-contracts-v1-named-schedules.ts +1 -1
  41. package/src/tools/v1/contracts/products/archive-contracts-v1-products.ts +1 -1
  42. package/src/tools/v1/contracts/products/create-contracts-v1-products.ts +1 -1
  43. package/src/tools/v1/contracts/products/list-contracts-v1-products.ts +1 -1
  44. package/src/tools/v1/contracts/products/retrieve-contracts-v1-products.ts +1 -1
  45. package/src/tools/v1/contracts/products/update-contracts-v1-products.ts +1 -1
  46. package/src/tools/v1/contracts/rate-cards/archive-contracts-v1-rate-cards.ts +1 -1
  47. package/src/tools/v1/contracts/rate-cards/create-contracts-v1-rate-cards.ts +1 -1
  48. package/src/tools/v1/contracts/rate-cards/list-contracts-v1-rate-cards.ts +1 -1
  49. package/src/tools/v1/contracts/rate-cards/named-schedules/retrieve-rate-cards-contracts-v1-named-schedules.ts +1 -1
  50. package/src/tools/v1/contracts/rate-cards/product-orders/set-rate-cards-contracts-v1-product-orders.ts +1 -1
  51. package/src/tools/v1/contracts/rate-cards/product-orders/update-rate-cards-contracts-v1-product-orders.ts +1 -1
  52. package/src/tools/v1/contracts/rate-cards/rates/add-many-rate-cards-contracts-v1-rates.ts +1 -1
  53. package/src/tools/v1/contracts/rate-cards/rates/add-rate-cards-contracts-v1-rates.ts +1 -1
  54. package/src/tools/v1/contracts/rate-cards/rates/list-rate-cards-contracts-v1-rates.ts +1 -1
  55. package/src/tools/v1/contracts/rate-cards/retrieve-contracts-v1-rate-cards.ts +1 -1
  56. package/src/tools/v1/contracts/rate-cards/retrieve-rate-schedule-contracts-v1-rate-cards.ts +1 -1
  57. package/src/tools/v1/contracts/rate-cards/update-contracts-v1-rate-cards.ts +1 -1
  58. package/src/tools/v1/contracts/retrieve-rate-schedule-v1-contracts.ts +1 -1
  59. package/src/tools/v1/contracts/retrieve-subscription-quantity-history-v1-contracts.ts +1 -1
  60. package/src/tools/v1/contracts/update-end-date-v1-contracts.ts +1 -1
  61. package/src/tools/v1/credit-grants/create-v1-credit-grants.ts +1 -1
  62. package/src/tools/v1/credit-grants/edit-v1-credit-grants.ts +1 -1
  63. package/src/tools/v1/credit-grants/list-entries-v1-credit-grants.ts +1 -1
  64. package/src/tools/v1/credit-grants/list-v1-credit-grants.ts +1 -1
  65. package/src/tools/v1/credit-grants/void-v1-credit-grants.ts +1 -1
  66. package/src/tools/v1/custom-fields/list-keys-v1-custom-fields.ts +1 -1
  67. package/src/tools/v1/customers/alerts/list-customers-v1-alerts.ts +3 -2
  68. package/src/tools/v1/customers/alerts/reset-customers-v1-alerts.ts +2 -2
  69. package/src/tools/v1/customers/alerts/retrieve-customers-v1-alerts.ts +7 -14
  70. package/src/tools/v1/customers/archive-v1-customers.ts +1 -1
  71. package/src/tools/v1/customers/billing-config/create-customers-v1-billing-config.ts +5 -1
  72. package/src/tools/v1/customers/billing-config/delete-customers-v1-billing-config.ts +2 -1
  73. package/src/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.ts +2 -1
  74. package/src/tools/v1/customers/commits/create-customers-v1-commits.ts +2 -2
  75. package/src/tools/v1/customers/commits/update-end-date-customers-v1-commits.ts +1 -1
  76. package/src/tools/v1/customers/create-v1-customers.ts +4 -1
  77. package/src/tools/v1/customers/credits/create-customers-v1-credits.ts +1 -1
  78. package/src/tools/v1/customers/credits/update-end-date-customers-v1-credits.ts +1 -1
  79. package/src/tools/v1/customers/invoices/add-charge-customers-v1-invoices.ts +1 -1
  80. package/src/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.ts +43 -0
  81. package/src/tools/v1/customers/list-billable-metrics-v1-customers.ts +1 -1
  82. package/src/tools/v1/customers/list-costs-v1-customers.ts +1 -1
  83. package/src/tools/v1/customers/list-v1-customers.ts +1 -1
  84. package/src/tools/v1/customers/named-schedules/retrieve-customers-v1-named-schedules.ts +1 -1
  85. package/src/tools/v1/customers/plans/add-customers-v1-plans.ts +1 -1
  86. package/src/tools/v1/customers/plans/end-customers-v1-plans.ts +1 -1
  87. package/src/tools/v1/customers/plans/list-customers-v1-plans.ts +1 -1
  88. package/src/tools/v1/customers/plans/list-price-adjustments-customers-v1-plans.ts +1 -1
  89. package/src/tools/v1/customers/preview-events-v1-customers.ts +6 -9
  90. package/src/tools/v1/customers/retrieve-billing-configurations-v1-customers.ts +1 -1
  91. package/src/tools/v1/customers/retrieve-v1-customers.ts +1 -1
  92. package/src/tools/v1/customers/set-billing-configurations-v1-customers.ts +2 -1
  93. package/src/tools/v1/customers/set-name-v1-customers.ts +1 -1
  94. package/src/tools/v1/dashboards/get-embeddable-url-v1-dashboards.ts +1 -1
  95. package/src/tools/v1/invoices/regenerate-v1-invoices.ts +1 -1
  96. package/src/tools/v1/invoices/void-v1-invoices.ts +1 -1
  97. package/src/tools/v1/payments/attempt-v1-payments.ts +48 -0
  98. package/src/tools/v1/payments/cancel-v1-payments.ts +48 -0
  99. package/src/tools/v1/payments/list-v1-payments.ts +69 -0
  100. package/src/tools/v1/plans/get-details-v1-plans.ts +1 -1
  101. package/src/tools/v1/plans/list-charges-v1-plans.ts +1 -1
  102. package/src/tools/v1/plans/list-customers-v1-plans.ts +1 -1
  103. package/src/tools/v1/plans/list-v1-plans.ts +1 -1
  104. package/src/tools/v1/pricing-units/list-v1-pricing-units.ts +1 -1
  105. package/src/tools/v1/services/list-v1-services.ts +1 -1
  106. package/src/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.ts +60 -0
  107. package/src/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.ts +48 -0
  108. package/src/tools/v1/settings/upsert-avalara-credentials-v1-settings.ts +65 -0
  109. package/src/tools/v1/usage/ingest-v1-usage.ts +1 -1
  110. package/src/tools/v1/usage/list-v1-usage.ts +1 -1
  111. package/src/tools/v1/usage/list-with-groups-v1-usage.ts +1 -1
  112. package/src/tools/v1/usage/search-v1-usage.ts +1 -1
  113. package/src/tools/v2/contracts/edit-commit-v2-contracts.ts +50 -1
  114. package/src/tools/v2/contracts/edit-credit-v2-contracts.ts +50 -1
  115. package/src/tools/v2/contracts/edit-v2-contracts.ts +66 -5
  116. package/tools/index.d.mts.map +1 -1
  117. package/tools/index.d.ts.map +1 -1
  118. package/tools/index.js +14 -0
  119. package/tools/index.js.map +1 -1
  120. package/tools/index.mjs +14 -0
  121. package/tools/index.mjs.map +1 -1
  122. package/tools/v1/alerts/archive-v1-alerts.js +3 -3
  123. package/tools/v1/alerts/archive-v1-alerts.js.map +1 -1
  124. package/tools/v1/alerts/archive-v1-alerts.mjs +3 -3
  125. package/tools/v1/alerts/archive-v1-alerts.mjs.map +1 -1
  126. package/tools/v1/alerts/create-v1-alerts.d.mts.map +1 -1
  127. package/tools/v1/alerts/create-v1-alerts.d.ts.map +1 -1
  128. package/tools/v1/alerts/create-v1-alerts.js +13 -13
  129. package/tools/v1/alerts/create-v1-alerts.js.map +1 -1
  130. package/tools/v1/alerts/create-v1-alerts.mjs +13 -13
  131. package/tools/v1/alerts/create-v1-alerts.mjs.map +1 -1
  132. package/tools/v1/audit-logs/list-v1-audit-logs.js +1 -1
  133. package/tools/v1/audit-logs/list-v1-audit-logs.js.map +1 -1
  134. package/tools/v1/audit-logs/list-v1-audit-logs.mjs +1 -1
  135. package/tools/v1/audit-logs/list-v1-audit-logs.mjs.map +1 -1
  136. package/tools/v1/billable-metrics/archive-v1-billable-metrics.js +1 -1
  137. package/tools/v1/billable-metrics/archive-v1-billable-metrics.js.map +1 -1
  138. package/tools/v1/billable-metrics/archive-v1-billable-metrics.mjs +1 -1
  139. package/tools/v1/billable-metrics/archive-v1-billable-metrics.mjs.map +1 -1
  140. package/tools/v1/billable-metrics/create-v1-billable-metrics.js +1 -1
  141. package/tools/v1/billable-metrics/create-v1-billable-metrics.js.map +1 -1
  142. package/tools/v1/billable-metrics/create-v1-billable-metrics.mjs +1 -1
  143. package/tools/v1/billable-metrics/create-v1-billable-metrics.mjs.map +1 -1
  144. package/tools/v1/billable-metrics/list-v1-billable-metrics.js +1 -1
  145. package/tools/v1/billable-metrics/list-v1-billable-metrics.js.map +1 -1
  146. package/tools/v1/billable-metrics/list-v1-billable-metrics.mjs +1 -1
  147. package/tools/v1/billable-metrics/list-v1-billable-metrics.mjs.map +1 -1
  148. package/tools/v1/billable-metrics/retrieve-v1-billable-metrics.js +1 -1
  149. package/tools/v1/billable-metrics/retrieve-v1-billable-metrics.js.map +1 -1
  150. package/tools/v1/billable-metrics/retrieve-v1-billable-metrics.mjs +1 -1
  151. package/tools/v1/billable-metrics/retrieve-v1-billable-metrics.mjs.map +1 -1
  152. package/tools/v1/contracts/amend-v1-contracts.js +2 -2
  153. package/tools/v1/contracts/amend-v1-contracts.js.map +1 -1
  154. package/tools/v1/contracts/amend-v1-contracts.mjs +2 -2
  155. package/tools/v1/contracts/amend-v1-contracts.mjs.map +1 -1
  156. package/tools/v1/contracts/archive-v1-contracts.js +1 -1
  157. package/tools/v1/contracts/archive-v1-contracts.js.map +1 -1
  158. package/tools/v1/contracts/archive-v1-contracts.mjs +1 -1
  159. package/tools/v1/contracts/archive-v1-contracts.mjs.map +1 -1
  160. package/tools/v1/contracts/create-v1-contracts.d.mts.map +1 -1
  161. package/tools/v1/contracts/create-v1-contracts.d.ts.map +1 -1
  162. package/tools/v1/contracts/create-v1-contracts.js +25 -6
  163. package/tools/v1/contracts/create-v1-contracts.js.map +1 -1
  164. package/tools/v1/contracts/create-v1-contracts.mjs +25 -6
  165. package/tools/v1/contracts/create-v1-contracts.mjs.map +1 -1
  166. package/tools/v1/contracts/list-balances-v1-contracts.d.mts.map +1 -1
  167. package/tools/v1/contracts/list-balances-v1-contracts.d.ts.map +1 -1
  168. package/tools/v1/contracts/list-balances-v1-contracts.js +4 -0
  169. package/tools/v1/contracts/list-balances-v1-contracts.js.map +1 -1
  170. package/tools/v1/contracts/list-balances-v1-contracts.mjs +4 -0
  171. package/tools/v1/contracts/list-balances-v1-contracts.mjs.map +1 -1
  172. package/tools/v1/contracts/named-schedules/retrieve-contracts-v1-named-schedules.js +1 -1
  173. package/tools/v1/contracts/named-schedules/retrieve-contracts-v1-named-schedules.js.map +1 -1
  174. package/tools/v1/contracts/named-schedules/retrieve-contracts-v1-named-schedules.mjs +1 -1
  175. package/tools/v1/contracts/named-schedules/retrieve-contracts-v1-named-schedules.mjs.map +1 -1
  176. package/tools/v1/contracts/products/archive-contracts-v1-products.js +1 -1
  177. package/tools/v1/contracts/products/archive-contracts-v1-products.js.map +1 -1
  178. package/tools/v1/contracts/products/archive-contracts-v1-products.mjs +1 -1
  179. package/tools/v1/contracts/products/archive-contracts-v1-products.mjs.map +1 -1
  180. package/tools/v1/contracts/products/create-contracts-v1-products.js +1 -1
  181. package/tools/v1/contracts/products/create-contracts-v1-products.js.map +1 -1
  182. package/tools/v1/contracts/products/create-contracts-v1-products.mjs +1 -1
  183. package/tools/v1/contracts/products/create-contracts-v1-products.mjs.map +1 -1
  184. package/tools/v1/contracts/products/list-contracts-v1-products.js +1 -1
  185. package/tools/v1/contracts/products/list-contracts-v1-products.js.map +1 -1
  186. package/tools/v1/contracts/products/list-contracts-v1-products.mjs +1 -1
  187. package/tools/v1/contracts/products/list-contracts-v1-products.mjs.map +1 -1
  188. package/tools/v1/contracts/products/retrieve-contracts-v1-products.js +1 -1
  189. package/tools/v1/contracts/products/retrieve-contracts-v1-products.js.map +1 -1
  190. package/tools/v1/contracts/products/retrieve-contracts-v1-products.mjs +1 -1
  191. package/tools/v1/contracts/products/retrieve-contracts-v1-products.mjs.map +1 -1
  192. package/tools/v1/contracts/products/update-contracts-v1-products.js +1 -1
  193. package/tools/v1/contracts/products/update-contracts-v1-products.js.map +1 -1
  194. package/tools/v1/contracts/products/update-contracts-v1-products.mjs +1 -1
  195. package/tools/v1/contracts/products/update-contracts-v1-products.mjs.map +1 -1
  196. package/tools/v1/contracts/rate-cards/archive-contracts-v1-rate-cards.js +1 -1
  197. package/tools/v1/contracts/rate-cards/archive-contracts-v1-rate-cards.js.map +1 -1
  198. package/tools/v1/contracts/rate-cards/archive-contracts-v1-rate-cards.mjs +1 -1
  199. package/tools/v1/contracts/rate-cards/archive-contracts-v1-rate-cards.mjs.map +1 -1
  200. package/tools/v1/contracts/rate-cards/create-contracts-v1-rate-cards.js +1 -1
  201. package/tools/v1/contracts/rate-cards/create-contracts-v1-rate-cards.js.map +1 -1
  202. package/tools/v1/contracts/rate-cards/create-contracts-v1-rate-cards.mjs +1 -1
  203. package/tools/v1/contracts/rate-cards/create-contracts-v1-rate-cards.mjs.map +1 -1
  204. package/tools/v1/contracts/rate-cards/list-contracts-v1-rate-cards.js +1 -1
  205. package/tools/v1/contracts/rate-cards/list-contracts-v1-rate-cards.js.map +1 -1
  206. package/tools/v1/contracts/rate-cards/list-contracts-v1-rate-cards.mjs +1 -1
  207. package/tools/v1/contracts/rate-cards/list-contracts-v1-rate-cards.mjs.map +1 -1
  208. package/tools/v1/contracts/rate-cards/named-schedules/retrieve-rate-cards-contracts-v1-named-schedules.js +1 -1
  209. package/tools/v1/contracts/rate-cards/named-schedules/retrieve-rate-cards-contracts-v1-named-schedules.js.map +1 -1
  210. package/tools/v1/contracts/rate-cards/named-schedules/retrieve-rate-cards-contracts-v1-named-schedules.mjs +1 -1
  211. package/tools/v1/contracts/rate-cards/named-schedules/retrieve-rate-cards-contracts-v1-named-schedules.mjs.map +1 -1
  212. package/tools/v1/contracts/rate-cards/product-orders/set-rate-cards-contracts-v1-product-orders.js +1 -1
  213. package/tools/v1/contracts/rate-cards/product-orders/set-rate-cards-contracts-v1-product-orders.js.map +1 -1
  214. package/tools/v1/contracts/rate-cards/product-orders/set-rate-cards-contracts-v1-product-orders.mjs +1 -1
  215. package/tools/v1/contracts/rate-cards/product-orders/set-rate-cards-contracts-v1-product-orders.mjs.map +1 -1
  216. package/tools/v1/contracts/rate-cards/product-orders/update-rate-cards-contracts-v1-product-orders.js +1 -1
  217. package/tools/v1/contracts/rate-cards/product-orders/update-rate-cards-contracts-v1-product-orders.js.map +1 -1
  218. package/tools/v1/contracts/rate-cards/product-orders/update-rate-cards-contracts-v1-product-orders.mjs +1 -1
  219. package/tools/v1/contracts/rate-cards/product-orders/update-rate-cards-contracts-v1-product-orders.mjs.map +1 -1
  220. package/tools/v1/contracts/rate-cards/rates/add-many-rate-cards-contracts-v1-rates.js +1 -1
  221. package/tools/v1/contracts/rate-cards/rates/add-many-rate-cards-contracts-v1-rates.js.map +1 -1
  222. package/tools/v1/contracts/rate-cards/rates/add-many-rate-cards-contracts-v1-rates.mjs +1 -1
  223. package/tools/v1/contracts/rate-cards/rates/add-many-rate-cards-contracts-v1-rates.mjs.map +1 -1
  224. package/tools/v1/contracts/rate-cards/rates/add-rate-cards-contracts-v1-rates.js +1 -1
  225. package/tools/v1/contracts/rate-cards/rates/add-rate-cards-contracts-v1-rates.js.map +1 -1
  226. package/tools/v1/contracts/rate-cards/rates/add-rate-cards-contracts-v1-rates.mjs +1 -1
  227. package/tools/v1/contracts/rate-cards/rates/add-rate-cards-contracts-v1-rates.mjs.map +1 -1
  228. package/tools/v1/contracts/rate-cards/rates/list-rate-cards-contracts-v1-rates.js +1 -1
  229. package/tools/v1/contracts/rate-cards/rates/list-rate-cards-contracts-v1-rates.js.map +1 -1
  230. package/tools/v1/contracts/rate-cards/rates/list-rate-cards-contracts-v1-rates.mjs +1 -1
  231. package/tools/v1/contracts/rate-cards/rates/list-rate-cards-contracts-v1-rates.mjs.map +1 -1
  232. package/tools/v1/contracts/rate-cards/retrieve-contracts-v1-rate-cards.js +1 -1
  233. package/tools/v1/contracts/rate-cards/retrieve-contracts-v1-rate-cards.js.map +1 -1
  234. package/tools/v1/contracts/rate-cards/retrieve-contracts-v1-rate-cards.mjs +1 -1
  235. package/tools/v1/contracts/rate-cards/retrieve-contracts-v1-rate-cards.mjs.map +1 -1
  236. package/tools/v1/contracts/rate-cards/retrieve-rate-schedule-contracts-v1-rate-cards.js +1 -1
  237. package/tools/v1/contracts/rate-cards/retrieve-rate-schedule-contracts-v1-rate-cards.js.map +1 -1
  238. package/tools/v1/contracts/rate-cards/retrieve-rate-schedule-contracts-v1-rate-cards.mjs +1 -1
  239. package/tools/v1/contracts/rate-cards/retrieve-rate-schedule-contracts-v1-rate-cards.mjs.map +1 -1
  240. package/tools/v1/contracts/rate-cards/update-contracts-v1-rate-cards.js +1 -1
  241. package/tools/v1/contracts/rate-cards/update-contracts-v1-rate-cards.js.map +1 -1
  242. package/tools/v1/contracts/rate-cards/update-contracts-v1-rate-cards.mjs +1 -1
  243. package/tools/v1/contracts/rate-cards/update-contracts-v1-rate-cards.mjs.map +1 -1
  244. package/tools/v1/contracts/retrieve-rate-schedule-v1-contracts.js +1 -1
  245. package/tools/v1/contracts/retrieve-rate-schedule-v1-contracts.js.map +1 -1
  246. package/tools/v1/contracts/retrieve-rate-schedule-v1-contracts.mjs +1 -1
  247. package/tools/v1/contracts/retrieve-rate-schedule-v1-contracts.mjs.map +1 -1
  248. package/tools/v1/contracts/retrieve-subscription-quantity-history-v1-contracts.js +1 -1
  249. package/tools/v1/contracts/retrieve-subscription-quantity-history-v1-contracts.js.map +1 -1
  250. package/tools/v1/contracts/retrieve-subscription-quantity-history-v1-contracts.mjs +1 -1
  251. package/tools/v1/contracts/retrieve-subscription-quantity-history-v1-contracts.mjs.map +1 -1
  252. package/tools/v1/contracts/update-end-date-v1-contracts.js +1 -1
  253. package/tools/v1/contracts/update-end-date-v1-contracts.js.map +1 -1
  254. package/tools/v1/contracts/update-end-date-v1-contracts.mjs +1 -1
  255. package/tools/v1/contracts/update-end-date-v1-contracts.mjs.map +1 -1
  256. package/tools/v1/credit-grants/create-v1-credit-grants.js +1 -1
  257. package/tools/v1/credit-grants/create-v1-credit-grants.js.map +1 -1
  258. package/tools/v1/credit-grants/create-v1-credit-grants.mjs +1 -1
  259. package/tools/v1/credit-grants/create-v1-credit-grants.mjs.map +1 -1
  260. package/tools/v1/credit-grants/edit-v1-credit-grants.js +1 -1
  261. package/tools/v1/credit-grants/edit-v1-credit-grants.js.map +1 -1
  262. package/tools/v1/credit-grants/edit-v1-credit-grants.mjs +1 -1
  263. package/tools/v1/credit-grants/edit-v1-credit-grants.mjs.map +1 -1
  264. package/tools/v1/credit-grants/list-entries-v1-credit-grants.js +1 -1
  265. package/tools/v1/credit-grants/list-entries-v1-credit-grants.js.map +1 -1
  266. package/tools/v1/credit-grants/list-entries-v1-credit-grants.mjs +1 -1
  267. package/tools/v1/credit-grants/list-entries-v1-credit-grants.mjs.map +1 -1
  268. package/tools/v1/credit-grants/list-v1-credit-grants.js +1 -1
  269. package/tools/v1/credit-grants/list-v1-credit-grants.js.map +1 -1
  270. package/tools/v1/credit-grants/list-v1-credit-grants.mjs +1 -1
  271. package/tools/v1/credit-grants/list-v1-credit-grants.mjs.map +1 -1
  272. package/tools/v1/credit-grants/void-v1-credit-grants.js +1 -1
  273. package/tools/v1/credit-grants/void-v1-credit-grants.js.map +1 -1
  274. package/tools/v1/credit-grants/void-v1-credit-grants.mjs +1 -1
  275. package/tools/v1/credit-grants/void-v1-credit-grants.mjs.map +1 -1
  276. package/tools/v1/custom-fields/list-keys-v1-custom-fields.js +1 -1
  277. package/tools/v1/custom-fields/list-keys-v1-custom-fields.js.map +1 -1
  278. package/tools/v1/custom-fields/list-keys-v1-custom-fields.mjs +1 -1
  279. package/tools/v1/custom-fields/list-keys-v1-custom-fields.mjs.map +1 -1
  280. package/tools/v1/customers/alerts/list-customers-v1-alerts.d.mts.map +1 -1
  281. package/tools/v1/customers/alerts/list-customers-v1-alerts.d.ts.map +1 -1
  282. package/tools/v1/customers/alerts/list-customers-v1-alerts.js +2 -2
  283. package/tools/v1/customers/alerts/list-customers-v1-alerts.js.map +1 -1
  284. package/tools/v1/customers/alerts/list-customers-v1-alerts.mjs +2 -2
  285. package/tools/v1/customers/alerts/list-customers-v1-alerts.mjs.map +1 -1
  286. package/tools/v1/customers/alerts/reset-customers-v1-alerts.js +2 -2
  287. package/tools/v1/customers/alerts/reset-customers-v1-alerts.js.map +1 -1
  288. package/tools/v1/customers/alerts/reset-customers-v1-alerts.mjs +2 -2
  289. package/tools/v1/customers/alerts/reset-customers-v1-alerts.mjs.map +1 -1
  290. package/tools/v1/customers/alerts/retrieve-customers-v1-alerts.d.mts.map +1 -1
  291. package/tools/v1/customers/alerts/retrieve-customers-v1-alerts.d.ts.map +1 -1
  292. package/tools/v1/customers/alerts/retrieve-customers-v1-alerts.js +7 -13
  293. package/tools/v1/customers/alerts/retrieve-customers-v1-alerts.js.map +1 -1
  294. package/tools/v1/customers/alerts/retrieve-customers-v1-alerts.mjs +7 -13
  295. package/tools/v1/customers/alerts/retrieve-customers-v1-alerts.mjs.map +1 -1
  296. package/tools/v1/customers/archive-v1-customers.js +1 -1
  297. package/tools/v1/customers/archive-v1-customers.js.map +1 -1
  298. package/tools/v1/customers/archive-v1-customers.mjs +1 -1
  299. package/tools/v1/customers/archive-v1-customers.mjs.map +1 -1
  300. package/tools/v1/customers/billing-config/create-customers-v1-billing-config.d.mts.map +1 -1
  301. package/tools/v1/customers/billing-config/create-customers-v1-billing-config.d.ts.map +1 -1
  302. package/tools/v1/customers/billing-config/create-customers-v1-billing-config.js +3 -1
  303. package/tools/v1/customers/billing-config/create-customers-v1-billing-config.js.map +1 -1
  304. package/tools/v1/customers/billing-config/create-customers-v1-billing-config.mjs +3 -1
  305. package/tools/v1/customers/billing-config/create-customers-v1-billing-config.mjs.map +1 -1
  306. package/tools/v1/customers/billing-config/delete-customers-v1-billing-config.d.mts.map +1 -1
  307. package/tools/v1/customers/billing-config/delete-customers-v1-billing-config.d.ts.map +1 -1
  308. package/tools/v1/customers/billing-config/delete-customers-v1-billing-config.js +2 -1
  309. package/tools/v1/customers/billing-config/delete-customers-v1-billing-config.js.map +1 -1
  310. package/tools/v1/customers/billing-config/delete-customers-v1-billing-config.mjs +2 -1
  311. package/tools/v1/customers/billing-config/delete-customers-v1-billing-config.mjs.map +1 -1
  312. package/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.d.mts.map +1 -1
  313. package/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.d.ts.map +1 -1
  314. package/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.js +2 -1
  315. package/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.js.map +1 -1
  316. package/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.mjs +2 -1
  317. package/tools/v1/customers/billing-config/retrieve-customers-v1-billing-config.mjs.map +1 -1
  318. package/tools/v1/customers/commits/create-customers-v1-commits.js +2 -2
  319. package/tools/v1/customers/commits/create-customers-v1-commits.js.map +1 -1
  320. package/tools/v1/customers/commits/create-customers-v1-commits.mjs +2 -2
  321. package/tools/v1/customers/commits/create-customers-v1-commits.mjs.map +1 -1
  322. package/tools/v1/customers/commits/update-end-date-customers-v1-commits.js +1 -1
  323. package/tools/v1/customers/commits/update-end-date-customers-v1-commits.js.map +1 -1
  324. package/tools/v1/customers/commits/update-end-date-customers-v1-commits.mjs +1 -1
  325. package/tools/v1/customers/commits/update-end-date-customers-v1-commits.mjs.map +1 -1
  326. package/tools/v1/customers/create-v1-customers.d.mts.map +1 -1
  327. package/tools/v1/customers/create-v1-customers.d.ts.map +1 -1
  328. package/tools/v1/customers/create-v1-customers.js +3 -1
  329. package/tools/v1/customers/create-v1-customers.js.map +1 -1
  330. package/tools/v1/customers/create-v1-customers.mjs +3 -1
  331. package/tools/v1/customers/create-v1-customers.mjs.map +1 -1
  332. package/tools/v1/customers/credits/create-customers-v1-credits.js +1 -1
  333. package/tools/v1/customers/credits/create-customers-v1-credits.js.map +1 -1
  334. package/tools/v1/customers/credits/create-customers-v1-credits.mjs +1 -1
  335. package/tools/v1/customers/credits/create-customers-v1-credits.mjs.map +1 -1
  336. package/tools/v1/customers/credits/update-end-date-customers-v1-credits.js +1 -1
  337. package/tools/v1/customers/credits/update-end-date-customers-v1-credits.js.map +1 -1
  338. package/tools/v1/customers/credits/update-end-date-customers-v1-credits.mjs +1 -1
  339. package/tools/v1/customers/credits/update-end-date-customers-v1-credits.mjs.map +1 -1
  340. package/tools/v1/customers/invoices/add-charge-customers-v1-invoices.js +1 -1
  341. package/tools/v1/customers/invoices/add-charge-customers-v1-invoices.js.map +1 -1
  342. package/tools/v1/customers/invoices/add-charge-customers-v1-invoices.mjs +1 -1
  343. package/tools/v1/customers/invoices/add-charge-customers-v1-invoices.mjs.map +1 -1
  344. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.d.mts +45 -0
  345. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.d.mts.map +1 -0
  346. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.d.ts +45 -0
  347. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.d.ts.map +1 -0
  348. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.js +39 -0
  349. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.js.map +1 -0
  350. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.mjs +35 -0
  351. package/tools/v1/customers/invoices/retrieve-pdf-customers-v1-invoices.mjs.map +1 -0
  352. package/tools/v1/customers/list-billable-metrics-v1-customers.js +1 -1
  353. package/tools/v1/customers/list-billable-metrics-v1-customers.js.map +1 -1
  354. package/tools/v1/customers/list-billable-metrics-v1-customers.mjs +1 -1
  355. package/tools/v1/customers/list-billable-metrics-v1-customers.mjs.map +1 -1
  356. package/tools/v1/customers/list-costs-v1-customers.js +1 -1
  357. package/tools/v1/customers/list-costs-v1-customers.js.map +1 -1
  358. package/tools/v1/customers/list-costs-v1-customers.mjs +1 -1
  359. package/tools/v1/customers/list-costs-v1-customers.mjs.map +1 -1
  360. package/tools/v1/customers/list-v1-customers.js +1 -1
  361. package/tools/v1/customers/list-v1-customers.js.map +1 -1
  362. package/tools/v1/customers/list-v1-customers.mjs +1 -1
  363. package/tools/v1/customers/list-v1-customers.mjs.map +1 -1
  364. package/tools/v1/customers/named-schedules/retrieve-customers-v1-named-schedules.js +1 -1
  365. package/tools/v1/customers/named-schedules/retrieve-customers-v1-named-schedules.js.map +1 -1
  366. package/tools/v1/customers/named-schedules/retrieve-customers-v1-named-schedules.mjs +1 -1
  367. package/tools/v1/customers/named-schedules/retrieve-customers-v1-named-schedules.mjs.map +1 -1
  368. package/tools/v1/customers/plans/add-customers-v1-plans.js +1 -1
  369. package/tools/v1/customers/plans/add-customers-v1-plans.js.map +1 -1
  370. package/tools/v1/customers/plans/add-customers-v1-plans.mjs +1 -1
  371. package/tools/v1/customers/plans/add-customers-v1-plans.mjs.map +1 -1
  372. package/tools/v1/customers/plans/end-customers-v1-plans.js +1 -1
  373. package/tools/v1/customers/plans/end-customers-v1-plans.js.map +1 -1
  374. package/tools/v1/customers/plans/end-customers-v1-plans.mjs +1 -1
  375. package/tools/v1/customers/plans/end-customers-v1-plans.mjs.map +1 -1
  376. package/tools/v1/customers/plans/list-customers-v1-plans.js +1 -1
  377. package/tools/v1/customers/plans/list-customers-v1-plans.js.map +1 -1
  378. package/tools/v1/customers/plans/list-customers-v1-plans.mjs +1 -1
  379. package/tools/v1/customers/plans/list-customers-v1-plans.mjs.map +1 -1
  380. package/tools/v1/customers/plans/list-price-adjustments-customers-v1-plans.js +1 -1
  381. package/tools/v1/customers/plans/list-price-adjustments-customers-v1-plans.js.map +1 -1
  382. package/tools/v1/customers/plans/list-price-adjustments-customers-v1-plans.mjs +1 -1
  383. package/tools/v1/customers/plans/list-price-adjustments-customers-v1-plans.mjs.map +1 -1
  384. package/tools/v1/customers/preview-events-v1-customers.d.mts.map +1 -1
  385. package/tools/v1/customers/preview-events-v1-customers.d.ts.map +1 -1
  386. package/tools/v1/customers/preview-events-v1-customers.js +5 -8
  387. package/tools/v1/customers/preview-events-v1-customers.js.map +1 -1
  388. package/tools/v1/customers/preview-events-v1-customers.mjs +5 -8
  389. package/tools/v1/customers/preview-events-v1-customers.mjs.map +1 -1
  390. package/tools/v1/customers/retrieve-billing-configurations-v1-customers.js +1 -1
  391. package/tools/v1/customers/retrieve-billing-configurations-v1-customers.js.map +1 -1
  392. package/tools/v1/customers/retrieve-billing-configurations-v1-customers.mjs +1 -1
  393. package/tools/v1/customers/retrieve-billing-configurations-v1-customers.mjs.map +1 -1
  394. package/tools/v1/customers/retrieve-v1-customers.js +1 -1
  395. package/tools/v1/customers/retrieve-v1-customers.js.map +1 -1
  396. package/tools/v1/customers/retrieve-v1-customers.mjs +1 -1
  397. package/tools/v1/customers/retrieve-v1-customers.mjs.map +1 -1
  398. package/tools/v1/customers/set-billing-configurations-v1-customers.d.mts.map +1 -1
  399. package/tools/v1/customers/set-billing-configurations-v1-customers.d.ts.map +1 -1
  400. package/tools/v1/customers/set-billing-configurations-v1-customers.js +2 -1
  401. package/tools/v1/customers/set-billing-configurations-v1-customers.js.map +1 -1
  402. package/tools/v1/customers/set-billing-configurations-v1-customers.mjs +2 -1
  403. package/tools/v1/customers/set-billing-configurations-v1-customers.mjs.map +1 -1
  404. package/tools/v1/customers/set-name-v1-customers.js +1 -1
  405. package/tools/v1/customers/set-name-v1-customers.js.map +1 -1
  406. package/tools/v1/customers/set-name-v1-customers.mjs +1 -1
  407. package/tools/v1/customers/set-name-v1-customers.mjs.map +1 -1
  408. package/tools/v1/dashboards/get-embeddable-url-v1-dashboards.js +1 -1
  409. package/tools/v1/dashboards/get-embeddable-url-v1-dashboards.js.map +1 -1
  410. package/tools/v1/dashboards/get-embeddable-url-v1-dashboards.mjs +1 -1
  411. package/tools/v1/dashboards/get-embeddable-url-v1-dashboards.mjs.map +1 -1
  412. package/tools/v1/invoices/regenerate-v1-invoices.js +1 -1
  413. package/tools/v1/invoices/regenerate-v1-invoices.js.map +1 -1
  414. package/tools/v1/invoices/regenerate-v1-invoices.mjs +1 -1
  415. package/tools/v1/invoices/regenerate-v1-invoices.mjs.map +1 -1
  416. package/tools/v1/invoices/void-v1-invoices.js +1 -1
  417. package/tools/v1/invoices/void-v1-invoices.js.map +1 -1
  418. package/tools/v1/invoices/void-v1-invoices.mjs +1 -1
  419. package/tools/v1/invoices/void-v1-invoices.mjs.map +1 -1
  420. package/tools/v1/payments/attempt-v1-payments.d.mts +45 -0
  421. package/tools/v1/payments/attempt-v1-payments.d.mts.map +1 -0
  422. package/tools/v1/payments/attempt-v1-payments.d.ts +45 -0
  423. package/tools/v1/payments/attempt-v1-payments.d.ts.map +1 -0
  424. package/tools/v1/payments/attempt-v1-payments.js +43 -0
  425. package/tools/v1/payments/attempt-v1-payments.js.map +1 -0
  426. package/tools/v1/payments/attempt-v1-payments.mjs +39 -0
  427. package/tools/v1/payments/attempt-v1-payments.mjs.map +1 -0
  428. package/tools/v1/payments/cancel-v1-payments.d.mts +45 -0
  429. package/tools/v1/payments/cancel-v1-payments.d.mts.map +1 -0
  430. package/tools/v1/payments/cancel-v1-payments.d.ts +45 -0
  431. package/tools/v1/payments/cancel-v1-payments.d.ts.map +1 -0
  432. package/tools/v1/payments/cancel-v1-payments.js +43 -0
  433. package/tools/v1/payments/cancel-v1-payments.js.map +1 -0
  434. package/tools/v1/payments/cancel-v1-payments.mjs +39 -0
  435. package/tools/v1/payments/cancel-v1-payments.mjs.map +1 -0
  436. package/tools/v1/payments/list-v1-payments.d.mts +45 -0
  437. package/tools/v1/payments/list-v1-payments.d.mts.map +1 -0
  438. package/tools/v1/payments/list-v1-payments.d.ts +45 -0
  439. package/tools/v1/payments/list-v1-payments.d.ts.map +1 -0
  440. package/tools/v1/payments/list-v1-payments.js +64 -0
  441. package/tools/v1/payments/list-v1-payments.js.map +1 -0
  442. package/tools/v1/payments/list-v1-payments.mjs +60 -0
  443. package/tools/v1/payments/list-v1-payments.mjs.map +1 -0
  444. package/tools/v1/plans/get-details-v1-plans.js +1 -1
  445. package/tools/v1/plans/get-details-v1-plans.js.map +1 -1
  446. package/tools/v1/plans/get-details-v1-plans.mjs +1 -1
  447. package/tools/v1/plans/get-details-v1-plans.mjs.map +1 -1
  448. package/tools/v1/plans/list-charges-v1-plans.js +1 -1
  449. package/tools/v1/plans/list-charges-v1-plans.js.map +1 -1
  450. package/tools/v1/plans/list-charges-v1-plans.mjs +1 -1
  451. package/tools/v1/plans/list-charges-v1-plans.mjs.map +1 -1
  452. package/tools/v1/plans/list-customers-v1-plans.js +1 -1
  453. package/tools/v1/plans/list-customers-v1-plans.js.map +1 -1
  454. package/tools/v1/plans/list-customers-v1-plans.mjs +1 -1
  455. package/tools/v1/plans/list-customers-v1-plans.mjs.map +1 -1
  456. package/tools/v1/plans/list-v1-plans.js +1 -1
  457. package/tools/v1/plans/list-v1-plans.js.map +1 -1
  458. package/tools/v1/plans/list-v1-plans.mjs +1 -1
  459. package/tools/v1/plans/list-v1-plans.mjs.map +1 -1
  460. package/tools/v1/pricing-units/list-v1-pricing-units.js +1 -1
  461. package/tools/v1/pricing-units/list-v1-pricing-units.js.map +1 -1
  462. package/tools/v1/pricing-units/list-v1-pricing-units.mjs +1 -1
  463. package/tools/v1/pricing-units/list-v1-pricing-units.mjs.map +1 -1
  464. package/tools/v1/services/list-v1-services.js +1 -1
  465. package/tools/v1/services/list-v1-services.js.map +1 -1
  466. package/tools/v1/services/list-v1-services.mjs +1 -1
  467. package/tools/v1/services/list-v1-services.mjs.map +1 -1
  468. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.d.mts +45 -0
  469. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.d.mts.map +1 -0
  470. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.d.ts +45 -0
  471. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.d.ts.map +1 -0
  472. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.js +52 -0
  473. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.js.map +1 -0
  474. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.mjs +48 -0
  475. package/tools/v1/settings/billing-providers/create-settings-v1-billing-providers.mjs.map +1 -0
  476. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.d.mts +45 -0
  477. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.d.mts.map +1 -0
  478. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.d.ts +45 -0
  479. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.d.ts.map +1 -0
  480. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.js +41 -0
  481. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.js.map +1 -0
  482. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.mjs +37 -0
  483. package/tools/v1/settings/billing-providers/list-settings-v1-billing-providers.mjs.map +1 -0
  484. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.d.mts +45 -0
  485. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.d.mts.map +1 -0
  486. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.d.ts +45 -0
  487. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.d.ts.map +1 -0
  488. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.js +57 -0
  489. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.js.map +1 -0
  490. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.mjs +53 -0
  491. package/tools/v1/settings/upsert-avalara-credentials-v1-settings.mjs.map +1 -0
  492. package/tools/v1/usage/ingest-v1-usage.js +1 -1
  493. package/tools/v1/usage/ingest-v1-usage.js.map +1 -1
  494. package/tools/v1/usage/ingest-v1-usage.mjs +1 -1
  495. package/tools/v1/usage/ingest-v1-usage.mjs.map +1 -1
  496. package/tools/v1/usage/list-v1-usage.js +1 -1
  497. package/tools/v1/usage/list-v1-usage.js.map +1 -1
  498. package/tools/v1/usage/list-v1-usage.mjs +1 -1
  499. package/tools/v1/usage/list-v1-usage.mjs.map +1 -1
  500. package/tools/v1/usage/list-with-groups-v1-usage.js +1 -1
  501. package/tools/v1/usage/list-with-groups-v1-usage.js.map +1 -1
  502. package/tools/v1/usage/list-with-groups-v1-usage.mjs +1 -1
  503. package/tools/v1/usage/list-with-groups-v1-usage.mjs.map +1 -1
  504. package/tools/v1/usage/search-v1-usage.js +1 -1
  505. package/tools/v1/usage/search-v1-usage.js.map +1 -1
  506. package/tools/v1/usage/search-v1-usage.mjs +1 -1
  507. package/tools/v1/usage/search-v1-usage.mjs.map +1 -1
  508. package/tools/v2/contracts/edit-commit-v2-contracts.d.mts.map +1 -1
  509. package/tools/v2/contracts/edit-commit-v2-contracts.d.ts.map +1 -1
  510. package/tools/v2/contracts/edit-commit-v2-contracts.js +50 -1
  511. package/tools/v2/contracts/edit-commit-v2-contracts.js.map +1 -1
  512. package/tools/v2/contracts/edit-commit-v2-contracts.mjs +50 -1
  513. package/tools/v2/contracts/edit-commit-v2-contracts.mjs.map +1 -1
  514. package/tools/v2/contracts/edit-credit-v2-contracts.d.mts.map +1 -1
  515. package/tools/v2/contracts/edit-credit-v2-contracts.d.ts.map +1 -1
  516. package/tools/v2/contracts/edit-credit-v2-contracts.js +50 -1
  517. package/tools/v2/contracts/edit-credit-v2-contracts.js.map +1 -1
  518. package/tools/v2/contracts/edit-credit-v2-contracts.mjs +50 -1
  519. package/tools/v2/contracts/edit-credit-v2-contracts.mjs.map +1 -1
  520. package/tools/v2/contracts/edit-v2-contracts.d.mts.map +1 -1
  521. package/tools/v2/contracts/edit-v2-contracts.d.ts.map +1 -1
  522. package/tools/v2/contracts/edit-v2-contracts.js +60 -5
  523. package/tools/v2/contracts/edit-v2-contracts.js.map +1 -1
  524. package/tools/v2/contracts/edit-v2-contracts.mjs +60 -5
  525. package/tools/v2/contracts/edit-v2-contracts.mjs.map +1 -1
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'list_keys_v1_custom_fields',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieve all your active custom field keys, with optional filtering by entity type (customer, contract, product, etc.). Use this endpoint to discover what custom field keys are available before setting values on entities or to audit your custom field configuration across different entity types.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n enforce_uniqueness: {\n type: 'boolean'\n },\n entity: {\n type: 'string',\n enum: [ 'alert',\n 'billable_metric',\n 'charge',\n 'commit',\n 'contract_credit',\n 'contract_product',\n 'contract',\n 'credit_grant',\n 'customer_plan',\n 'customer',\n 'discount',\n 'invoice',\n 'plan',\n 'professional_service',\n 'product',\n 'rate_card',\n 'scheduled_charge',\n 'subscription'\n ]\n },\n key: {\n type: 'string'\n }\n },\n required: [ 'enforce_uniqueness',\n 'entity',\n 'key'\n ]\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ]\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieve all your active custom field keys, with optional filtering by entity type (customer, contract, product, etc.). Use this endpoint to discover what custom field keys are available before setting values on entities or to audit your custom field configuration across different entity types.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/custom_field_list_keys_response'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n custom_field_list_keys_response: {\n type: 'object',\n properties: {\n enforce_uniqueness: {\n type: 'boolean'\n },\n entity: {\n type: 'string',\n enum: [ 'alert',\n 'billable_metric',\n 'charge',\n 'commit',\n 'contract_credit',\n 'contract_product',\n 'contract',\n 'credit_grant',\n 'customer_plan',\n 'customer',\n 'discount',\n 'invoice',\n 'plan',\n 'professional_service',\n 'product',\n 'rate_card',\n 'scheduled_charge',\n 'subscription'\n ]\n },\n key: {\n type: 'string'\n }\n },\n required: [ 'enforce_uniqueness',\n 'entity',\n 'key'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'list_customers_v1_alerts',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieve all alert configurations and their current statuses for a specific customer in a single API call. This endpoint provides a comprehensive view of all alerts monitoring a customer account.\n\n### Use this endpoint to:\n- Display all active alerts for a customer in dashboards or admin panels\n- Quickly identify which alerts a customer is currently triggering\n- Audit alert coverage for specific accounts\n- Filter alerts by status (enabled, disabled, or archived)\n\n### Key response fields:\n- data: Array of CustomerAlert objects, each containing:\n - Current evaluation status (`ok`, `in_alarm`, `evaluating`, or `null`)\n - Complete alert configuration and threshold details\n - Alert metadata including type, name, and last update time\n- `next_page`: Pagination cursor for retrieving additional results\n\n### Usage guidelines:\n- Default behavior: Returns only enabled alerts unless alert_statuses filter is specified\n- Pagination: Use the `next_page` cursor to retrieve all results for customers with many alerts\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/customer_alert'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n customer_alert: {\n type: 'object',\n properties: {\n alert: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the alert'\n },\n name: {\n type: 'string',\n description: 'Name of the alert'\n },\n status: {\n type: 'string',\n description: 'Status of the alert',\n enum: [ 'enabled',\n 'archived',\n 'disabled'\n ]\n },\n threshold: {\n type: 'number',\n description: 'Threshold value of the alert policy'\n },\n type: {\n type: 'string',\n description: 'Type of the alert',\n enum: [ 'low_credit_balance_reached',\n 'spend_threshold_reached',\n 'monthly_invoice_total_spend_threshold_reached',\n 'low_remaining_days_in_plan_reached',\n 'low_remaining_credit_percentage_reached',\n 'usage_threshold_reached',\n 'low_remaining_days_for_commit_segment_reached',\n 'low_remaining_commit_balance_reached',\n 'low_remaining_commit_percentage_reached',\n 'low_remaining_days_for_contract_credit_segment_reached',\n 'low_remaining_contract_credit_balance_reached',\n 'low_remaining_contract_credit_percentage_reached',\n 'low_remaining_contract_credit_and_commit_balance_reached',\n 'invoice_total_reached'\n ]\n },\n updated_at: {\n type: 'string',\n description: 'Timestamp for when the alert was last updated',\n format: 'date-time'\n },\n credit_grant_type_filters: {\n type: 'array',\n description: 'An array of strings, representing a way to filter the credit grant this alert applies to, by looking at the credit_grant_type field on the credit grant. This field is only defined for CreditPercentage and CreditBalance alerts',\n items: {\n type: 'string'\n }\n },\n credit_type: {\n $ref: '#/$defs/credit_type_data'\n },\n custom_field_filters: {\n type: 'array',\n description: 'A list of custom field filters for alert types that support advanced filtering',\n items: {\n type: 'object',\n properties: {\n entity: {\n type: 'string',\n enum: [ 'Contract',\n 'Commit',\n 'ContractCredit'\n ]\n },\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'entity',\n 'key',\n 'value'\n ]\n }\n },\n group_key_filter: {\n type: 'object',\n description: 'Scopes alert evaluation to a specific presentation group key on individual line items. Only present for spend alerts.',\n properties: {\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'key',\n 'value'\n ]\n },\n group_values: {\n type: 'array',\n description: 'Only present for `spend_threshold_reached` alerts. Scope alert to a specific group key on individual line items.',\n items: {\n type: 'object',\n properties: {\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'key'\n ]\n }\n },\n invoice_types_filter: {\n type: 'array',\n description: 'Only supported for invoice_total_reached alerts. A list of invoice types to evaluate.',\n items: {\n type: 'string'\n }\n },\n uniqueness_key: {\n type: 'string',\n description: 'Prevents the creation of duplicates. If a request to create a record is made with a previously used uniqueness key, a new record will not be created and the request will fail with a 409 error.'\n }\n },\n required: [ 'id',\n 'name',\n 'status',\n 'threshold',\n 'type',\n 'updated_at'\n ]\n },\n customer_status: {\n type: 'string',\n description: 'The status of the customer alert. If the alert is archived, null will be returned.',\n enum: [ 'ok',\n 'in_alarm',\n 'evaluating'\n ]\n },\n triggered_by: {\n type: 'string',\n description: 'If present, indicates the reason the alert was triggered.'\n }\n },\n required: [ 'alert',\n 'customer_status'\n ]\n },\n credit_type_data: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n },\n name: {\n type: 'string'\n }\n },\n required: [ 'id',\n 'name'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieve all threshold notification configurations and their current statuses for a specific customer in a single API call. This endpoint provides a comprehensive view of all threshold notification monitoring a customer account.\n\n### Use this endpoint to:\n- Display all active threshold notifications for a customer in dashboards or admin panels\n- Quickly identify which threshold notifications a customer is currently triggering\n- Audit threshold notification coverage for specific accounts\n- Filter threshold notifications by status (enabled, disabled, or archived)\n\n### Key response fields:\n- data: Array of CustomerAlert objects, each containing:\n - Current evaluation status (`ok`, `in_alarm`, `evaluating`, or `null`)\n - Complete threshold notification configuration and threshold details\n - Threshold notification metadata including type, name, and last update time\n- next_page: Pagination cursor for retrieving additional results\n\n### Usage guidelines:\n- Default behavior: Returns only enabled threshold notifications unless `alert_statuses` filter is specified\n- Pagination: Use the `next_page` cursor to retrieve all results for customers with many notifications\n- Performance: Efficiently retrieves multiple threshold notification statuses in a single request instead of making individual calls\n- Filtering: Pass the `alert_statuses` array to include disabled or archived threshold notifications in results\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/customer_alert'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n customer_alert: {\n type: 'object',\n properties: {\n alert: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the threshold notification'\n },\n name: {\n type: 'string',\n description: 'Name of the threshold notification'\n },\n status: {\n type: 'string',\n description: 'Status of the threshold notification',\n enum: [ 'enabled',\n 'archived',\n 'disabled'\n ]\n },\n threshold: {\n type: 'number',\n description: 'Threshold value of the notification policy'\n },\n type: {\n type: 'string',\n description: 'Type of the threshold notification',\n enum: [ 'low_credit_balance_reached',\n 'spend_threshold_reached',\n 'monthly_invoice_total_spend_threshold_reached',\n 'low_remaining_days_in_plan_reached',\n 'low_remaining_credit_percentage_reached',\n 'usage_threshold_reached',\n 'low_remaining_days_for_commit_segment_reached',\n 'low_remaining_commit_balance_reached',\n 'low_remaining_commit_percentage_reached',\n 'low_remaining_days_for_contract_credit_segment_reached',\n 'low_remaining_contract_credit_balance_reached',\n 'low_remaining_contract_credit_percentage_reached',\n 'low_remaining_contract_credit_and_commit_balance_reached',\n 'low_remaining_seat_balance_reached',\n 'invoice_total_reached'\n ]\n },\n updated_at: {\n type: 'string',\n description: 'Timestamp for when the threshold notification was last updated',\n format: 'date-time'\n },\n credit_grant_type_filters: {\n type: 'array',\n description: 'An array of strings, representing a way to filter the credit grant this threshold notification applies to, by looking at the credit_grant_type field on the credit grant. This field is only defined for CreditPercentage and CreditBalance notifications',\n items: {\n type: 'string'\n }\n },\n credit_type: {\n $ref: '#/$defs/credit_type_data'\n },\n custom_field_filters: {\n type: 'array',\n description: 'A list of custom field filters for notification types that support advanced filtering',\n items: {\n type: 'object',\n properties: {\n entity: {\n type: 'string',\n enum: [ 'Contract',\n 'Commit',\n 'ContractCredit'\n ]\n },\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'entity',\n 'key',\n 'value'\n ]\n }\n },\n group_key_filter: {\n type: 'object',\n description: 'Scopes threshold notification evaluation to a specific presentation group key on individual line items. Only present for spend notifications.',\n properties: {\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'key',\n 'value'\n ]\n },\n group_values: {\n type: 'array',\n description: 'Only present for `spend_threshold_reached` notifications. Scope notification to a specific group key on individual line items.',\n items: {\n type: 'object',\n properties: {\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'key'\n ]\n }\n },\n invoice_types_filter: {\n type: 'array',\n description: 'Only supported for invoice_total_reached threshold notifications. A list of invoice types to evaluate.',\n items: {\n type: 'string'\n }\n },\n uniqueness_key: {\n type: 'string',\n description: 'Prevents the creation of duplicates. If a request to create a record is made with a previously used uniqueness key, a new record will not be created and the request will fail with a 409 error.'\n }\n },\n required: [ 'id',\n 'name',\n 'status',\n 'threshold',\n 'type',\n 'updated_at'\n ]\n },\n customer_status: {\n type: 'string',\n description: 'The status of the threshold notification. If the notification is archived, null will be returned.',\n enum: [ 'ok',\n 'in_alarm',\n 'evaluating'\n ]\n },\n triggered_by: {\n type: 'string',\n description: 'If present, indicates the reason the threshold notification was triggered.'\n }\n },\n required: [ 'alert',\n 'customer_status'\n ]\n },\n credit_type_data: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n },\n name: {\n type: 'string'\n }\n },\n required: [ 'id',\n 'name'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -32,7 +32,8 @@ export const tool: Tool = {
32
32
  },
33
33
  alert_statuses: {
34
34
  type: 'array',
35
- description: 'Optionally filter by alert status. If absent, only enabled alerts will be returned.',
35
+ description:
36
+ 'Optionally filter by threshold notification status. If absent, only enabled notifications will be returned.',
36
37
  items: {
37
38
  type: 'string',
38
39
  enum: ['ENABLED', 'DISABLED', 'ARCHIVED'],
@@ -17,13 +17,13 @@ export const metadata: Metadata = {
17
17
  export const tool: Tool = {
18
18
  name: 'reset_customers_v1_alerts',
19
19
  description:
20
- 'Force an immediate re-evaluation of a specific alert for a customer, clearing any previous state and triggering a fresh assessment against current thresholds. This endpoint ensures alert accuracy after configuration changes or data corrections.\n\n### Use this endpoint to:\n- Clear false positive alerts after fixing data issues\n- Re-evaluate alerts after adjusting customer balances or credits\n- Test alert behavior during development and debugging\n- Resolve stuck alerts that may be in an incorrect state\n- Trigger immediate evaluation after threshold modifications\n\n### Key response fields: \n- 200 Success: Confirmation that the alert has been reset and re-evaluation initiated\n- No response body is returned - the operation completes asynchronously\n\n### Usage guidelines:\n- Immediate effect: Triggers re-evaluation instantly, which may result in new webhook notifications if thresholds are breached\n- State clearing: Removes any cached evaluation state, ensuring a fresh assessment\n- Use sparingly: Intended for exceptional cases, not routine operations\n- Asynchronous processing: The reset completes immediately, but re-evaluation happens in the background\n',
20
+ 'Force an immediate re-evaluation of a specific threshold notification for a customer, clearing any previous state and triggering a fresh assessment against current thresholds. This endpoint ensures threshold notification accuracy after configuration changes or data corrections.\n\n### Use this endpoint to:\n- Clear false positive threshold notifications after fixing data issues\n- Re-evaluate threshold notifications after adjusting customer balances or credits\n- Test threshold notification behavior during development and debugging\n- Resolve stuck threshold notification that may be in an incorrect state\n- Trigger immediate evaluation after threshold modifications\n\n### Key response fields: \n- 200 Success: Confirmation that the threshold notification has been reset and re-evaluation initiated\n- No response body is returned - the operation completes asynchronously\n\n### Usage guidelines:\n- Immediate effect: Triggers re-evaluation instantly, which may result in new webhook notifications if thresholds are breached\n- State clearing: Removes any cached evaluation state, ensuring a fresh assessment\n- Use sparingly: Intended for exceptional cases, not routine operations\n- Asynchronous processing: The reset completes immediately, but re-evaluation happens in the background\n',
21
21
  inputSchema: {
22
22
  type: 'object',
23
23
  properties: {
24
24
  alert_id: {
25
25
  type: 'string',
26
- description: 'The Metronome ID of the alert',
26
+ description: 'The Metronome ID of the threshold notification',
27
27
  },
28
28
  customer_id: {
29
29
  type: 'string',
@@ -1,6 +1,5 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- import { maybeFilter } from '@metronome/mcp/filtering';
4
3
  import { Metadata, asTextContentResult } from '@metronome/mcp/tools/types';
5
4
 
6
5
  import { Tool } from '@modelcontextprotocol/sdk/types.js';
@@ -18,13 +17,13 @@ export const metadata: Metadata = {
18
17
  export const tool: Tool = {
19
18
  name: 'retrieve_customers_v1_alerts',
20
19
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieve the real-time evaluation status for a specific alert-customer pair. This endpoint provides instant visibility into whether a customer has triggered an alert condition, enabling you to monitor account health and take proactive action based on current alert states.\n\n### Use this endpoint to:\n- Check if a specific customer is currently violating an alert threshold (`in_alarm` status)\n- Verify alert configuration details and threshold values for a customer\n- Integrate alert status checks into customer support tools or admin interfaces\n\n### Key response fields: \nA CustomerAlert object containing:\n\n- `customer_status`: The current evaluation state\n\n- `ok` - Customer is within acceptable thresholds\n- `in_alarm`- Customer has breached the alert threshold\n- `evaluating` - Alert has yet to be evaluated (typically due to a customer or alert having just been created)\n- `null` - Alert has been archived\n- `triggered_by`: Additional context about what caused the alert to trigger (when applicable)\n- alert: Complete alert configuration including:\n - Alert ID, name, and type\n - Current threshold values and credit type information\n - Alert status (enabled, disabled, or archived)\n - Last update timestamp\n - Any applied filters (credit grant types, custom fields, group values)\n\n### Usage guidelines:\n- Customer status: Returns the current evaluation state, not historical data. For alert history, use webhook notifications or event logs\n- Archived alerts: Returns null for customer_status if the alert has been archived, but still includes the alert configuration details\n- Integration patterns: This endpoint can be used to check a customer's alert status, but shouldn't be scraped. You should instead rely on the webhook notification to understand when customers are moved to IN_ALARM.\n- Error handling: Returns 404 if either the customer or alert ID doesn't exist or isn't accessible to your organization\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/customer_alert'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n customer_alert: {\n type: 'object',\n properties: {\n alert: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the alert'\n },\n name: {\n type: 'string',\n description: 'Name of the alert'\n },\n status: {\n type: 'string',\n description: 'Status of the alert',\n enum: [ 'enabled',\n 'archived',\n 'disabled'\n ]\n },\n threshold: {\n type: 'number',\n description: 'Threshold value of the alert policy'\n },\n type: {\n type: 'string',\n description: 'Type of the alert',\n enum: [ 'low_credit_balance_reached',\n 'spend_threshold_reached',\n 'monthly_invoice_total_spend_threshold_reached',\n 'low_remaining_days_in_plan_reached',\n 'low_remaining_credit_percentage_reached',\n 'usage_threshold_reached',\n 'low_remaining_days_for_commit_segment_reached',\n 'low_remaining_commit_balance_reached',\n 'low_remaining_commit_percentage_reached',\n 'low_remaining_days_for_contract_credit_segment_reached',\n 'low_remaining_contract_credit_balance_reached',\n 'low_remaining_contract_credit_percentage_reached',\n 'low_remaining_contract_credit_and_commit_balance_reached',\n 'invoice_total_reached'\n ]\n },\n updated_at: {\n type: 'string',\n description: 'Timestamp for when the alert was last updated',\n format: 'date-time'\n },\n credit_grant_type_filters: {\n type: 'array',\n description: 'An array of strings, representing a way to filter the credit grant this alert applies to, by looking at the credit_grant_type field on the credit grant. This field is only defined for CreditPercentage and CreditBalance alerts',\n items: {\n type: 'string'\n }\n },\n credit_type: {\n $ref: '#/$defs/credit_type_data'\n },\n custom_field_filters: {\n type: 'array',\n description: 'A list of custom field filters for alert types that support advanced filtering',\n items: {\n type: 'object',\n properties: {\n entity: {\n type: 'string',\n enum: [ 'Contract',\n 'Commit',\n 'ContractCredit'\n ]\n },\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'entity',\n 'key',\n 'value'\n ]\n }\n },\n group_key_filter: {\n type: 'object',\n description: 'Scopes alert evaluation to a specific presentation group key on individual line items. Only present for spend alerts.',\n properties: {\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'key',\n 'value'\n ]\n },\n group_values: {\n type: 'array',\n description: 'Only present for `spend_threshold_reached` alerts. Scope alert to a specific group key on individual line items.',\n items: {\n type: 'object',\n properties: {\n key: {\n type: 'string'\n },\n value: {\n type: 'string'\n }\n },\n required: [ 'key'\n ]\n }\n },\n invoice_types_filter: {\n type: 'array',\n description: 'Only supported for invoice_total_reached alerts. A list of invoice types to evaluate.',\n items: {\n type: 'string'\n }\n },\n uniqueness_key: {\n type: 'string',\n description: 'Prevents the creation of duplicates. If a request to create a record is made with a previously used uniqueness key, a new record will not be created and the request will fail with a 409 error.'\n }\n },\n required: [ 'id',\n 'name',\n 'status',\n 'threshold',\n 'type',\n 'updated_at'\n ]\n },\n customer_status: {\n type: 'string',\n description: 'The status of the customer alert. If the alert is archived, null will be returned.',\n enum: [ 'ok',\n 'in_alarm',\n 'evaluating'\n ]\n },\n triggered_by: {\n type: 'string',\n description: 'If present, indicates the reason the alert was triggered.'\n }\n },\n required: [ 'alert',\n 'customer_status'\n ]\n },\n credit_type_data: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n },\n name: {\n type: 'string'\n }\n },\n required: [ 'id',\n 'name'\n ]\n }\n }\n}\n```",
20
+ "Retrieve the real-time evaluation status for a specific threshold notification-customer pair. This endpoint provides instant visibility into whether a customer has triggered a threshold notification condition, enabling you to monitor account health and take proactive action based on current threshold notification states.\n\n### Use this endpoint to:\n- Check if a specific customer is currently violating an threshold notification (`in_alarm` status)\n- Verify threshold notification configuration details and threshold values for a customer\n- Monitor the evaluation state of newly created or recently modified threshold notification\n- Build dashboards or automated workflows that respond to specific threshold notification conditions\n- Validate threshold notification behavior before deploying to production customers\n- Integrate threshold notification status checks into customer support tools or admin interfaces\n\n### Key response fields: \nA CustomerAlert object containing:\n\n- `customer_status`: The current evaluation state\n\n- `ok` - Customer is within acceptable thresholds\n- `in_alarm` - Customer has breached the threshold for the notification\n- `evaluating` - Notification is currently being evaluated (typically during initial setup)\n- `null` - Notification has been archived\n- `triggered_by`: Additional context about what caused the notification to trigger (when applicable)\n- alert: Complete threshold notification configuration including:\n - Notification ID, name, and type\n - Current threshold values and credit type information\n - Notification status (enabled, disabled, or archived)\n - Last update timestamp\n - Any applied filters (credit grant types, custom fields, group values)\n\n### Usage guidelines:\n- Customer status: Returns the current evaluation state, not historical data. For threshold notification history, use webhook notifications or event logs\n- Required parameters: Both customer_id and alert_id must be valid UUIDs that exist in your organization\n- Archived notifications: Returns null for customer_status if the notification has been archived, but still includes the notification configuration details\n- Performance considerations: This endpoint queries live evaluation state, making it ideal for real-time monitoring but not for bulk status checks\n- Integration patterns: Best used for on-demand status checks in response to user actions or as part of targeted monitoring workflows\n- Error handling: Returns 404 if either the customer or alert_id doesn't exist or isn't accessible to your organization\n",
22
21
  inputSchema: {
23
22
  type: 'object',
24
23
  properties: {
25
24
  alert_id: {
26
25
  type: 'string',
27
- description: 'The Metronome ID of the alert',
26
+ description: 'The Metronome ID of the threshold notification',
28
27
  },
29
28
  customer_id: {
30
29
  type: 'string',
@@ -33,11 +32,11 @@ export const tool: Tool = {
33
32
  group_values: {
34
33
  type: 'array',
35
34
  description:
36
- 'Only present for `spend_threshold_reached` alerts. Retrieve the alert for a specific group key-value pair.',
35
+ 'Only present for `spend_threshold_reached` notifications. Retrieve the notification for a specific group key-value pair.',
37
36
  items: {
38
37
  type: 'object',
39
38
  description:
40
- 'Scopes alert evaluation to a specific presentation group key on individual line items. Only present for spend alerts.',
39
+ 'Scopes threshold notification evaluation to a specific presentation group key on individual line items. Only present for spend notifications.',
41
40
  properties: {
42
41
  key: {
43
42
  type: 'string',
@@ -52,15 +51,9 @@ export const tool: Tool = {
52
51
  plans_or_contracts: {
53
52
  type: 'string',
54
53
  description:
55
- 'When parallel alerts are enabled during migration, this flag denotes whether to fetch alerts for plans or contracts.',
54
+ 'When parallel threshold notifications are enabled during migration, this flag denotes whether to fetch notifications for plans or contracts.',
56
55
  enum: ['PLANS', 'CONTRACTS'],
57
56
  },
58
- jq_filter: {
59
- type: 'string',
60
- title: 'jq Filter',
61
- description:
62
- 'A jq filter to apply to the response to include certain fields. Consult the output schema in the tool description to see the fields that are available.\n\nFor example: to include only the `name` field in every object of a results array, you can provide ".results[].name".\n\nFor more information, see the [jq documentation](https://jqlang.org/manual/).',
63
- },
64
57
  },
65
58
  required: ['alert_id', 'customer_id'],
66
59
  },
@@ -68,8 +61,8 @@ export const tool: Tool = {
68
61
  };
69
62
 
70
63
  export const handler = async (client: Metronome, args: Record<string, unknown> | undefined) => {
71
- const { jq_filter, ...body } = args as any;
72
- return asTextContentResult(await maybeFilter(jq_filter, await client.v1.customers.alerts.retrieve(body)));
64
+ const body = args as any;
65
+ return asTextContentResult(await client.v1.customers.alerts.retrieve(body));
73
66
  };
74
67
 
75
68
  export default { metadata, tool, handler };
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'archive_v1_customers',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nUse this endpoint to archive a customer while preserving auditability. Archiving a customer will automatically archive all contracts as of the current date and void all corresponding invoices. Use this endpoint if a customer is onboarded by mistake.\n\n### Usage guidelines:\n- Once a customer is archived, it cannot be unarchived.\n- Archived customers can still be viewed through the API or the UI for audit purposes. \n- Ingest aliases remain idempotent for archived customers. In order to reuse an ingest alias, first remove the ingest alias from the customer prior to archiving.\n- Any alerts associated with the customer will no longer be triggered.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nUse this endpoint to archive a customer while preserving auditability. Archiving a customer will automatically archive all contracts as of the current date and void all corresponding invoices. Use this endpoint if a customer is onboarded by mistake.\n\n### Usage guidelines:\n- Once a customer is archived, it cannot be unarchived.\n- Archived customers can still be viewed through the API or the UI for audit purposes. \n- Ingest aliases remain idempotent for archived customers. In order to reuse an ingest alias, first remove the ingest alias from the customer prior to archiving.\n- Any notifications associated with the customer will no longer be triggered.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/customer_archive_response',\n $defs: {\n customer_archive_response: {\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ]\n },\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -16,7 +16,8 @@ export const metadata: Metadata = {
16
16
 
17
17
  export const tool: Tool = {
18
18
  name: 'create_customers_v1_billing_config',
19
- description: 'Set the billing configuration for a given customer.',
19
+ description:
20
+ 'Set the billing configuration for a given customer. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n',
20
21
  inputSchema: {
21
22
  type: 'object',
22
23
  properties: {
@@ -34,6 +35,7 @@ export const tool: Tool = {
34
35
  'quickbooks_online',
35
36
  'workday',
36
37
  'gcp_marketplace',
38
+ 'metronome',
37
39
  ],
38
40
  },
39
41
  billing_provider_customer_id: {
@@ -76,6 +78,8 @@ export const tool: Tool = {
76
78
  },
77
79
  stripe_collection_method: {
78
80
  type: 'string',
81
+ description:
82
+ "The collection method for the customer's invoices.\nNOTE: `auto_charge_payment_intent` and `manually_charge_payment_intent` are in beta.",
79
83
  enum: [
80
84
  'charge_automatically',
81
85
  'send_invoice',
@@ -17,7 +17,7 @@ export const metadata: Metadata = {
17
17
  export const tool: Tool = {
18
18
  name: 'delete_customers_v1_billing_config',
19
19
  description:
20
- 'Delete the billing configuration for a given customer. Note: this is unsupported for Azure and AWS Marketplace customers.\n',
20
+ 'Delete the billing configuration for a given customer.\nNote: this is unsupported for Azure and AWS Marketplace customers. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n',
21
21
  inputSchema: {
22
22
  type: 'object',
23
23
  properties: {
@@ -35,6 +35,7 @@ export const tool: Tool = {
35
35
  'quickbooks_online',
36
36
  'workday',
37
37
  'gcp_marketplace',
38
+ 'metronome',
38
39
  ],
39
40
  },
40
41
  },
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'retrieve_customers_v1_billing_config',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nFetch the billing configuration for the given customer.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'object',\n properties: {\n aws_expiration_date: {\n type: 'string',\n description: 'Contract expiration date for the customer. The expected format is RFC 3339 and can be retrieved from [AWS\\'s GetEntitlements API](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html).',\n format: 'date-time'\n },\n aws_is_subscription_product: {\n type: 'boolean',\n description: 'True if the aws_product_code is a SAAS subscription product, false otherwise.'\n },\n aws_product_code: {\n type: 'string'\n },\n aws_region: {\n type: 'string',\n enum: [ 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ca-central-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-west-1',\n 'us-west-2'\n ]\n },\n azure_expiration_date: {\n type: 'string',\n description: 'Subscription term start/end date for the customer. The expected format is RFC 3339 and can be retrieved from [Azure\\'s Get Subscription API](https://learn.microsoft.com/en-us/partner-center/marketplace/partner-center-portal/pc-saas-fulfillment-subscription-api#get-subscription).',\n format: 'date-time'\n },\n azure_plan_id: {\n type: 'string'\n },\n azure_start_date: {\n type: 'string',\n description: 'Subscription term start/end date for the customer. The expected format is RFC 3339 and can be retrieved from [Azure\\'s Get Subscription API](https://learn.microsoft.com/en-us/partner-center/marketplace/partner-center-portal/pc-saas-fulfillment-subscription-api#get-subscription).',\n format: 'date-time'\n },\n azure_subscription_status: {\n type: 'string',\n enum: [ 'Subscribed',\n 'Unsubscribed',\n 'Suspended',\n 'PendingFulfillmentStart'\n ]\n },\n billing_provider_customer_id: {\n type: 'string'\n },\n stripe_collection_method: {\n type: 'string',\n enum: [ 'charge_automatically',\n 'send_invoice',\n 'auto_charge_payment_intent',\n 'manually_charge_payment_intent'\n ]\n }\n }\n }\n },\n required: [ 'data'\n ]\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nFetch the billing configuration for the given customer. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/billing_config_retrieve_response',\n $defs: {\n billing_config_retrieve_response: {\n type: 'object',\n properties: {\n data: {\n type: 'object',\n properties: {\n aws_expiration_date: {\n type: 'string',\n description: 'Contract expiration date for the customer. The expected format is RFC 3339 and can be retrieved from [AWS\\'s GetEntitlements API](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html).',\n format: 'date-time'\n },\n aws_is_subscription_product: {\n type: 'boolean',\n description: 'True if the aws_product_code is a SAAS subscription product, false otherwise.'\n },\n aws_product_code: {\n type: 'string'\n },\n aws_region: {\n type: 'string',\n enum: [ 'af-south-1',\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ca-central-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-north-1',\n 'eu-south-1',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-west-1',\n 'us-west-2'\n ]\n },\n azure_expiration_date: {\n type: 'string',\n description: 'Subscription term start/end date for the customer. The expected format is RFC 3339 and can be retrieved from [Azure\\'s Get Subscription API](https://learn.microsoft.com/en-us/partner-center/marketplace/partner-center-portal/pc-saas-fulfillment-subscription-api#get-subscription).',\n format: 'date-time'\n },\n azure_plan_id: {\n type: 'string'\n },\n azure_start_date: {\n type: 'string',\n description: 'Subscription term start/end date for the customer. The expected format is RFC 3339 and can be retrieved from [Azure\\'s Get Subscription API](https://learn.microsoft.com/en-us/partner-center/marketplace/partner-center-portal/pc-saas-fulfillment-subscription-api#get-subscription).',\n format: 'date-time'\n },\n azure_subscription_status: {\n type: 'string',\n enum: [ 'Subscribed',\n 'Unsubscribed',\n 'Suspended',\n 'PendingFulfillmentStart'\n ]\n },\n billing_provider_customer_id: {\n type: 'string'\n },\n stripe_collection_method: {\n type: 'string',\n description: 'The collection method for the customer\\'s invoices.\\nNOTE: `auto_charge_payment_intent` and `manually_charge_payment_intent` are in beta.',\n enum: [ 'charge_automatically',\n 'send_invoice',\n 'auto_charge_payment_intent',\n 'manually_charge_payment_intent'\n ]\n }\n }\n }\n },\n required: [ 'data'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -36,6 +36,7 @@ export const tool: Tool = {
36
36
  'quickbooks_online',
37
37
  'workday',
38
38
  'gcp_marketplace',
39
+ 'metronome',
39
40
  ],
40
41
  },
41
42
  jq_filter: {
@@ -17,7 +17,7 @@ export const metadata: Metadata = {
17
17
  export const tool: Tool = {
18
18
  name: 'create_customers_v1_commits',
19
19
  description:
20
- 'Creates customer-level commits that establish spending commitments for customers across their Metronome usage. Commits represent contracted spending obligations that can be either prepaid (paid upfront) or postpaid (billed later). \n\nNote: In most cases, you should add commitments directly to customer contracts using the contract/create or contract/edit APIs.\n\n### Use this endpoint to:\nUse this endpoint when you need to establish customer-level spending commitments that can be applied across multiple contracts or scoped to specific contracts. Customer-level commits are ideal for:\n- Enterprise-wide minimum spending agreements that span multiple contracts\n- Multi-contract volume commitments with shared spending pools\n- Cross-contract discount tiers based on aggregate usage\n\n#### Commit type Requirements: \n- You must specify either "prepaid" or "postpaid" as the commit type:\n- Prepaid commits: Customer pays upfront; invoice_schedule is optional (if omitted, creates a commit without an invoice)\n- Postpaid commits: Customer pays when the commitment expires (the end of the access_schedule); invoice_schedule is required and must match access_schedule totals. \n\n#### Billing configuration:\n- invoice_contract_id is required for postpaid commits and for prepaid commits with billing (only optional for free prepaid commits)\n- For postpaid commits: access_schedule and invoice_schedule must have matching amounts\n- For postpaid commits: only one schedule item is allowed in both schedules.\n\n#### Scoping flexibility:\nCustomer-level commits can be configured in a few ways:\n- Contract-specific: Use the `applicable_contract_ids` field to limit the commit to specific contracts\n- Cross-contract: Leave `applicable_contract_ids` empty to allow the commit to be used across all of the customer\'s contracts\n\n#### Product targeting:\nCommits can be scoped to specific products using applicable_product_ids, applicable_product_tags, or specifiers, or left unrestricted to apply to all products.\n\n#### Priority considerations:\nWhen multiple commits are applicable, the one with the lower priority value will be consumed first. If there is a tie, contract level commits and credits will be applied before customer level commits and credits. Plan your priority scheme carefully to ensure commits are applied in the desired order.\n\n### Usage guidelines:\n⚠️ Preferred Alternative: In most cases, you should add commits directly to contracts using the create contract or edit contract APIs instead of creating customer-level commits. Contract-level commits provide better organization and are the recommended approach for standard use cases.\n',
20
+ 'Creates customer-level commits that establish spending commitments for customers across their Metronome usage. Commits represent contracted spending obligations that can be either prepaid (paid upfront) or postpaid (billed later). \n\nNote: In most cases, you should add commitments directly to customer contracts using the contract/create or contract/edit APIs.\n\n### Use this endpoint to:\nUse this endpoint when you need to establish customer-level spending commitments that can be applied across multiple contracts or scoped to specific contracts. Customer-level commits are ideal for:\n- Enterprise-wide minimum spending agreements that span multiple contracts\n- Multi-contract volume commitments with shared spending pools\n- Cross-contract discount tiers based on aggregate usage\n\n#### Commit type Requirements: \n- You must specify either "prepaid" or "postpaid" as the commit type:\n- Prepaid commits: Customer pays upfront; invoice_schedule is optional (if omitted, creates a commit without an invoice)\n- Postpaid commits: Customer pays when the commitment expires (the end of the access_schedule); invoice_schedule is required and must match access_schedule totals. \n\n#### Billing configuration:\n- invoice_contract_id is required for postpaid commits and for prepaid commits with billing (only optional for free prepaid commits) unless do_not_invoice is set to true\n- For postpaid commits: access_schedule and invoice_schedule must have matching amounts\n- For postpaid commits: only one schedule item is allowed in both schedules.\n\n#### Scoping flexibility:\nCustomer-level commits can be configured in a few ways:\n- Contract-specific: Use the `applicable_contract_ids` field to limit the commit to specific contracts\n- Cross-contract: Leave `applicable_contract_ids` empty to allow the commit to be used across all of the customer\'s contracts\n\n#### Product targeting:\nCommits can be scoped to specific products using applicable_product_ids, applicable_product_tags, or specifiers, or left unrestricted to apply to all products.\n\n#### Priority considerations:\nWhen multiple commits are applicable, the one with the lower priority value will be consumed first. If there is a tie, contract level commits and credits will be applied before customer level commits and credits. Plan your priority scheme carefully to ensure commits are applied in the desired order.\n\n### Usage guidelines:\n⚠️ Preferred Alternative: In most cases, you should add commits directly to contracts using the create contract or edit contract APIs instead of creating customer-level commits. Contract-level commits provide better organization and are the recommended approach for standard use cases.\n',
21
21
  inputSchema: {
22
22
  type: 'object',
23
23
  properties: {
@@ -108,7 +108,7 @@ export const tool: Tool = {
108
108
  invoice_contract_id: {
109
109
  type: 'string',
110
110
  description:
111
- 'The contract that this commit will be billed on. This is required for "POSTPAID" commits and for "PREPAID" commits unless there is no invoice schedule above (i.e., the commit is \'free\').',
111
+ 'The contract that this commit will be billed on. This is required for "POSTPAID" commits and for "PREPAID" commits unless there is no invoice schedule above (i.e., the commit is \'free\'), or if do_not_invoice is set to true.',
112
112
  },
113
113
  invoice_schedule: {
114
114
  type: 'object',
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'update_end_date_customers_v1_commits',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nShortens the end date of a prepaid commit to terminate it earlier than originally scheduled. Use this endpoint when you need to cancel or reduce the duration of an existing prepaid commit. Only works with prepaid commit types and can only move the end date forward (earlier), not extend it. \n\n### Usage guidelines:\nTo extend commit end dates or make other comprehensive edits, use the 'edit commit' endpoint instead.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nShortens the end date of a prepaid commit to terminate it earlier than originally scheduled. Use this endpoint when you need to cancel or reduce the duration of an existing prepaid commit. Only works with prepaid commit types and can only move the end date forward (earlier), not extend it. \n\n### Usage guidelines:\nTo extend commit end dates or make other comprehensive edits, use the 'edit commit' endpoint instead.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/commit_update_end_date_response',\n $defs: {\n commit_update_end_date_response: {\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ]\n },\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'create_v1_customers',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nCreate a new customer in Metronome and optionally the billing configuration (recommended) which dictates where invoices for the customer will be sent or where payment will be collected. \n\n### Use this endpoint to:\nExecute your customer provisioning workflows for either PLG motions, where customers originate in your platform, or SLG motions, where customers originate in your sales system.\n\n### Key response fields: \nThis end-point returns the `customer_id` created by the request. This id can be used to fetch relevant billing configurations and create contracts.\n\n### Example workflow:\n- Generally, Metronome recommends first creating the customer in the downstream payment / ERP system when payment method is collected and then creating the customer in Metronome using the response (i.e. `customer_id`) from the downstream system. If you do not create a billing configuration on customer creation, you can add it later. \n- Once a customer is created, you can then create a contract for the customer. In the contract creation process, you will need to add the customer billing configuration to the contract to ensure Metronome invoices the customer correctly. This is because a customer can have multiple configurations.\n- As part of the customer creation process, set the ingest alias for the customer which will ensure usage is accurately mapped to the customer. Ingest aliases can be added or changed after the creation process as well.\n\n### Usage guidelines:\nFor details on different billing configurations for different systems, review the `/setCustomerBillingConfiguration` end-point.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/customer'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n customer: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the customer'\n },\n external_id: {\n type: 'string',\n description: '(deprecated, use ingest_aliases instead) the first ID (Metronome or ingest alias) that can be used in usage events'\n },\n ingest_aliases: {\n type: 'array',\n description: 'aliases for this customer that can be used instead of the Metronome customer ID in usage events',\n items: {\n type: 'string'\n }\n },\n name: {\n type: 'string'\n },\n custom_fields: {\n type: 'object',\n description: 'Custom fields to be added eg. { \"key1\": \"value1\", \"key2\": \"value2\" }',\n additionalProperties: true\n }\n },\n required: [ 'id',\n 'external_id',\n 'ingest_aliases',\n 'name'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nCreate a new customer in Metronome and optionally the billing configuration (recommended) which dictates where invoices for the customer will be sent or where payment will be collected. \n\n### Use this endpoint to:\nExecute your customer provisioning workflows for either PLG motions, where customers originate in your platform, or SLG motions, where customers originate in your sales system.\n\n### Key response fields: \nThis end-point returns the `customer_id` created by the request. This id can be used to fetch relevant billing configurations and create contracts.\n\n### Example workflow:\n- Generally, Metronome recommends first creating the customer in the downstream payment / ERP system when payment method is collected and then creating the customer in Metronome using the response (i.e. `customer_id`) from the downstream system. If you do not create a billing configuration on customer creation, you can add it later. \n- Once a customer is created, you can then create a contract for the customer. In the contract creation process, you will need to add the customer billing configuration to the contract to ensure Metronome invoices the customer correctly. This is because a customer can have multiple configurations.\n- As part of the customer creation process, set the ingest alias for the customer which will ensure usage is accurately mapped to the customer. Ingest aliases can be added or changed after the creation process as well.\n\n### Usage guidelines:\nFor details on different billing configurations for different systems, review the `/setCustomerBillingConfiguration` end-point.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/customer_create_response',\n $defs: {\n customer_create_response: {\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/customer'\n }\n },\n required: [ 'data'\n ]\n },\n customer: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the customer'\n },\n external_id: {\n type: 'string',\n description: '(deprecated, use ingest_aliases instead) the first ID (Metronome or ingest alias) that can be used in usage events'\n },\n ingest_aliases: {\n type: 'array',\n description: 'aliases for this customer that can be used instead of the Metronome customer ID in usage events',\n items: {\n type: 'string'\n }\n },\n name: {\n type: 'string'\n },\n custom_fields: {\n type: 'object',\n description: 'Custom fields to be added eg. { \"key1\": \"value1\", \"key2\": \"value2\" }',\n additionalProperties: true\n }\n },\n required: [ 'id',\n 'external_id',\n 'ingest_aliases',\n 'name'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -43,6 +43,7 @@ export const tool: Tool = {
43
43
  'quickbooks_online',
44
44
  'workday',
45
45
  'gcp_marketplace',
46
+ 'metronome',
46
47
  ],
47
48
  },
48
49
  aws_is_subscription_product: {
@@ -84,6 +85,8 @@ export const tool: Tool = {
84
85
  },
85
86
  stripe_collection_method: {
86
87
  type: 'string',
88
+ description:
89
+ "The collection method for the customer's invoices.\nNOTE: `auto_charge_payment_intent` and `manually_charge_payment_intent` are in beta.",
87
90
  enum: [
88
91
  'charge_automatically',
89
92
  'send_invoice',
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'create_customers_v1_credits',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nCreates customer-level credits that provide spending allowances or free credit balances for customers across their Metronome usage. Note: In most cases, you should add credits directly to customer contracts using the contract/create or contract/edit APIs.\n\n### Use this endpoint to:\nUse this endpoint when you need to provision credits directly at the customer level that can be applied across multiple contracts or scoped to specific contracts. Customer-level credits are ideal for:\n- Customer onboarding incentives that apply globally\n- Flexible spending allowances that aren't tied to a single contract\n- Migration scenarios where you need to preserve existing customer balances\n\n#### Scoping flexibility: \nCustomer-level credits can be configured in two ways:\n- Contract-specific: Use the applicable_contract_ids field to limit the credit to specific contracts\n- Cross-contract: Leave applicable_contract_ids empty to allow the credit to be used across all of the customer's contracts\n\n#### Product Targeting: \nCredits can be scoped to specific products using `applicable_product_ids` or `applicable_product_tags`, or left unrestricted to apply to all products.\n\n#### Priority considerations: \nWhen multiple credits are applicable, the one with the lower priority value will be consumed first. If there is a tie, contract level commits and credits will be applied before customer level commits and credits. Plan your priority scheme carefully to ensure credits are applied in the desired order.\n\n#### Access Schedule Required: \nYou must provide an `access_schedule` that defines when and how much credit becomes available to the customer over time. This usually is aligned to the contract schedule or starts immediately and is set to expire in the future.\n\n### Usage Guidelines:\n⚠️ Preferred Alternative: In most cases, you should add credits directly to contracts using the contract/create or contract/edit APIs instead of creating customer-level credits. Contract-level credits provide better organization, and are easier for finance teams to recognize revenue, and are the recommended approach for most use cases.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nCreates customer-level credits that provide spending allowances or free credit balances for customers across their Metronome usage. Note: In most cases, you should add credits directly to customer contracts using the contract/create or contract/edit APIs.\n\n### Use this endpoint to:\nUse this endpoint when you need to provision credits directly at the customer level that can be applied across multiple contracts or scoped to specific contracts. Customer-level credits are ideal for:\n- Customer onboarding incentives that apply globally\n- Flexible spending allowances that aren't tied to a single contract\n- Migration scenarios where you need to preserve existing customer balances\n\n#### Scoping flexibility: \nCustomer-level credits can be configured in two ways:\n- Contract-specific: Use the applicable_contract_ids field to limit the credit to specific contracts\n- Cross-contract: Leave applicable_contract_ids empty to allow the credit to be used across all of the customer's contracts\n\n#### Product Targeting: \nCredits can be scoped to specific products using `applicable_product_ids` or `applicable_product_tags`, or left unrestricted to apply to all products.\n\n#### Priority considerations: \nWhen multiple credits are applicable, the one with the lower priority value will be consumed first. If there is a tie, contract level commits and credits will be applied before customer level commits and credits. Plan your priority scheme carefully to ensure credits are applied in the desired order.\n\n#### Access Schedule Required: \nYou must provide an `access_schedule` that defines when and how much credit becomes available to the customer over time. This usually is aligned to the contract schedule or starts immediately and is set to expire in the future.\n\n### Usage Guidelines:\n⚠️ Preferred Alternative: In most cases, you should add credits directly to contracts using the contract/create or contract/edit APIs instead of creating customer-level credits. Contract-level credits provide better organization, and are easier for finance teams to recognize revenue, and are the recommended approach for most use cases.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/credit_create_response',\n $defs: {\n credit_create_response: {\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ]\n },\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'update_end_date_customers_v1_credits',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nShortens the end date of an existing customer credit to terminate it earlier than originally scheduled. Only allows moving end dates forward (earlier), not extending them. \n\nNote: To extend credit end dates or make comprehensive edits, use the 'edit credit' endpoint instead.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nShortens the end date of an existing customer credit to terminate it earlier than originally scheduled. Only allows moving end dates forward (earlier), not extending them. \n\nNote: To extend credit end dates or make comprehensive edits, use the 'edit credit' endpoint instead.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/credit_update_end_date_response',\n $defs: {\n credit_update_end_date_response: {\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ]\n },\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'add_charge_customers_v1_invoices',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nAdd a one time charge to the specified invoice\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {}\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nAdd a one time charge to the specified invoice. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/invoice_add_charge_response',\n $defs: {\n invoice_add_charge_response: {\n type: 'object',\n properties: {}\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -0,0 +1,43 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { Metadata, asBinaryContentResult } from '@metronome/mcp/tools/types';
4
+
5
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
6
+ import Metronome from '@metronome/sdk';
7
+
8
+ export const metadata: Metadata = {
9
+ resource: 'v1.customers.invoices',
10
+ operation: 'read',
11
+ tags: [],
12
+ httpMethod: 'get',
13
+ httpPath: '/v1/customers/{customer_id}/invoices/{invoice_id}/pdf',
14
+ operationId: 'getInvoicePdf-v1',
15
+ };
16
+
17
+ export const tool: Tool = {
18
+ name: 'retrieve_pdf_customers_v1_invoices',
19
+ description:
20
+ 'Retrieve a PDF version of a specific invoice by its unique identifier. This endpoint generates a professionally formatted invoice document suitable for sharing with customers, accounting teams, or for record-keeping purposes.\n\n### Use this endpoint to:\n- Provide customers with downloadable or emailable copies of their invoices\n- Support accounting and finance teams with official billing documents\n- Maintain accurate records of billing transactions for audits and compliance\n\n### Key response details:\n- The response is a binary PDF file representing the full invoice\n- The PDF includes all standard invoice information such as line items, totals, billing period, and customer details\n- The document is formatted for clarity and professionalism, suitable for official use\n\n### Usage guidelines:\n- Ensure the `invoice_id` corresponds to an existing invoice for the specified `customer_id`\n- The PDF is generated on-demand; frequent requests for the same invoice may impact performance\n- Use appropriate headers to handle the binary response in your application (e.g., setting `Content-Type: application/pdf`)\n',
21
+ inputSchema: {
22
+ type: 'object',
23
+ properties: {
24
+ customer_id: {
25
+ type: 'string',
26
+ },
27
+ invoice_id: {
28
+ type: 'string',
29
+ },
30
+ },
31
+ required: ['customer_id', 'invoice_id'],
32
+ },
33
+ annotations: {
34
+ readOnlyHint: true,
35
+ },
36
+ };
37
+
38
+ export const handler = async (client: Metronome, args: Record<string, unknown> | undefined) => {
39
+ const body = args as any;
40
+ return asBinaryContentResult(await client.v1.customers.invoices.retrievePdf(body));
41
+ };
42
+
43
+ export default { metadata, tool, handler };
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'list_billable_metrics_v1_customers',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nGet all billable metrics available for a specific customer. Supports pagination and filtering by current plan status or archived metrics. Use this endpoint to see which metrics are being tracked for billing calculations for a given customer.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n },\n name: {\n type: 'string'\n },\n aggregate: {\n type: 'string',\n description: '(DEPRECATED) use aggregation_type instead'\n },\n aggregate_keys: {\n type: 'array',\n description: '(DEPRECATED) use aggregation_key instead',\n items: {\n type: 'string'\n }\n },\n aggregation_key: {\n type: 'string',\n description: 'A key that specifies which property of the event is used to aggregate data. This key must be one of the property filter names and is not applicable when the aggregation type is \\'count\\'.'\n },\n aggregation_type: {\n type: 'string',\n description: 'Specifies the type of aggregation performed on matching events.',\n enum: [ 'COUNT',\n 'LATEST',\n 'MAX',\n 'SUM',\n 'UNIQUE'\n ]\n },\n archived_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the billable metric was archived. If not provided, the billable metric is not archived.',\n format: 'date-time'\n },\n custom_fields: {\n type: 'object',\n description: 'Custom fields to be added eg. { \"key1\": \"value1\", \"key2\": \"value2\" }',\n additionalProperties: true\n },\n event_type_filter: {\n $ref: '#/$defs/event_type_filter'\n },\n filter: {\n type: 'object',\n description: '(DEPRECATED) use property_filters & event_type_filter instead',\n additionalProperties: true\n },\n group_by: {\n type: 'array',\n description: '(DEPRECATED) use group_keys instead',\n items: {\n type: 'string',\n description: 'A list of keys that can be used to additionally segment the values of the billable metric when making usage queries'\n }\n },\n group_keys: {\n type: 'array',\n description: 'Property names that are used to group usage costs on an invoice. Each entry represents a set of properties used to slice events into distinct buckets.',\n items: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n },\n property_filters: {\n type: 'array',\n description: 'A list of filters to match events to this billable metric. Each filter defines a rule on an event property. All rules must pass for the event to match the billable metric.',\n items: {\n $ref: '#/$defs/property_filter'\n }\n },\n sql: {\n type: 'string',\n description: 'The SQL query associated with the billable metric'\n }\n },\n required: [ 'id',\n 'name'\n ]\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n event_type_filter: {\n type: 'object',\n description: 'An optional filtering rule to match the \\'event_type\\' property of an event.',\n properties: {\n in_values: {\n type: 'array',\n description: 'A list of event types that are explicitly included in the billable metric. If specified, only events of these types will match the billable metric. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n },\n not_in_values: {\n type: 'array',\n description: 'A list of event types that are explicitly excluded from the billable metric. If specified, events of these types will not match the billable metric. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n }\n }\n },\n property_filter: {\n type: 'object',\n properties: {\n name: {\n type: 'string',\n description: 'The name of the event property.'\n },\n exists: {\n type: 'boolean',\n description: 'Determines whether the property must exist in the event. If true, only events with this property will pass the filter. If false, only events without this property will pass the filter. If null or omitted, the existence of the property is optional.'\n },\n in_values: {\n type: 'array',\n description: 'Specifies the allowed values for the property to match an event. An event will pass the filter only if its property value is included in this list. If undefined, all property values will pass the filter. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n },\n not_in_values: {\n type: 'array',\n description: 'Specifies the values that prevent an event from matching the filter. An event will not pass the filter if its property value is included in this list. If null or empty, all property values will pass the filter. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n }\n },\n required: [ 'name'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nGet all billable metrics available for a specific customer. Supports pagination and filtering by current plan status or archived metrics. Use this endpoint to see which metrics are being tracked for billing calculations for a given customer.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/customer_list_billable_metrics_response'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n customer_list_billable_metrics_response: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n },\n name: {\n type: 'string'\n },\n aggregate: {\n type: 'string',\n description: '(DEPRECATED) use aggregation_type instead'\n },\n aggregate_keys: {\n type: 'array',\n description: '(DEPRECATED) use aggregation_key instead',\n items: {\n type: 'string'\n }\n },\n aggregation_key: {\n type: 'string',\n description: 'A key that specifies which property of the event is used to aggregate data. This key must be one of the property filter names and is not applicable when the aggregation type is \\'count\\'.'\n },\n aggregation_type: {\n type: 'string',\n description: 'Specifies the type of aggregation performed on matching events.',\n enum: [ 'COUNT',\n 'LATEST',\n 'MAX',\n 'SUM',\n 'UNIQUE'\n ]\n },\n archived_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the billable metric was archived. If not provided, the billable metric is not archived.',\n format: 'date-time'\n },\n custom_fields: {\n type: 'object',\n description: 'Custom fields to be added eg. { \"key1\": \"value1\", \"key2\": \"value2\" }',\n additionalProperties: true\n },\n event_type_filter: {\n $ref: '#/$defs/event_type_filter'\n },\n filter: {\n type: 'object',\n description: '(DEPRECATED) use property_filters & event_type_filter instead',\n additionalProperties: true\n },\n group_by: {\n type: 'array',\n description: '(DEPRECATED) use group_keys instead',\n items: {\n type: 'string',\n description: 'A list of keys that can be used to additionally segment the values of the billable metric when making usage queries'\n }\n },\n group_keys: {\n type: 'array',\n description: 'Property names that are used to group usage costs on an invoice. Each entry represents a set of properties used to slice events into distinct buckets.',\n items: {\n type: 'array',\n items: {\n type: 'string'\n }\n }\n },\n property_filters: {\n type: 'array',\n description: 'A list of filters to match events to this billable metric. Each filter defines a rule on an event property. All rules must pass for the event to match the billable metric.',\n items: {\n $ref: '#/$defs/property_filter'\n }\n },\n sql: {\n type: 'string',\n description: 'The SQL query associated with the billable metric'\n }\n },\n required: [ 'id',\n 'name'\n ]\n },\n event_type_filter: {\n type: 'object',\n description: 'An optional filtering rule to match the \\'event_type\\' property of an event.',\n properties: {\n in_values: {\n type: 'array',\n description: 'A list of event types that are explicitly included in the billable metric. If specified, only events of these types will match the billable metric. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n },\n not_in_values: {\n type: 'array',\n description: 'A list of event types that are explicitly excluded from the billable metric. If specified, events of these types will not match the billable metric. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n }\n }\n },\n property_filter: {\n type: 'object',\n properties: {\n name: {\n type: 'string',\n description: 'The name of the event property.'\n },\n exists: {\n type: 'boolean',\n description: 'Determines whether the property must exist in the event. If true, only events with this property will pass the filter. If false, only events without this property will pass the filter. If null or omitted, the existence of the property is optional.'\n },\n in_values: {\n type: 'array',\n description: 'Specifies the allowed values for the property to match an event. An event will pass the filter only if its property value is included in this list. If undefined, all property values will pass the filter. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n },\n not_in_values: {\n type: 'array',\n description: 'Specifies the values that prevent an event from matching the filter. An event will not pass the filter if its property value is included in this list. If null or empty, all property values will pass the filter. Must be non-empty if present.',\n items: {\n type: 'string'\n }\n }\n },\n required: [ 'name'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'list_costs_v1_customers',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nFetch daily pending costs for the specified customer, broken down by credit type and line items. Note: this is not supported for customers whose plan includes a UNIQUE-type billable metric.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n credit_types: {\n type: 'object',\n additionalProperties: true\n },\n end_timestamp: {\n type: 'string',\n format: 'date-time'\n },\n start_timestamp: {\n type: 'string',\n format: 'date-time'\n }\n },\n required: [ 'credit_types',\n 'end_timestamp',\n 'start_timestamp'\n ]\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ]\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nFetch daily pending costs for the specified customer, broken down by credit type and line items. Note: this is not supported for customers whose plan includes a UNIQUE-type billable metric. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/customer_list_costs_response'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n customer_list_costs_response: {\n type: 'object',\n properties: {\n credit_types: {\n type: 'object',\n additionalProperties: true\n },\n end_timestamp: {\n type: 'string',\n format: 'date-time'\n },\n start_timestamp: {\n type: 'string',\n format: 'date-time'\n }\n },\n required: [ 'credit_types',\n 'end_timestamp',\n 'start_timestamp'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'list_v1_customers',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nGets a paginated list of all customers in your Metronome account. Use this endpoint to browse your customer base, implement customer search functionality, or sync customer data with external systems. Returns customer details including IDs, names, and configuration settings. Supports filtering and pagination parameters for efficient data retrieval.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/customer_detail'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n customer_detail: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the customer'\n },\n created_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the customer was created.',\n format: 'date-time'\n },\n custom_fields: {\n type: 'object',\n description: 'Custom fields to be added eg. { \"key1\": \"value1\", \"key2\": \"value2\" }',\n additionalProperties: true\n },\n customer_config: {\n type: 'object',\n properties: {\n salesforce_account_id: {\n type: 'string',\n description: 'The Salesforce account ID for the customer'\n }\n },\n required: [ 'salesforce_account_id'\n ]\n },\n external_id: {\n type: 'string',\n description: '(deprecated, use ingest_aliases instead) the first ID (Metronome or ingest alias) that can be used in usage events'\n },\n ingest_aliases: {\n type: 'array',\n description: 'aliases for this customer that can be used instead of the Metronome customer ID in usage events',\n items: {\n type: 'string'\n }\n },\n name: {\n type: 'string'\n },\n archived_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the customer was archived. Null if the customer is active.',\n format: 'date-time'\n },\n current_billable_status: {\n type: 'object',\n description: 'This field\\'s availability is dependent on your client\\'s configuration.',\n properties: {\n value: {\n type: 'string',\n enum: [ 'billable',\n 'unbillable'\n ]\n },\n effective_at: {\n type: 'string',\n format: 'date-time'\n }\n },\n required: [ 'value'\n ]\n }\n },\n required: [ 'id',\n 'created_at',\n 'custom_fields',\n 'customer_config',\n 'external_id',\n 'ingest_aliases',\n 'name'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nGets a paginated list of all customers in your Metronome account. Use this endpoint to browse your customer base, implement customer search functionality, or sync customer data with external systems. Returns customer details including IDs, names, and configuration settings. Supports filtering and pagination parameters for efficient data retrieval.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n $ref: '#/$defs/customer_detail'\n }\n },\n next_page: {\n type: 'string'\n }\n },\n required: [ 'data',\n 'next_page'\n ],\n $defs: {\n customer_detail: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'the Metronome ID of the customer'\n },\n created_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the customer was created.',\n format: 'date-time'\n },\n custom_fields: {\n type: 'object',\n description: 'Custom fields to be added eg. { \"key1\": \"value1\", \"key2\": \"value2\" }',\n additionalProperties: true\n },\n customer_config: {\n type: 'object',\n properties: {\n salesforce_account_id: {\n type: 'string',\n description: 'The Salesforce account ID for the customer'\n }\n },\n required: [ 'salesforce_account_id'\n ]\n },\n external_id: {\n type: 'string',\n description: '(deprecated, use ingest_aliases instead) the first ID (Metronome or ingest alias) that can be used in usage events'\n },\n ingest_aliases: {\n type: 'array',\n description: 'aliases for this customer that can be used instead of the Metronome customer ID in usage events',\n items: {\n type: 'string'\n }\n },\n name: {\n type: 'string'\n },\n updated_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the customer was last updated.',\n format: 'date-time'\n },\n archived_at: {\n type: 'string',\n description: 'RFC 3339 timestamp indicating when the customer was archived. Null if the customer is active.',\n format: 'date-time'\n },\n current_billable_status: {\n type: 'object',\n description: 'This field\\'s availability is dependent on your client\\'s configuration.',\n properties: {\n value: {\n type: 'string',\n enum: [ 'billable',\n 'unbillable'\n ]\n },\n effective_at: {\n type: 'string',\n format: 'date-time'\n }\n },\n required: [ 'value'\n ]\n }\n },\n required: [ 'id',\n 'created_at',\n 'custom_fields',\n 'customer_config',\n 'external_id',\n 'ingest_aliases',\n 'name',\n 'updated_at'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'retrieve_customers_v1_named_schedules',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nGet a named schedule for the given customer. This endpoint's availability is dependent on your client's configuration.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n starting_at: {\n type: 'string',\n format: 'date-time'\n },\n value: {\n type: 'object',\n additionalProperties: true\n },\n ending_before: {\n type: 'string',\n format: 'date-time'\n }\n },\n required: [ 'starting_at',\n 'value'\n ]\n }\n }\n },\n required: [ 'data'\n ]\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nGet a named schedule for the given customer. This endpoint's availability is dependent on your client's configuration.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/named_schedule_retrieve_response',\n $defs: {\n named_schedule_retrieve_response: {\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n starting_at: {\n type: 'string',\n format: 'date-time'\n },\n value: {\n type: 'object',\n additionalProperties: true\n },\n ending_before: {\n type: 'string',\n format: 'date-time'\n }\n },\n required: [ 'starting_at',\n 'value'\n ]\n }\n }\n },\n required: [ 'data'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'add_customers_v1_plans',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nAssociate an existing customer with a plan for a specified date range. See the [price adjustments documentation](https://plans-docs.metronome.com/pricing/managing-plans/#price-adjustments) for details on the price adjustments.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ],\n $defs: {\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nAssociate an existing customer with a plan for a specified date range. See the [price adjustments documentation](https://plans-docs.metronome.com/pricing/managing-plans/#price-adjustments) for details on the price adjustments. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/plan_add_response',\n $defs: {\n plan_add_response: {\n type: 'object',\n properties: {\n data: {\n $ref: '#/$defs/id'\n }\n },\n required: [ 'data'\n ]\n },\n id: {\n type: 'object',\n properties: {\n id: {\n type: 'string'\n }\n },\n required: [ 'id'\n ]\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {
@@ -18,7 +18,7 @@ export const metadata: Metadata = {
18
18
  export const tool: Tool = {
19
19
  name: 'end_customers_v1_plans',
20
20
  description:
21
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nChange the end date of a customer's plan.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {}\n}\n```",
21
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nChange the end date of a customer's plan. This is a Plans (deprecated) endpoint. New clients should implement using Contracts.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/plan_end_response',\n $defs: {\n plan_end_response: {\n type: 'object',\n properties: {}\n }\n }\n}\n```",
22
22
  inputSchema: {
23
23
  type: 'object',
24
24
  properties: {