formbro-mcp-server 1.0.1 → 1.0.2

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 (52) hide show
  1. package/README.md +42 -24
  2. package/dist/index.js +58 -14
  3. package/dist/index.js.map +1 -1
  4. package/dist/services/api-client.d.ts +7 -0
  5. package/dist/services/api-client.d.ts.map +1 -1
  6. package/dist/services/api-client.js +113 -2
  7. package/dist/services/api-client.js.map +1 -1
  8. package/dist/services/idempotency.d.ts +6 -0
  9. package/dist/services/idempotency.d.ts.map +1 -0
  10. package/dist/services/idempotency.js +9 -0
  11. package/dist/services/idempotency.js.map +1 -0
  12. package/dist/tools/applications-extra.d.ts +3 -0
  13. package/dist/tools/applications-extra.d.ts.map +1 -0
  14. package/dist/tools/applications-extra.js +62 -0
  15. package/dist/tools/applications-extra.js.map +1 -0
  16. package/dist/tools/audit.d.ts +3 -0
  17. package/dist/tools/audit.d.ts.map +1 -0
  18. package/dist/tools/audit.js +34 -0
  19. package/dist/tools/audit.js.map +1 -0
  20. package/dist/tools/employers.d.ts.map +1 -1
  21. package/dist/tools/employers.js +17 -29
  22. package/dist/tools/employers.js.map +1 -1
  23. package/dist/tools/export.d.ts +3 -0
  24. package/dist/tools/export.d.ts.map +1 -0
  25. package/dist/tools/export.js +247 -0
  26. package/dist/tools/export.js.map +1 -0
  27. package/dist/tools/extract.d.ts +3 -0
  28. package/dist/tools/extract.d.ts.map +1 -0
  29. package/dist/tools/extract.js +208 -0
  30. package/dist/tools/extract.js.map +1 -0
  31. package/dist/tools/patch.d.ts +10 -0
  32. package/dist/tools/patch.d.ts.map +1 -0
  33. package/dist/tools/patch.js +276 -0
  34. package/dist/tools/patch.js.map +1 -0
  35. package/dist/tools/program-keys.d.ts +3 -0
  36. package/dist/tools/program-keys.d.ts.map +1 -0
  37. package/dist/tools/program-keys.js +13 -0
  38. package/dist/tools/program-keys.js.map +1 -0
  39. package/dist/tools/system.d.ts +3 -0
  40. package/dist/tools/system.d.ts.map +1 -0
  41. package/dist/tools/system.js +84 -0
  42. package/dist/tools/system.js.map +1 -0
  43. package/dist/tools/validate.d.ts +3 -0
  44. package/dist/tools/validate.d.ts.map +1 -0
  45. package/dist/tools/validate.js +68 -0
  46. package/dist/tools/validate.js.map +1 -0
  47. package/dist/tools/write.d.ts +4 -0
  48. package/dist/tools/write.d.ts.map +1 -0
  49. package/dist/tools/write.js +786 -0
  50. package/dist/tools/write.js.map +1 -0
  51. package/package.json +7 -3
  52. package/server.json +67 -0
