@moovio/sdk 25.8.7 → 25.9.1

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 (267) hide show
  1. package/README.md +112 -80
  2. package/bin/mcp-server.js +604 -324
  3. package/bin/mcp-server.js.map +59 -59
  4. package/funcs/accountsCreate.d.ts +8 -10
  5. package/funcs/accountsCreate.d.ts.map +1 -1
  6. package/funcs/accountsCreate.js +8 -10
  7. package/funcs/accountsCreate.js.map +1 -1
  8. package/funcs/capabilitiesDisable.d.ts +1 -1
  9. package/funcs/capabilitiesDisable.js +1 -1
  10. package/funcs/capabilitiesGet.d.ts +1 -1
  11. package/funcs/capabilitiesGet.js +1 -1
  12. package/funcs/capabilitiesList.d.ts +1 -1
  13. package/funcs/capabilitiesList.js +1 -1
  14. package/funcs/capabilitiesRequest.d.ts +1 -1
  15. package/funcs/capabilitiesRequest.js +1 -1
  16. package/funcs/cardIssuingGet.js +1 -1
  17. package/funcs/cardIssuingGet.js.map +1 -1
  18. package/funcs/cardIssuingGetFull.js +1 -1
  19. package/funcs/cardIssuingGetFull.js.map +1 -1
  20. package/funcs/cardIssuingList.js +1 -1
  21. package/funcs/cardIssuingList.js.map +1 -1
  22. package/funcs/cardIssuingRequest.js +1 -1
  23. package/funcs/cardIssuingRequest.js.map +1 -1
  24. package/funcs/cardIssuingUpdate.js +1 -1
  25. package/funcs/cardIssuingUpdate.js.map +1 -1
  26. package/funcs/transfersListCancellations.d.ts +17 -0
  27. package/funcs/transfersListCancellations.d.ts.map +1 -0
  28. package/funcs/transfersListCancellations.js +129 -0
  29. package/funcs/transfersListCancellations.js.map +1 -0
  30. package/hooks/access-token-hook.d.ts +25 -0
  31. package/hooks/access-token-hook.d.ts.map +1 -0
  32. package/hooks/access-token-hook.js +60 -0
  33. package/hooks/access-token-hook.js.map +1 -0
  34. package/hooks/registration.d.ts.map +1 -1
  35. package/hooks/registration.js +4 -0
  36. package/hooks/registration.js.map +1 -1
  37. package/hooks/types.d.ts +1 -0
  38. package/hooks/types.d.ts.map +1 -1
  39. package/jsr.json +1 -1
  40. package/lib/config.d.ts +7 -3
  41. package/lib/config.d.ts.map +1 -1
  42. package/lib/config.js +3 -3
  43. package/lib/config.js.map +1 -1
  44. package/lib/encodings.js +12 -12
  45. package/lib/encodings.js.map +1 -1
  46. package/lib/matchers.js +3 -3
  47. package/lib/matchers.js.map +1 -1
  48. package/lib/primitives.d.ts +1 -0
  49. package/lib/primitives.d.ts.map +1 -1
  50. package/lib/primitives.js +18 -0
  51. package/lib/primitives.js.map +1 -1
  52. package/lib/retries.js +7 -0
  53. package/lib/retries.js.map +1 -1
  54. package/lib/sdks.d.ts.map +1 -1
  55. package/lib/sdks.js +50 -16
  56. package/lib/sdks.js.map +1 -1
  57. package/mcp-server/cli/start/command.d.ts.map +1 -1
  58. package/mcp-server/cli/start/command.js +8 -0
  59. package/mcp-server/cli/start/command.js.map +1 -1
  60. package/mcp-server/cli/start/impl.d.ts +1 -0
  61. package/mcp-server/cli/start/impl.d.ts.map +1 -1
  62. package/mcp-server/cli/start/impl.js +2 -0
  63. package/mcp-server/cli/start/impl.js.map +1 -1
  64. package/mcp-server/mcp-server.js +1 -1
  65. package/mcp-server/server.d.ts +1 -0
  66. package/mcp-server/server.d.ts.map +1 -1
  67. package/mcp-server/server.js +4 -1
  68. package/mcp-server/server.js.map +1 -1
  69. package/mcp-server/tools/accountsCreate.d.ts.map +1 -1
  70. package/mcp-server/tools/accountsCreate.js +8 -10
  71. package/mcp-server/tools/accountsCreate.js.map +1 -1
  72. package/mcp-server/tools/capabilitiesDisable.js +1 -1
  73. package/mcp-server/tools/capabilitiesGet.js +1 -1
  74. package/mcp-server/tools/capabilitiesList.js +1 -1
  75. package/mcp-server/tools/capabilitiesRequest.js +1 -1
  76. package/mcp-server/tools/transfersListCancellations.d.ts +8 -0
  77. package/mcp-server/tools/transfersListCancellations.d.ts.map +1 -0
  78. package/{models/components/authorizeduser.js → mcp-server/tools/transfersListCancellations.js} +27 -22
  79. package/mcp-server/tools/transfersListCancellations.js.map +1 -0
  80. package/models/components/addcapabilities.d.ts +9 -0
  81. package/models/components/addcapabilities.d.ts.map +1 -1
  82. package/models/components/addcapabilities.js.map +1 -1
  83. package/models/components/capability.d.ts +7 -1
  84. package/models/components/capability.d.ts.map +1 -1
  85. package/models/components/capability.js.map +1 -1
  86. package/models/components/capabilityid.d.ts +14 -2
  87. package/models/components/capabilityid.d.ts.map +1 -1
  88. package/models/components/capabilityid.js +7 -1
  89. package/models/components/capabilityid.js.map +1 -1
  90. package/models/components/createaccount.d.ts +9 -0
  91. package/models/components/createaccount.d.ts.map +1 -1
  92. package/models/components/createaccount.js.map +1 -1
  93. package/models/components/createpaymentlink.d.ts +3 -3
  94. package/models/components/fullissuedcard.d.ts +25 -9
  95. package/models/components/fullissuedcard.d.ts.map +1 -1
  96. package/models/components/fullissuedcard.js +11 -5
  97. package/models/components/fullissuedcard.js.map +1 -1
  98. package/models/components/index.d.ts +1 -4
  99. package/models/components/index.d.ts.map +1 -1
  100. package/models/components/index.js +1 -4
  101. package/models/components/index.js.map +1 -1
  102. package/models/components/issuedcard.d.ts +25 -9
  103. package/models/components/issuedcard.d.ts.map +1 -1
  104. package/models/components/issuedcard.js +11 -5
  105. package/models/components/issuedcard.js.map +1 -1
  106. package/models/components/onboardinginvite.d.ts +1 -1
  107. package/models/components/onboardinginviterequest.d.ts +1 -1
  108. package/models/components/paymentlink.d.ts +2 -2
  109. package/models/components/requestcard.d.ts +14 -17
  110. package/models/components/requestcard.d.ts.map +1 -1
  111. package/models/components/requestcard.js +9 -10
  112. package/models/components/requestcard.js.map +1 -1
  113. package/models/components/updateissuedcard.d.ts +33 -8
  114. package/models/components/updateissuedcard.d.ts.map +1 -1
  115. package/models/components/updateissuedcard.js +35 -6
  116. package/models/components/updateissuedcard.js.map +1 -1
  117. package/models/components/webhookdata.d.ts +3 -2
  118. package/models/components/webhookdata.d.ts.map +1 -1
  119. package/models/components/webhookdata.js +7 -4
  120. package/models/components/webhookdata.js.map +1 -1
  121. package/models/components/webhookdataauthorizationexpiring.d.ts +23 -0
  122. package/models/components/webhookdataauthorizationexpiring.d.ts.map +1 -0
  123. package/models/components/{createauthorizedusererror.js → webhookdataauthorizationexpiring.js} +18 -17
  124. package/models/components/webhookdataauthorizationexpiring.js.map +1 -0
  125. package/models/components/webhookdatacapabilityrequested.d.ts +7 -1
  126. package/models/components/webhookdatacapabilityrequested.d.ts.map +1 -1
  127. package/models/components/webhookdatacapabilityrequested.js.map +1 -1
  128. package/models/components/webhookdatacapabilityupdated.d.ts +7 -1
  129. package/models/components/webhookdatacapabilityupdated.d.ts.map +1 -1
  130. package/models/components/webhookdatacapabilityupdated.js.map +1 -1
  131. package/models/components/webhookdatasweepcreated.d.ts +5 -0
  132. package/models/components/webhookdatasweepcreated.d.ts.map +1 -1
  133. package/models/components/webhookdatasweepcreated.js +2 -0
  134. package/models/components/webhookdatasweepcreated.js.map +1 -1
  135. package/models/components/webhookdatasweepupdated.d.ts +5 -0
  136. package/models/components/webhookdatasweepupdated.d.ts.map +1 -1
  137. package/models/components/webhookdatasweepupdated.js +2 -0
  138. package/models/components/webhookdatasweepupdated.js.map +1 -1
  139. package/models/components/webhookeventtype.d.ts +1 -0
  140. package/models/components/webhookeventtype.d.ts.map +1 -1
  141. package/models/components/webhookeventtype.js +1 -0
  142. package/models/components/webhookeventtype.js.map +1 -1
  143. package/models/errors/requestcarderror.d.ts +12 -12
  144. package/models/errors/requestcarderror.d.ts.map +1 -1
  145. package/models/errors/requestcarderror.js +17 -17
  146. package/models/errors/requestcarderror.js.map +1 -1
  147. package/models/errors/updateissuedcarderror.d.ts +9 -6
  148. package/models/errors/updateissuedcarderror.d.ts.map +1 -1
  149. package/models/errors/updateissuedcarderror.js +12 -9
  150. package/models/errors/updateissuedcarderror.js.map +1 -1
  151. package/models/operations/disablecapability.d.ts +7 -1
  152. package/models/operations/disablecapability.d.ts.map +1 -1
  153. package/models/operations/disablecapability.js.map +1 -1
  154. package/models/operations/getcapability.d.ts +7 -1
  155. package/models/operations/getcapability.d.ts.map +1 -1
  156. package/models/operations/getcapability.js.map +1 -1
  157. package/models/operations/index.d.ts +1 -0
  158. package/models/operations/index.d.ts.map +1 -1
  159. package/models/operations/index.js +1 -0
  160. package/models/operations/index.js.map +1 -1
  161. package/models/operations/listcancellations.d.ts +45 -0
  162. package/models/operations/listcancellations.d.ts.map +1 -0
  163. package/models/operations/listcancellations.js +90 -0
  164. package/models/operations/listcancellations.js.map +1 -0
  165. package/package.json +1 -1
  166. package/sdk/accounts.d.ts +8 -10
  167. package/sdk/accounts.d.ts.map +1 -1
  168. package/sdk/accounts.js +8 -10
  169. package/sdk/accounts.js.map +1 -1
  170. package/sdk/capabilities.d.ts +4 -4
  171. package/sdk/capabilities.js +4 -4
  172. package/sdk/transfers.d.ts +7 -0
  173. package/sdk/transfers.d.ts.map +1 -1
  174. package/sdk/transfers.js +10 -0
  175. package/sdk/transfers.js.map +1 -1
  176. package/src/funcs/accountsCreate.ts +8 -10
  177. package/src/funcs/capabilitiesDisable.ts +1 -1
  178. package/src/funcs/capabilitiesGet.ts +1 -1
  179. package/src/funcs/capabilitiesList.ts +1 -1
  180. package/src/funcs/capabilitiesRequest.ts +1 -1
  181. package/src/funcs/cardIssuingGet.ts +1 -1
  182. package/src/funcs/cardIssuingGetFull.ts +3 -3
  183. package/src/funcs/cardIssuingList.ts +1 -1
  184. package/src/funcs/cardIssuingRequest.ts +1 -1
  185. package/src/funcs/cardIssuingUpdate.ts +1 -1
  186. package/src/funcs/transfersListCancellations.ts +181 -0
  187. package/src/hooks/access-token-hook.ts +73 -0
  188. package/src/hooks/registration.ts +5 -0
  189. package/src/hooks/types.ts +1 -0
  190. package/src/lib/config.ts +8 -3
  191. package/src/lib/encodings.ts +1 -1
  192. package/src/lib/matchers.ts +1 -1
  193. package/src/lib/primitives.ts +16 -0
  194. package/src/lib/retries.ts +8 -0
  195. package/src/lib/sdks.ts +54 -17
  196. package/src/mcp-server/cli/start/command.ts +9 -0
  197. package/src/mcp-server/cli/start/impl.ts +3 -0
  198. package/src/mcp-server/mcp-server.ts +1 -1
  199. package/src/mcp-server/server.ts +5 -1
  200. package/src/mcp-server/tools/accountsCreate.ts +8 -10
  201. package/src/mcp-server/tools/capabilitiesDisable.ts +1 -1
  202. package/src/mcp-server/tools/capabilitiesGet.ts +1 -1
  203. package/src/mcp-server/tools/capabilitiesList.ts +1 -1
  204. package/src/mcp-server/tools/capabilitiesRequest.ts +1 -1
  205. package/src/mcp-server/tools/transfersListCancellations.ts +38 -0
  206. package/src/models/components/addcapabilities.ts +9 -0
  207. package/src/models/components/capability.ts +7 -1
  208. package/src/models/components/capabilityid.ts +14 -2
  209. package/src/models/components/createaccount.ts +9 -0
  210. package/src/models/components/createpaymentlink.ts +3 -3
  211. package/src/models/components/fullissuedcard.ts +35 -17
  212. package/src/models/components/index.ts +1 -4
  213. package/src/models/components/issuedcard.ts +35 -17
  214. package/src/models/components/onboardinginvite.ts +1 -1
  215. package/src/models/components/onboardinginviterequest.ts +1 -1
  216. package/src/models/components/paymentlink.ts +2 -2
  217. package/src/models/components/requestcard.ts +23 -34
  218. package/src/models/components/updateissuedcard.ts +73 -17
  219. package/src/models/components/webhookdata.ts +18 -8
  220. package/src/models/components/webhookdataauthorizationexpiring.ts +65 -0
  221. package/src/models/components/webhookdatacapabilityrequested.ts +7 -1
  222. package/src/models/components/webhookdatacapabilityupdated.ts +7 -1
  223. package/src/models/components/webhookdatasweepcreated.ts +7 -0
  224. package/src/models/components/webhookdatasweepupdated.ts +7 -0
  225. package/src/models/components/webhookeventtype.ts +1 -0
  226. package/src/models/errors/requestcarderror.ts +26 -25
  227. package/src/models/errors/updateissuedcarderror.ts +18 -13
  228. package/src/models/operations/disablecapability.ts +7 -1
  229. package/src/models/operations/getcapability.ts +7 -1
  230. package/src/models/operations/index.ts +1 -0
  231. package/src/models/operations/listcancellations.ts +120 -0
  232. package/src/sdk/accounts.ts +8 -10
  233. package/src/sdk/capabilities.ts +4 -4
  234. package/src/sdk/transfers.ts +18 -0
  235. package/src/types/async.ts +8 -7
  236. package/test/tests/accessToken.test.ts +86 -0
  237. package/types/async.d.ts.map +1 -1
  238. package/types/async.js +8 -7
  239. package/types/async.js.map +1 -1
  240. package/lib/dlv.d.ts +0 -14
  241. package/lib/dlv.d.ts.map +0 -1
  242. package/lib/dlv.js +0 -49
  243. package/lib/dlv.js.map +0 -1
  244. package/lib/is-plain-object.d.ts +0 -2
  245. package/lib/is-plain-object.d.ts.map +0 -1
  246. package/lib/is-plain-object.js +0 -41
  247. package/lib/is-plain-object.js.map +0 -1
  248. package/models/components/authorizeduser.d.ts +0 -22
  249. package/models/components/authorizeduser.d.ts.map +0 -1
  250. package/models/components/authorizeduser.js.map +0 -1
  251. package/models/components/createauthorizeduser.d.ts +0 -25
  252. package/models/components/createauthorizeduser.d.ts.map +0 -1
  253. package/models/components/createauthorizeduser.js +0 -63
  254. package/models/components/createauthorizeduser.js.map +0 -1
  255. package/models/components/createauthorizedusererror.d.ts +0 -22
  256. package/models/components/createauthorizedusererror.d.ts.map +0 -1
  257. package/models/components/createauthorizedusererror.js.map +0 -1
  258. package/models/components/createauthorizeduserupdate.d.ts +0 -25
  259. package/models/components/createauthorizeduserupdate.d.ts.map +0 -1
  260. package/models/components/createauthorizeduserupdate.js +0 -63
  261. package/models/components/createauthorizeduserupdate.js.map +0 -1
  262. package/src/lib/dlv.ts +0 -53
  263. package/src/lib/is-plain-object.ts +0 -43
  264. package/src/models/components/authorizeduser.ts +0 -54
  265. package/src/models/components/createauthorizeduser.ts +0 -68
  266. package/src/models/components/createauthorizedusererror.ts +0 -65
  267. package/src/models/components/createauthorizeduserupdate.ts +0 -68