package/README.md CHANGED
@@ -2,25 +2,43 @@
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/formbro-mcp-server.svg)](https://www.npmjs.com/package/formbro-mcp-server)
4
4
 
5
- MCP server for FormBro immigration management system - provides access to applicants, applications, and employers data through the Model Context Protocol.
5
+ MCP server for FormBro Canadian immigration application automation. It provides agent access to FormBro applications, applicants, employers, validation, export, and controlled write workflows through the Model Context Protocol.
6
6
 
7
7
  ## Features
8
8
 
9
- - 🔍 **Smart Find Tool** - Intelligent name search with automatic order matching (e.g., "Zhang Wei" or "Wei Zhang")
10
- - 📋 **List Operations** - Paginated listing with search and filtering
11
- - 📄 **Detail Views** - Comprehensive entity information retrieval
12
- - 🔐 **Secure Authentication** - Token-based API authentication
13
- - 🌐 **Dual Transport** - Supports both stdio (local) and HTTP (remote) modes
14
- - 📡 **SSE Support** - Server-Sent Events for streaming responses
9
+ - **Hosted MCP** - Use `https://mcp.formbro.ca/mcp` from Claude Code, Codex, Cursor, and other MCP clients.
10
+ - **Local stdio MCP** - Use `npx -y formbro-mcp-server` for Claude Desktop and offline debugging.
11
+ - **Toolset gating** - Public default is `system,read,validate`; write/export/audit tools require explicit opt-in.
12
+ - **Secure authentication** - Token-based FormBro API authentication with per-request bearer tokens for hosted HTTP.
13
+ - **Dual transport** - Supports stdio (local) and Streamable HTTP (hosted/self-hosted) modes.
14
+
15
+ ## Hosted MCP Quick Start
16
+
17
+ ```bash
18
+ claude mcp add --transport http formbro \
19
+ "https://mcp.formbro.ca/mcp?toolsets=system,read,validate" \
20
+ --header "Authorization: Bearer fb_your_token_here"
21
+ ```
22
+
23
+ For Codex:
24
+
25
+ ```bash
26
+ export FORMBRO_API_TOKEN=fb_your_token_here
27
+ codex mcp add formbro \
28
+ --url "https://mcp.formbro.ca/mcp?toolsets=system,read,validate" \
29
+ --bearer-token-env-var FORMBRO_API_TOKEN
30
+ ```
31
+
32
+ Use local stdio only when your client requires a local MCP process or you need offline debugging.
15
33
 
16
34
  ## Installation
17
35
 
18
- ### Option 1: Using npx (Recommended)
36
+ ### Option 1: Using npx
19
37
 
20
38
  No installation needed - run directly:
21
39
 
22
40
  ```bash
23
- npx formbro-mcp-server
41
+ npx -y formbro-mcp-server --toolsets=system,read,validate
24
42
  ```
25
43
 
26
44
  ### Option 2: Global Installation
@@ -48,18 +66,18 @@ npm install formbro-mcp-server
48
66
  #### stdio mode (for Claude Desktop)
49
67
 
50
68
  ```bash
51
- FORMBRO_API_URL=https://api.formbro.com \
69
+ FORMBRO_API_URL=https://backend.formbro.ca \
52
70
  FORMBRO_API_TOKEN=fb_your_token_here \
53
- formbro-mcp-server
71
+ formbro-mcp-server --toolsets=system,read,validate
54
72
  ```
55
73
 
56
74
  #### HTTP mode (for remote access / Claude Code HTTP)
57
75
 
58
76
  ```bash
59
- FORMBRO_API_URL=https://api.formbro.com \
77
+ FORMBRO_API_URL=https://backend.formbro.ca \
60
78
  TRANSPORT=http \
61
79
  PORT=3000 \
62
- formbro-mcp-server
80
+ formbro-mcp-server --toolsets=system,read,validate
63
81
  ```
64
82
 
65
83
  **Note:** In HTTP mode, the token is provided per-request via the `Authorization` header, not in the environment.
@@ -95,7 +113,7 @@ Add to your `claude_desktop_config.json`:
95
113
  "command": "npx",
96
114
  "args": ["-y", "formbro-mcp-server"],
97
115
  "env": {
98
- "FORMBRO_API_URL": "https://api.formbro.com",
116
+ "FORMBRO_API_URL": "https://backend.formbro.ca",
99
117
  "FORMBRO_API_TOKEN": "fb_your_token_here"
100
118
  }
101
119
  }
@@ -111,7 +129,7 @@ Add to your `claude_desktop_config.json`:
111
129
  "formbro": {
112
130
  "command": "formbro-mcp-server",
113
131
  "env": {
114
- "FORMBRO_API_URL": "https://api.formbro.com",
132
+ "FORMBRO_API_URL": "https://backend.formbro.ca",
115
133
  "FORMBRO_API_TOKEN": "fb_your_token_here"
116
134
  }
117
135
  }
@@ -128,7 +146,7 @@ Add to your `claude_desktop_config.json`:
128
146
  "command": "node",
129
147
  "args": ["/path/to/formbro-mcp-server/dist/index.js"],
130
148
  "env": {
131
- "FORMBRO_API_URL": "https://api.formbro.com",
149
+ "FORMBRO_API_URL": "https://backend.formbro.ca",
132
150
  "FORMBRO_API_TOKEN": "fb_your_token_here"
133
151
  }
134
152
  }
@@ -148,7 +166,7 @@ Claude Code supports both **stdio** and **HTTP** transports.
148
166
 
149
167
  ```bash
150
168
  # In a terminal, run:
151
- FORMBRO_API_URL=https://api.formbro.com \
169
+ FORMBRO_API_URL=https://backend.formbro.ca \
152
170
  TRANSPORT=http \
153
171
  PORT=3000 \
154
172
  formbro-mcp-server
@@ -158,7 +176,7 @@ Or create an `.env` file:
158
176
 
159
177
  ```bash
160
178
  # .env
161
- FORMBRO_API_URL=https://api.formbro.com
179
+ FORMBRO_API_URL=https://backend.formbro.ca
162
180
  TRANSPORT=http
163
181
  MCP_PORT=3000
164
182
  ```
@@ -191,7 +209,7 @@ claude mcp list
191
209
 
192
210
  ```bash
193
211
  claude mcp add --transport stdio formbro -- \
194
- env FORMBRO_API_URL=https://api.formbro.com \
212
+ env FORMBRO_API_URL=https://backend.formbro.ca \
195
213
  FORMBRO_API_TOKEN=fb_your_token_here \
196
214
  npx -y formbro-mcp-server
197
215
  ```
@@ -200,7 +218,7 @@ claude mcp add --transport stdio formbro -- \
200
218
 
201
219
  ```bash
202
220
  claude mcp add --transport stdio formbro -- \
203
- env FORMBRO_API_URL=https://api.formbro.com \
221
+ env FORMBRO_API_URL=https://backend.formbro.ca \
204
222
  FORMBRO_API_TOKEN=fb_your_token_here \
205
223
  formbro-mcp-server
206
224
  ```
@@ -337,7 +355,7 @@ Health check endpoint returning server status.
337
355
  "status": "ok",
338
356
  "server": "formbro-mcp-server",
339
357
  "version": "1.0.0",
340
- "apiUrl": "https://api.formbro.com",
358
+ "apiUrl": "https://backend.formbro.ca",
341
359
  "apiConfigured": true
342
360
  }
343
361
  ```
@@ -393,7 +411,7 @@ Returns server information and available tools.
393
411
  2. Verify environment variables are set correctly
394
412
  3. Test manually:
395
413
  ```bash
396
- FORMBRO_API_URL=https://api.formbro.com \
414
+ FORMBRO_API_URL=https://backend.formbro.ca \
397
415
  FORMBRO_API_TOKEN=fb_your_token \
398
416
  formbro-mcp-server
399
417
  ```
@@ -421,12 +439,12 @@ pnpm dev
421
439
 