package/src/lib/sdks.ts CHANGED
@@ -23,6 +23,7 @@ import {
23
23
  matchContentType,
24
24
  } from "./http.js";
25
25
  import { Logger } from "./logger.js";
26
+ import { combineSignals } from "./primitives.js";
26
27
  import { retry, RetryConfig } from "./retries.js";
27
28
  import { SecurityState } from "./security.js";
28
29
 
@@ -127,27 +128,55 @@ export class ClientSDK {
127
128
  if (path) {
128
129
  baseURL.pathname = baseURL.pathname.replace(/\/+$/, "") + "/";
129
130
  reqURL = new URL(path, baseURL);
131
+ if (!reqURL.search && baseURL.search) {
132
+ reqURL.search = baseURL.search;
133
+ }
130
134
  } else {
131
135
  reqURL = baseURL;
132
136
  }
133
137
  reqURL.hash = "";
134
138
 
135
- let finalQuery = query || "";
136
-
137
- const secQuery: string[] = [];
138
- for (const [k, v] of Object.entries(security?.queryParams || {})) {
139
- const q = encodeForm(k, v, { charEncoding: "percent" });
140
- if (typeof q !== "undefined") {
141
- secQuery.push(q);
139
+ // Appends already-encoded query pairs to a query string, replacing any
140
+ // existing pairs with the same key so later sources take precedence.
141
+ const mergeQuery = (current: string, additions: string): string => {
142
+ if (!additions) {
143
+ return current;
142
144
  }
143
- }
144
- if (secQuery.length) {
145
- finalQuery += `&${secQuery.join("&")}`;
146
- }
145
+ const additionKeys = new Set(
146
+ additions
147
+ .split("&")
148
+ .filter((pair) => pair !== "")
149
+ .map((pair) => pair.split("=")[0] ?? ""),
150
+ );
151
+ const kept = current.split("&").filter((pair) => {
152
+ return pair !== "" && !additionKeys.has(pair.split("=")[0] ?? "");
153
+ });
154
+ return [...kept, additions].join("&");
155
+ };
156
+
157
+ const encodeQueryRecord = (record: Record<string, unknown>): string => {
158
+ return Object.entries(record)
159
+ .map(([k, v]) => {
160
+ if (v == null) {
161
+ return undefined;
162
+ }
163
+ const value = v;
164
+ return encodeForm(k, value, {
165
+ explode: Array.isArray(value),
166
+ charEncoding: "percent",
167
+ });
168
+ })
169
+ .filter((pair): pair is string => typeof pair !== "undefined")
170
+ .join("&");
171
+ };
172
+
173
+ const finalQuery = [
174
+ query || "",
175
+ encodeQueryRecord(security?.queryParams || {}),
176
+ ].reduce(mergeQuery, reqURL.search.slice(1));
147
177
 
148
178
  if (finalQuery) {
149
- const q = finalQuery.startsWith("&") ? finalQuery.slice(1) : finalQuery;
150
- reqURL.search = `?${q}`;
179
+ reqURL.search = `?${finalQuery}`;
151
180
  }
152
181
 
153
182
  const headers = new Headers(opHeaders);
@@ -193,9 +222,8 @@ export class ClientSDK {
193
222
  ...options?.fetchOptions,
194
223
  ...options,
195
224
  };
196
- if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) {
197
- const timeoutSignal = AbortSignal.timeout(conf.timeoutMs);
198
- fetchOptions.signal = timeoutSignal;
225
+ if (!fetchOptions?.signal && conf.timeoutMs != null && conf.timeoutMs > 0) {
226
+ context.timeoutMs = conf.timeoutMs;
199
227
  }
200
228
 
201
229
  if (conf.body instanceof ReadableStream) {
@@ -242,10 +270,19 @@ export class ClientSDK {
242
270
  >
243
271
  > {
244
272
  const { context, isErrorStatusCode } = options;
273
+ const timeoutMs = context.timeoutMs;
245
274
 
246
275
  return retry(
247
276
  async () => {
248
- const req = await this.#hooks.beforeRequest(context, request.clone());
277
+ const cloned = request.clone();
278
+ let attempt = cloned;
279
+ if (timeoutMs != null && timeoutMs > 0) {
280
+ const timeoutSignal = AbortSignal.timeout(timeoutMs);
281
+ const combined = combineSignals(cloned.signal, timeoutSignal)
282
+ ?? timeoutSignal;
283
+ attempt = new Request(cloned, { signal: combined });
284
+ }
285
+ const req = await this.#hooks.beforeRequest(context, attempt);
249
286
  await logRequest(this.#logger, req).catch((e) =>
250
287
  this.#logger?.log("Failed to log request:", e)
251
288
  );
@@ -51,6 +51,15 @@ export const startCommand = buildCommand({
51
51
  return z.string().parse(value);
52
52
  },
53
53
  },
54
+ "access-token": {
55
+ kind: "parsed",
56
+ brief:
57
+ "Allows setting the accessToken parameter for all supported operations",
58
+ optional: true,
59
+ parse: (value) => {
60
+ return z.string().parse(value);
61
+ },
62
+ },
54
63
  "server-url": {
55
64
  kind: "parsed",
56
65
  brief: "Overrides the default server URL used by the SDK",
@@ -20,6 +20,7 @@ interface StartCommandFlags {
20
20
  readonly tool?: string[];
21
21
  readonly username?: string | undefined;
22
22
  readonly password?: string | undefined;
23
+ readonly "access-token"?: SDKOptions["accessToken"] | undefined;
23
24
  readonly "server-url"?: string;
24
25
  readonly "server-index"?: SDKOptions["serverIdx"];
25
26
  readonly "log-level": ConsoleLoggerLevel;
@@ -53,6 +54,7 @@ async function startStdio(flags: StartCommandFlags) {
53
54
  username: flags.username ?? "",
54
55
  password: flags.password ?? "",
55
56
  }),
57
+ accessToken: flags["access-token"],
56
58
  serverURL: flags["server-url"],
57
59
  serverIdx: flags["server-index"],
58
60
  });
@@ -76,6 +78,7 @@ async function startSSE(flags: StartCommandFlags) {
76
78
  username: flags.username ?? "",
77
79
  password: flags.password ?? "",
78
80
  }),
81
+ accessToken: flags["access-token"],
79
82
  serverURL: flags["server-url"],
80
83
  serverIdx: flags["server-index"],
81
84
  });
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
19
19
  export const app = buildApplication(routes, {
20
20
  name: "mcp",
21
21
  versionInfo: {
22
- currentVersion: "25.8.7",
22
+ currentVersion: "25.9.1",
23
23
  },
24
24
  });
25
25
 
@@ -166,6 +166,7 @@ import { tool$transfersGetCancellation } from "./tools/transfersGetCancellation.
166
166
  import { tool$transfersGetRefund } from "./tools/transfersGetRefund.js";
167
167
  import { tool$transfersInitiateRefund } from "./tools/transfersInitiateRefund.js";
168
168
  import { tool$transfersList } from "./tools/transfersList.js";
169
+ import { tool$transfersListCancellations } from "./tools/transfersListCancellations.js";
169
170
  import { tool$transfersListRefunds } from "./tools/transfersListRefunds.js";
170
171
  import { tool$transfersUpdate } from "./tools/transfersUpdate.js";
171
172
  import { tool$underwritingGet } from "./tools/underwritingGet.js";
@@ -192,15 +193,17 @@ export function createMCPServer(deps: {
192
193
  scopes?: MCPScope[] | undefined;
193
194
  serverURL?: string | undefined;
194
195
  security?: SDKOptions["security"] | undefined;
196
+ accessToken?: SDKOptions["accessToken"] | undefined;
195
197
  serverIdx?: SDKOptions["serverIdx"] | undefined;
196
198
  }) {
197
199
  const server = new McpServer({
198
200
  name: "Moov",
199
- version: "25.8.7",
201
+ version: "25.9.1",
200
202
  });
201
203
 
202
204
  const client = new MoovCore({
203
205
  security: deps.security,
206
+ accessToken: deps.accessToken,
204
207
  serverURL: deps.serverURL,
205
208
  serverIdx: deps.serverIdx,
206
209
  });
@@ -344,6 +347,7 @@ export function createMCPServer(deps: {
344
347
  tool(tool$transfersGet);
345
348
  tool(tool$transfersUpdate);
346
349
  tool(tool$transfersCreateCancellation);
350
+ tool(tool$transfersListCancellations);
347
351
  tool(tool$transfersGetCancellation);
348
352
  tool(tool$transfersInitiateRefund);
349
353
  tool(tool$transfersListRefunds);
@@ -13,21 +13,19 @@ const args = {
13
13
  export const tool$accountsCreate: ToolDefinition<typeof args> = {
14
14
  name: "accounts-create",
15
15
  description:
16
- `You can create **business** or **individual** accounts for your users (i.e., customers, merchants) by passing the required
17
- information to Moov. Requirements differ per account type and requested [capabilities](https://docs.moov.io/guides/accounts/capabilities/requirements/).
16
+ `You can create business or individual accounts for your users (i.e., customers, merchants) by passing the required information to Moov. Requirements differ per account type and requested [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/).
18
17
 
19
- If you're requesting the \`wallet\`, \`send-funds\`, \`collect-funds\`, or \`card-issuing\` capabilities, you'll need to:
20
- + Send Moov the user [platform terms of service agreement](https://docs.moov.io/guides/accounts/requirements/platform-agreement/) acceptance.
21
- This can be done upon account creation, or by [patching](https://docs.moov.io/api/moov-accounts/accounts/patch/) the account using the \`termsOfService\` field.
22
- If you're creating a business account with the business type \`llc\`, \`partnership\`, or \`privateCorporation\`, you'll need to:
18
+ The \`transfers\` capability is automatically requested for every account. If you request any capability beyond \`transfers\` (for example, \`send-funds.ach\`, \`collect-funds.card-payments\`), you'll need to:
19
+ + Send Moov the user's [platform terms of service agreement](https://docs.moov.io/guides/accounts/requirements/platform-agreement/) acceptance. This can be done at account creation, or by [patching](https://docs.moov.io/api/moov-accounts/accounts/patch/) the account using the \`termsOfService\` field.
20
+ + Fulfill the [verification and underwriting requirements](https://docs.moov.io/guides/accounts/requirements/) for each requested capability. A capability isn't enabled until its requirements pass — check the capability's status to see what's still outstanding.
21
+
22
+ If you're creating a business account, depending on the business type, you'll also need to:
23
23
  + Provide [business representatives](https://docs.moov.io/api/moov-accounts/representatives/) after creating the account.
24
24
  + [Patch](https://docs.moov.io/api/moov-accounts/accounts/patch/) the account to indicate that business representative ownership information is complete.
25
25
 
26
- Visit our documentation to read more about [creating accounts](https://docs.moov.io/guides/accounts/create-accounts/) and [verification requirements](https://docs.moov.io/guides/accounts/requirements/identity-verification/).
27
- Note that the \`mode\` field (for production or sandbox) is only required when creating a _facilitator_ account. All non-facilitator account requests will ignore the mode field and be set to the calling facilitator's mode.
26
+ Visit our documentation to read more about [creating accounts](https://docs.moov.io/guides/accounts/create-accounts/) and [verification requirements](https://docs.moov.io/guides/accounts/requirements/identity-verification/). Note that the \`mode\` field (for production or sandbox) is only required when creating a Partner account. All other account requests will ignore the mode field and be set to the calling Partner account's mode.
28
27
 
29
- To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
30
- to specify the \`/accounts.write\` scope.`,
28
+ To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the \`/accounts.write\` scope.`,
31
29
  args,
32
30
  tool: async (client, args, ctx) => {
33
31
  const [result, apiCall] = await accountsCreate(
@@ -13,7 +13,7 @@ const args = {
13
13
  export const tool$capabilitiesDisable: ToolDefinition<typeof args> = {
14
14
  name: "capabilities-disable",
15
15
  description:
16
- `Disable a specific capability that an account has requested. Read our [capabilities guide](https://docs.moov.io/guides/accounts/capabilities/) to learn more.
16
+ `Disable a specific capability that an account has requested. Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to learn more.
17
17
 
18
18
  To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
19
19
  you'll need to specify the \`/accounts/{accountID}/capabilities.write\` scope.`,
@@ -13,7 +13,7 @@ const args = {
13
13
  export const tool$capabilitiesGet: ToolDefinition<typeof args> = {
14
14
  name: "capabilities-get",
15
15
  description:
16
- `Retrieve a specific capability that an account has requested. Read our [capabilities guide](https://docs.moov.io/guides/accounts/capabilities/) to learn more.
16
+ `Retrieve a specific capability that an account has requested. Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to learn more.
17
17
 
18
18
  To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
19
19
  you'll need to specify the \`/accounts/{accountID}/capabilities.read\` scope.`,
@@ -14,7 +14,7 @@ export const tool$capabilitiesList: ToolDefinition<typeof args> = {
14
14
  name: "capabilities-list",
15
15
  description: `Retrieve all the capabilities an account has requested.
16
16
 
17
- Read our [capabilities guide](https://docs.moov.io/guides/accounts/capabilities/) to learn more.
17
+ Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to learn more.
18
18
 
19
19
  To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
20
20
  you'll need to specify the \`/accounts/{accountID}/capabilities.read\` scope.`,
@@ -13,7 +13,7 @@ const args = {
13
13
  export const tool$capabilitiesRequest: ToolDefinition<typeof args> = {
14
14
  name: "capabilities-request",
15
15
  description:
16
- `Request capabilities for a specific account. Read our [capabilities guide](https://docs.moov.io/guides/accounts/capabilities/) to learn more.
16
+ `Request capabilities for a specific account. Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to learn more.
17
17
 
18
18
  To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
19
19
  you'll need to specify the \`/accounts/{accountID}/capabilities.write\` scope.`,
@@ -0,0 +1,38 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { transfersListCancellations } from "../../funcs/transfersListCancellations.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.ListCancellationsRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$transfersListCancellations: ToolDefinition<typeof args> = {
14
+ name: "transfers-list-cancellations",
15
+ description: ` Get a list of cancellations for a transfer.
16
+
17
+ To access this endpoint using a [token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
18
+ to specify the \`/accounts/{accountID}/transfers.read\` scope.`,
19
+ args,
20
+ tool: async (client, args, ctx) => {
21
+ const [result, apiCall] = await transfersListCancellations(
22
+ client,
23
+ args.request,
24
+ { fetchOptions: { signal: ctx.signal } },
25
+ ).$inspect();
26
+
27
+ if (!result.ok) {
28
+ return {
29
+ content: [{ type: "text", text: result.error.message }],
30
+ isError: true,
31
+ };
32
+ }
33
+
34
+ const value = result.value.result;
35
+
36
+ return formatResult(value, apiCall);
37
+ },
38
+ };
@@ -13,6 +13,15 @@ import {
13
13
  } from "./capabilityid.js";
14
14
 
15
15
  export type AddCapabilities = {
16
+ /**
17
+ * Capabilities to request for the account. Request granular capability IDs that match your use case.
18
+ *
19
+ * @remarks
20
+ *
21
+ * Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
22
+ *
23
+ * The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Use granular values such as `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance` instead.
24
+ */
16
25
  capabilities: Array<CapabilityID>;
17
26
  };
18
27
 
@@ -29,7 +29,13 @@ export type Capability = {
29
29
  *
30
30
  * @remarks
31
31
  *
32
- * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
32
+ * **Deprecated capabilities**
33
+ *
34
+ * The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
35
+ *
36
+ * Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
37
+ *
38
+ * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
33
39
  */
34
40
  capability: CapabilityID;
35
41
  accountID: string;
@@ -10,7 +10,13 @@ import { ClosedEnum } from "../../types/enums.js";
10
10
  *
11
11
  * @remarks
12
12
  *
13
- * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
13
+ * **Deprecated capabilities**
14
+ *
15
+ * The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
16
+ *
17
+ * Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
18
+ *
19
+ * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
14
20
  */
15
21
  export const CapabilityID = {
16
22
  Transfers: "transfers",
@@ -36,7 +42,13 @@ export const CapabilityID = {
36
42
  *
37
43
  * @remarks
38
44
  *
39
- * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
45
+ * **Deprecated capabilities**
46
+ *
47
+ * The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
48
+ *
49
+ * Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
50
+ *
51
+ * The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
40
52
  */
41
53
  export type CapabilityID = ClosedEnum<typeof CapabilityID>;
42
54
 
@@ -65,6 +65,15 @@ export type CreateAccount = {
65
65
  * User provided settings to manage an account.
66
66
  */
67
67
  settings?: Settings | undefined;
68
+ /**
69
+ * Capabilities to request when the account is created. Request granular capability IDs that match your use case.
70
+ *
71
+ * @remarks
72
+ *
73
+ * Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
74
+ *
75
+ * The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Use granular values such as `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance` instead.
76
+ */
68
77
  capabilities?: Array<CapabilityID> | undefined;
69
78
  /**
70
79
  * The operating mode for an account.
@@ -48,7 +48,7 @@ import {
48
48
  *
49
49
  * @remarks
50
50
  *
51
- * A payment link must include either `payment` or `payout` details, but not both. For payout payment links,
51
+ * A payment link must include exactly one of `payment`, `payout`, or `customAmountPayment` details. For payout payment links,
52
52
  * `maxUses` will automatically be set to 1, as these are intended for a one-time disbursement
53
53
  * to a specific recipient.
54
54
  */
@@ -68,8 +68,8 @@ export type CreatePaymentLink = {
68
68
  *
69
69
  * In API versions before `2026.07.00`, this was a required field.
70
70
  *
71
- * In API version `2026.07.00` and beyond, this field is required for `fixed` payment amount types and omitted
72
- * for `open` payment amount types.
71
+ * In API version `2026.07.00` and beyond, this field is required for `payment` and `payout` links and must be
72
+ * omitted for `customAmountPayment` links, where the payor chooses the amount.
73
73
  */
74
74
  amount: Amount;
75
75
  /**
@@ -7,11 +7,11 @@ import { safeParse } from "../../lib/schemas.js";
7
7
  import { Result as SafeParseResult } from "../../types/fp.js";
8
8
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
9
9
  import {
10
- AuthorizedUser,
11
- AuthorizedUser$inboundSchema,
12
- AuthorizedUser$Outbound,
13
- AuthorizedUser$outboundSchema,
14
- } from "./authorizeduser.js";
10
+ Address,
11
+ Address$inboundSchema,
12
+ Address$Outbound,
13
+ Address$outboundSchema,
14
+ } from "./address.js";
15
15
  import {
16
16
  CardBrand,
17
17
  CardBrand$inboundSchema,
@@ -55,17 +55,25 @@ export type FullIssuedCard = {
55
55
  */
56
56
  expiration: CardExpiration;
57
57
  /**
58
- * Fields for identifying an authorized individual.
58
+ * Unique identifier for the wallet funding the card.
59
59
  */
60
- authorizedUser: AuthorizedUser;
60
+ fundingWalletID: string;
61
61
  /**
62
- * Optional descriptor for the card.
62
+ * Identifier for the account of the card's authorized user.
63
63
  */
64
- memo?: string | undefined;
64
+ authorizedUserAccountID?: string | undefined;
65
65
  /**
66
- * Unique identifier for the wallet funding the card.
66
+ * An optional descriptive name for the card.
67
67
  */
68
- fundingWalletID: string;
68
+ nickname?: string | undefined;
69
+ /**
70
+ * Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
71
+ */
72
+ metadata?: { [k: string]: string } | undefined;
73
+ /**
74
+ * Billing address associated with the card.
75
+ */
76
+ billingAddress?: Address | undefined;
69
77
  /**
70
78
  * The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
71
79
  *
@@ -83,6 +91,7 @@ export type FullIssuedCard = {
83
91
  formFactor: IssuedCardFormFactor;
84
92
  controls?: IssuingControls | undefined;
85
93
  createdOn: Date;
94
+ updatedOn: Date;
86
95
  /**
87
96
  * The issued card's Primary Account Number (PAN)
88
97
  */
@@ -103,13 +112,16 @@ export const FullIssuedCard$inboundSchema: z.ZodType<
103
112
  brand: CardBrand$inboundSchema,
104
113
  lastFourCardNumber: z.string(),
105
114
  expiration: CardExpiration$inboundSchema,
106
- authorizedUser: AuthorizedUser$inboundSchema,
107
- memo: z.string().optional(),
108
115
  fundingWalletID: z.string(),
116
+ authorizedUserAccountID: z.string().optional(),
117
+ nickname: z.string().optional(),
118
+ metadata: z.record(z.string()).optional(),
119
+ billingAddress: Address$inboundSchema.optional(),
109
120
  state: IssuedCardState$inboundSchema,
110
121
  formFactor: IssuedCardFormFactor$inboundSchema,
111
122
  controls: IssuingControls$inboundSchema.optional(),
112
123
  createdOn: z.string().datetime({ offset: true }).transform(v => new Date(v)),
124
+ updatedOn: z.string().datetime({ offset: true }).transform(v => new Date(v)),
113
125
  pan: z.string(),
114
126
  cvv: z.string(),
115
127
  });
@@ -119,13 +131,16 @@ export type FullIssuedCard$Outbound = {
119
131
  brand: string;
120
132
  lastFourCardNumber: string;
121
133
  expiration: CardExpiration$Outbound;
122
- authorizedUser: AuthorizedUser$Outbound;
123
- memo?: string | undefined;
124
134
  fundingWalletID: string;
135
+ authorizedUserAccountID?: string | undefined;
136
+ nickname?: string | undefined;
137
+ metadata?: { [k: string]: string } | undefined;
138
+ billingAddress?: Address$Outbound | undefined;
125
139
  state: string;
126
140
  formFactor: string;
127
141
  controls?: IssuingControls$Outbound | undefined;
128
142
  createdOn: string;
143
+ updatedOn: string;
129
144
  pan: string;
130
145
  cvv: string;
131
146
  };
@@ -140,13 +155,16 @@ export const FullIssuedCard$outboundSchema: z.ZodType<
140
155
  brand: CardBrand$outboundSchema,
141
156
  lastFourCardNumber: z.string(),
142
157
  expiration: CardExpiration$outboundSchema,
143
- authorizedUser: AuthorizedUser$outboundSchema,
144
- memo: z.string().optional(),
145
158
  fundingWalletID: z.string(),
159
+ authorizedUserAccountID: z.string().optional(),
160
+ nickname: z.string().optional(),
161
+ metadata: z.record(z.string()).optional(),
162
+ billingAddress: Address$outboundSchema.optional(),
146
163
  state: IssuedCardState$outboundSchema,
147
164
  formFactor: IssuedCardFormFactor$outboundSchema,
148
165
  controls: IssuingControls$outboundSchema.optional(),
149
166
  createdOn: z.date().transform(v => v.toISOString()),
167
+ updatedOn: z.date().transform(v => v.toISOString()),
150
168
  pan: z.string(),
151
169
  cvv: z.string(),
152
170
  });
@@ -51,7 +51,6 @@ export * from "./assignproductimage.js";
51
51
  export * from "./assignproductimagevalidationerror.js";
52
52
  export * from "./asynccreatedrefund.js";
53
53
  export * from "./asynctransfer.js";
54
- export * from "./authorizeduser.js";
55
54
  export * from "./authtoken.js";
56
55
  export * from "./authtokenrequest.js";
57
56
  export * from "./bankaccount.js";
@@ -139,9 +138,6 @@ export * from "./createaccount.js";
139
138
  export * from "./createaccountsettings.js";
140
139
  export * from "./createaccounttype.js";
141
140
  export * from "./createapplepaysession.js";
142
- export * from "./createauthorizeduser.js";
143
- export * from "./createauthorizedusererror.js";
144
- export * from "./createauthorizeduserupdate.js";
145
141
  export * from "./createbusinesserror.js";
146
142
  export * from "./createbusinessprofile.js";
147
143
  export * from "./createdtransfer.js";
@@ -517,6 +513,7 @@ export * from "./webhookdata.js";
517
513
  export * from "./webhookdataaccountcreated.js";
518
514
  export * from "./webhookdataaccountdisconnected.js";
519
515
  export * from "./webhookdataaccountupdated.js";
516
+ export * from "./webhookdataauthorizationexpiring.js";
520
517
  export * from "./webhookdatabalanceupdated.js";
521
518
  export * from "./webhookdatabankaccountcreated.js";
522
519
  export * from "./webhookdatabankaccountdeleted.js";