422
440
  ```bash
423
441
  # Test stdio mode
424
- FORMBRO_API_URL=https://api.formbro.com \
442
+ FORMBRO_API_URL=https://backend.formbro.ca \
425
443
  FORMBRO_API_TOKEN=fb_your_token \
426
444
  pnpm start
427
445
 
428
446
  # Test HTTP mode
429
- FORMBRO_API_URL=https://api.formbro.com \
447
+ FORMBRO_API_URL=https://backend.formbro.ca \
430
448
  TRANSPORT=http \
431
449
  PORT=3000 \
432
450
  pnpm start
package/dist/index.js CHANGED
@@ -21,9 +21,34 @@ import { registerApplicantTools } from "./tools/applicants.js";
21
21
  import { registerApplicationTools } from "./tools/applications.js";
22
22
  import { registerEmployerTools } from "./tools/employers.js";
23
23
  import { registerFindTool } from "./tools/find.js";
24
+ import { registerSystemTools } from "./tools/system.js";
25
+ import { registerReadExtraTools } from "./tools/applications-extra.js";
26
+ import { registerValidateTools } from "./tools/validate.js";
27
+ import { registerWriteTools } from "./tools/write.js";
28
+ import { registerPatchTools } from "./tools/patch.js";
29
+ import { registerAuditTools } from "./tools/audit.js";
30
+ import { registerExtractTools } from "./tools/extract.js";
31
+ import { registerExportTools } from "./tools/export.js";
32
+ // Toolset configuration
33
+ const TOOLSETS = ["system", "read", "validate", "write", "patch", "extract", "export", "audit"];
34
+ const DEFAULT_TOOLSETS = ["system", "read", "validate"];
35
+ function parseToolsetsFromFlag() {
36
+ const flag = process.argv.find((a) => a.startsWith("--toolsets="))?.split("=")[1];
37
+ if (!flag)
38
+ return new Set(DEFAULT_TOOLSETS);
39
+ return new Set(flag.split(",").filter((t) => TOOLSETS.includes(t)));
40
+ }
41
+ function parseToolsetsFromQuery(query) {
42
+ if (!query)
43
+ return parseToolsetsFromFlag();
44
+ const requested = new Set(query.split(",").filter((t) => TOOLSETS.includes(t)));
45
+ return requested.size > 0 ? requested : parseToolsetsFromFlag();
46
+ }
47
+ // Used for stdio mode (startup-time only)
48
+ const enabledToolsets = parseToolsetsFromFlag();
24
49
  // Server configuration
25
50
  const SERVER_NAME = "formbro-mcp-server";
26
- const SERVER_VERSION = "1.0.0";
51
+ const SERVER_VERSION = "1.0.2";
27
52
  /**
28
53
  * Validate required environment variables for STDIO mode
29
54
  */
@@ -56,18 +81,35 @@ function validateEnvironmentHttp() {
56
81
  return { apiUrl };
57
82
  }
58
83
  /**
59
- * Create and configure the MCP server
84
+ * Create and configure the MCP server with the given toolsets
60
85
  */
61
- function createServer() {
86
+ function createServer(toolsets = enabledToolsets) {
62
87
  const server = new McpServer({
63
88
  name: SERVER_NAME,
64
89
  version: SERVER_VERSION
65
90
  });
66
- // Register all tools
67
- registerFindTool(server); // Smart find tool - recommended for most queries
68
- registerApplicantTools(server);
69
- registerApplicationTools(server);
70
- registerEmployerTools(server);
91
+ // Register tools based on enabled toolsets
92
+ if (toolsets.has("system"))
93
+ registerSystemTools(server);
94
+ if (toolsets.has("read")) {
95
+ registerFindTool(server);
96
+ registerApplicantTools(server);
97
+ registerApplicationTools(server);
98
+ registerEmployerTools(server);
99
+ registerReadExtraTools(server);
100
+ }
101
+ if (toolsets.has("validate"))
102
+ registerValidateTools(server);
103
+ if (toolsets.has("write"))
104
+ registerWriteTools(server);
105
+ if (toolsets.has("patch"))
106
+ registerPatchTools(server);
107
+ if (toolsets.has("audit"))
108
+ registerAuditTools(server);
109
+ if (toolsets.has("extract"))
110
+ registerExtractTools(server);
111
+ if (toolsets.has("export"))
112
+ registerExportTools(server);
71
113
  return server;
72
114
  }
73
115
  /**
@@ -135,9 +177,11 @@ async function runHttp() {
135
177
  }
136
178
  // Create API client with the provided token
137
179
  const apiClient = createApiClientWithToken(token);
180
+ // Parse toolsets from query param (default: system,read,validate)
181
+ const toolsets = parseToolsetsFromQuery(req.query.toolsets);
138
182
  // Run the MCP request with the token-specific API client
139
183
  await runWithApiClient(apiClient, async () => {
140
- const server = createServer();
184
+ const server = createServer(toolsets);
141
185
  // Create new transport for each request (stateless)
142
186
  const transport = new StreamableHTTPServerTransport({
143
187
  sessionIdGenerator: undefined,
@@ -236,8 +280,8 @@ ENVIRONMENT VARIABLES:
236
280
  FORMBRO_API_URL Base URL of FormBro API (required)
237
281
  Example: https://api.formbro.com
238
282
 
239
- FORMBRO_API_TOKEN Your FormBro API token (required)
240
- Get this from FormBro settings
283
+ FORMBRO_API_TOKEN Your FormBro API token
284
+ Required for stdio mode
241
285
 
242
286
  TRANSPORT Transport mode (optional, default: stdio)
243
287
  - stdio: For local CLI integration
@@ -252,9 +296,8 @@ EXAMPLES:
252
296
  FORMBRO_API_TOKEN=your-token \\
253
297
  formbro-mcp-server
254
298
 
255
- # Run with HTTP transport (for remote access)
299
+ # Run with HTTP transport
256
300
  FORMBRO_API_URL=https://api.formbro.com \\
257
- FORMBRO_API_TOKEN=your-token \\
258
301
  TRANSPORT=http \\
259
302
  PORT=8080 \\
260
303
  formbro-mcp-server
@@ -270,7 +313,8 @@ AVAILABLE TOOLS:
270
313
 
271
314
  CONNECTING FROM CLAUDE CODE:
272
315
  # For HTTP transport
273
- claude mcp add --transport http formbro http://localhost:3000/mcp
316
+ claude mcp add --transport http formbro http://localhost:3000/mcp \\
317
+ --header "Authorization: Bearer YOUR_FORMBRO_API_TOKEN"
274
318
 
275
319
  # For stdio transport
276
320
  claude mcp add --transport stdio formbro -- \\
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,13 @@ export declare function getApiClient(): AxiosInstance;
23
23
  * Make an API request to FormBro backend
24
24
  */
25
25
  export declare function makeApiRequest<T>(endpoint: string, method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", data?: unknown, params?: Record<string, unknown>): Promise<T>;
26
+ export interface BinaryApiResponse {
27
+ data: Buffer;
28
+ contentType: string;
29
+ filename?: string;
30
+ contentDisposition?: string;
31
+ }
32
+ export declare function makeApiBinaryRequest(endpoint: string, method?: "GET" | "POST", data?: unknown, params?: Record<string, unknown>): Promise<BinaryApiResponse>;
26
33
  /**
27
34
  * Handle API errors and return user-friendly messages
28
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAEA,OAAc,EAAE,aAAa,EAAc,MAAM,OAAO,CAAC;AAUzD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAWxE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAarE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAW5C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CASZ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA6BrD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1C"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAEA,OAAc,EAAE,aAAa,EAA6D,MAAM,OAAO,CAAC;AAWxG;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAWxE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAarE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAW5C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAsCD,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAc,EAC9B,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAwC5B;AAiCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA8BrD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1C"}
@@ -1,6 +1,7 @@
1
1
  // FormBro API Client with Token Authentication
2
2
  import axios, { AxiosError } from "axios";
3
3
  import { API_TIMEOUT } from "../constants.js";
4
+ import { generateIdempotencyKey } from "./idempotency.js";
4
5
  let defaultApiClient = null;
5
6
  let defaultBaseUrl = null;
6
7
  // AsyncLocalStorage for per-request API client
@@ -68,14 +69,123 @@ export function getApiClient() {
68
69
  */
69
70
  export async function makeApiRequest(endpoint, method = "GET", data, params) {
70
71
  const client = getApiClient();
72
+ // Auto-inject Idempotency-Key for mutating requests
73
+ const extraHeaders = {};
74
+ if (method !== "GET") {
75
+ extraHeaders["Idempotency-Key"] = generateIdempotencyKey(method.toLowerCase());
76
+ }
71
77
  const response = await client.request({
72
78
  method,
73
79
  url: endpoint,
74
80
  data,
75
- params
81
+ params,
82
+ headers: extraHeaders
76
83
  });
77
84
  return response.data;
78
85
  }
86
+ function getHeader(headers, name) {
87
+ const value = headers[name] ?? headers[name.toLowerCase()];
88
+ if (Array.isArray(value))
89
+ return value[0];
90
+ return typeof value === "string" ? value : undefined;
91
+ }
92
+ function parseFilename(contentDisposition) {
93
+ if (!contentDisposition)
94
+ return undefined;
95
+ const filenameStar = /filename\*=UTF-8''([^;]+)/i.exec(contentDisposition);
96
+ if (filenameStar?.[1]) {
97
+ return decodeURIComponent(filenameStar[1].replace(/^"|"$/g, ""));
98
+ }
99
+ const filename = /filename="?([^";]+)"?/i.exec(contentDisposition);
100
+ return filename?.[1];
101
+ }
102
+ function decodeBinaryErrorData(error) {
103
+ const data = error.response?.data;
104
+ if (!(data instanceof ArrayBuffer) && !Buffer.isBuffer(data))
105
+ return;
106
+ const buffer = Buffer.isBuffer(data) ? data : Buffer.from(new Uint8Array(data));
107
+ const text = buffer.toString("utf8").trim();
108
+ if (!text)
109
+ return;
110
+ try {
111
+ error.response.data = JSON.parse(text);
112
+ }
113
+ catch {
114
+ error.response.data = { detail: text };
115
+ }
116
+ }
117
+ export async function makeApiBinaryRequest(endpoint, method = "GET", data, params) {
118
+ const client = getApiClient();
119
+ const extraHeaders = {
120
+ Accept: [
121
+ "application/pdf",
122
+ "application/zip",
123
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
124
+ "application/octet-stream",
125
+ ].join(", "),
126
+ };
127
+ if (method !== "GET") {
128
+ extraHeaders["Idempotency-Key"] = generateIdempotencyKey(method.toLowerCase());
129
+ }
130
+ try {
131
+ const response = await client.request({
132
+ method,
133
+ url: endpoint,
134
+ data,
135
+ params,
136
+ responseType: "arraybuffer",
137
+ headers: extraHeaders,
138
+ });
139
+ const contentType = getHeader(response.headers, "content-type") ?? "application/octet-stream";
140
+ const contentDisposition = getHeader(response.headers, "content-disposition");
141
+ return {
142
+ data: Buffer.from(response.data),
143
+ contentType,
144
+ filename: parseFilename(contentDisposition),
145
+ contentDisposition,
146
+ };
147
+ }
148
+ catch (error) {
149
+ if (error instanceof AxiosError) {
150
+ decodeBinaryErrorData(error);
151
+ }
152
+ throw error;
153
+ }
154
+ }
155
+ /**
156
+ * Format API error detail into a human-readable string.
157
+ * FastAPI 422 returns detail as an array of {type, loc, msg, input, ctx} objects.
158
+ */
159
+ function formatErrorDetail(detail) {
160
+ if (!detail)
161
+ return "";
162
+ if (typeof detail === "string")
163
+ return detail;
164
+ if (Array.isArray(detail)) {
165
+ return detail
166
+ .map((d) => {
167
+ if (typeof d === "string")
168
+ return d;
169
+ if (d && typeof d === "object") {
170
+ const obj = d;
171
+ const loc = Array.isArray(obj.loc) ? obj.loc.join(".") : "";
172
+ const msg = typeof obj.msg === "string" ? obj.msg : JSON.stringify(obj);
173
+ return loc ? `${loc}: ${msg}` : msg;
174
+ }
175
+ return String(d);
176
+ })
177
+ .join("; ");
178
+ }
179
+ if (typeof detail === "object") {
180
+ try {
181
+ return JSON.stringify(detail);
182
+ }
183
+ catch {
184
+ return String(detail);
185
+ }
186
+ }
187
+ return String(detail);
188
+ }
79
189
  /**
80
190
  * Handle API errors and return user-friendly messages
81
191
  */
@@ -83,7 +193,8 @@ export function handleApiError(error) {
83
193
  if (error instanceof AxiosError) {
84
194
  if (error.response) {
85
195
  const status = error.response.status;
86
- const detail = error.response.data?.detail || error.response.data?.message;
196
+ const rawDetail = error.response.data?.detail || error.response.data?.message;
197
+ const detail = formatErrorDetail(rawDetail);
87
198
  switch (status) {
88
199
  case 401:
89
200
  return "Error: Authentication failed. Please check your FORMBRO_API_TOKEN is valid.";
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,KAAK,EAAE,EAAiB,UAAU,EAAiD,MAAM,OAAO,CAAC;AACxG,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,IAAI,gBAAgB,GAAyB,IAAI,CAAC;AAClD,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC,+CAA+C;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAgC,CAAC;AAE7E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,KAAa;IAChE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,kBAAkB;YAC5B,eAAe,EAAE,UAAU,KAAK,EAAE;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,kBAAkB;YAC5B,eAAe,EAAE,UAAU,KAAK,EAAE;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAI,SAAwB,EAAE,EAAW;IACvE,OAAO,cAAc,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACxC,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,SAAS,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,SAAsD,KAAK,EAC3D,IAAc,EACd,MAAgC;IAEhC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,oDAAoD;IACpD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,YAAY,CAAC,iBAAiB,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAI;QACvC,MAAM;QACN,GAAG,EAAE,QAAQ;QACb,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AASD,SAAS,SAAS,CAChB,OAAuD,EACvD,IAAY;IAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,kBAAsC;IAC3D,IAAI,CAAC,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3E,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnE,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiB;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;IAClC,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IAErE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,IAAI,CAAC;QACH,KAAK,CAAC,QAAS,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,QAAS,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,SAAyB,KAAK,EAC9B,IAAc,EACd,MAAgC;IAEhC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,MAAM,YAAY,GAA2B;QAC3C,MAAM,EAAE;YACN,iBAAiB;YACjB,iBAAiB;YACjB,mEAAmE;YACnE,0BAA0B;SAC3B,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;IACF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,YAAY,CAAC,iBAAiB,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAc;YACjD,MAAM;YACN,GAAG,EAAE,QAAQ;YACb,IAAI;YACJ,MAAM;YACN,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,0BAA0B,CAAC;QAC9F,MAAM,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAE9E,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAChC,WAAW;YACX,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC;YAC3C,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAA4B,CAAC;gBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACxE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACtC,CAAC;YACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;YAC9E,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE5C,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,GAAG;oBACN,OAAO,6EAA6E,CAAC;gBACvF,KAAK,GAAG;oBACN,OAAO,mEAAmE,CAAC;gBAC7E,KAAK,GAAG;oBACN,OAAO,8BAA8B,MAAM,IAAI,iCAAiC,EAAE,CAAC;gBACrF,KAAK,GAAG;oBACN,OAAO,2BAA2B,MAAM,IAAI,+BAA+B,EAAE,CAAC;gBAChF,KAAK,GAAG;oBACN,OAAO,sEAAsE,CAAC;gBAChF,KAAK,GAAG;oBACN,OAAO,sDAAsD,CAAC;gBAChE;oBACE,OAAO,yCAAyC,MAAM,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC;YAC9E,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,OAAO,6CAA6C,CAAC;QACvD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,OAAO,2EAA2E,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACvG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generate a unique idempotency key for a given tool name.
3
+ * Format: {toolName}-{uuid}
4
+ */
5
+ export declare function generateIdempotencyKey(toolName: string): string;
6
+ //# sourceMappingURL=idempotency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../../src/services/idempotency.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,9 @@
1
+ import { randomUUID } from "node:crypto";
2
+ /**
3
+ * Generate a unique idempotency key for a given tool name.
4
+ * Format: {toolName}-{uuid}
5
+ */
6
+ export function generateIdempotencyKey(toolName) {
7
+ return `${toolName}-${randomUUID()}`;
8
+ }
9
+ //# sourceMappingURL=idempotency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../src/services/idempotency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,OAAO,GAAG,QAAQ,IAAI,UAAU,EAAE,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerReadExtraTools(server: McpServer): void;
3
+ //# sourceMappingURL=applications-extra.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applications-extra.d.ts","sourceRoot":"","sources":["../../src/tools/applications-extra.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAepE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2D9D"}
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import { makeApiRequest, handleApiError } from "../services/api-client.js";
3
+ const ListByStatusSchema = z.object({
4
+ status: z.string().describe("Application status e.g. 'ready_to_submit', 'in_review'"),
5
+ program_key: z.string().optional(),
6
+ days_in_status: z.number().int().nonnegative().optional(),
7
+ limit: z.number().int().positive().max(100).default(20),
8
+ }).strict();
9
+ const ApplicationIdSchema = z.object({
10
+ application_id: z.string().describe("MongoDB ObjectId of the application"),
11
+ }).strict();
12
+ export function registerReadExtraTools(server) {
13
+ server.registerTool("list_applications_by_status", {
14
+ title: "List Applications by Status",
15
+ description: "Find applications by status (e.g., 'ready_to_submit', 'in_review'). Optionally filter by program_key or days_in_status.",
16
+ inputSchema: ListByStatusSchema,
17
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
18
+ }, async ({ status, program_key, days_in_status, limit }) => {
19
+ try {
20
+ const queryParams = { status, limit };
21
+ if (program_key)
22
+ queryParams.program_key = program_key;
23
+ if (days_in_status !== undefined)
24
+ queryParams.days_in_status = days_in_status;
25
+ const data = await makeApiRequest("/api/dashboard/applications", "GET", undefined, queryParams);
26
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
27
+ }
28
+ catch (error) {
29
+ return { isError: true, content: [{ type: "text", text: handleApiError(error) }] };
30
+ }
31
+ });
32
+ server.registerTool("get_application_persons", {
33
+ title: "Get Application Persons",
34
+ description: "List all persons (applicant, spouse, dependents, sponsor, co_signer, employer, rcic) attached to an application.",
35
+ inputSchema: ApplicationIdSchema,
36
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
37
+ }, async ({ application_id }) => {
38
+ try {
39
+ const data = await makeApiRequest(`/api/applications/${encodeURIComponent(application_id)}/persons`, "GET");
40
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
41
+ }
42
+ catch (error) {
43
+ return { isError: true, content: [{ type: "text", text: handleApiError(error) }] };
44
+ }
45
+ });
46
+ server.registerTool("get_documents_for_application", {
47
+ title: "Get Application Documents",
48
+ description: "List all upload_slots and uploaded files for an application.",
49
+ inputSchema: ApplicationIdSchema,
50
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
51
+ }, async ({ application_id }) => {
52
+ try {
53
+ const data = await makeApiRequest(`/api/applications/${encodeURIComponent(application_id)}`, "GET");
54
+ const slots = data?.upload_slots ?? [];
55
+ return { content: [{ type: "text", text: JSON.stringify(slots, null, 2) }] };
56
+ }
57
+ catch (error) {
58
+ return { isError: true, content: [{ type: "text", text: handleApiError(error) }] };
59
+ }
60
+ });
61
+ }
62
+ //# sourceMappingURL=applications-extra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applications-extra.js","sourceRoot":"","sources":["../../src/tools/applications-extra.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerAuditTools(server: McpServer): void;
3
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0B1D"}