id-verify-mcp 1.0.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Tanveer Afzal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,103 @@
1
+ # ID Verify MCP Server
2
+
3
+ MCP (Model Context Protocol) server that enables AI assistants like Claude to perform identity verifications through the ID Verify API.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g id-verify-mcp
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ### 1. Get your API Key
14
+
15
+ Sign up at [ID Verify](https://your-id-verify-site.com) to get your API key.
16
+
17
+ ### 2. Configure Claude Desktop
18
+
19
+ Add to your Claude Desktop configuration file:
20
+
21
+ **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
22
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
23
+
24
+ ```json
25
+ {
26
+ "mcpServers": {
27
+ "id-verify": {
28
+ "command": "id-verify-mcp",
29
+ "env": {
30
+ "ID_VERIFY_API_KEY": "your_api_key_here"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ ```
36
+
37
+ ### 3. Restart Claude Desktop
38
+
39
+ Restart Claude Desktop to load the MCP server.
40
+
41
+ ## Configuration
42
+
43
+ | Environment Variable | Description | Default |
44
+ |---------------------|-------------|---------|
45
+ | `ID_VERIFY_API_KEY` | Your API key (required) | - |
46
+ | `ID_VERIFY_API_URL` | API base URL | `https://id-verify-api.com` |
47
+
48
+ ## Available Tools
49
+
50
+ ### Verification Tools
51
+ - `create_verification` - Create a new identity verification request
52
+ - `get_verification` - Get verification status by ID
53
+ - `get_verification_result` - Get detailed verification result
54
+
55
+ ### Partner Tools (requires `partner_login` first)
56
+ - `register_partner` - Register a new partner account
57
+ - `partner_login` - Login as a partner
58
+ - `partner_profile` - Get partner profile
59
+ - `partner_verifications` - List partner's verifications
60
+ - `partner_verification_detail` - Get specific verification details
61
+ - `partner_usage_stats` - Get usage statistics
62
+ - `partner_webhook_logs` - Get webhook delivery logs
63
+ - `partner_request_verification` - Create verification as partner
64
+ - `partner_resend_email` - Resend verification email
65
+ - `partner_resend_webhook` - Resend webhook notification
66
+
67
+ ### Admin Tools
68
+ - `admin_create_partner` - Create a new partner
69
+ - `admin_list_partners` - List all partners
70
+ - `admin_get_partner` - Get partner by ID
71
+ - `admin_update_partner` - Update partner settings
72
+ - `admin_delete_partner` - Delete a partner
73
+
74
+ ## Example Prompts
75
+
76
+ Once configured, you can ask Claude:
77
+
78
+ - "Create a verification for John Doe with email john@example.com"
79
+ - "What's the status of verification abc-123?"
80
+ - "Show me all failed verifications"
81
+ - "Login as partner with email partner@example.com"
82
+ - "Show my verification statistics"
83
+
84
+ ## Development
85
+
86
+ ```bash
87
+ # Clone the repository
88
+ git clone https://github.com/tanveerafzal/id-verify-mcp.git
89
+ cd id-verify-mcp
90
+
91
+ # Install dependencies
92
+ npm install
93
+
94
+ # Build
95
+ npm run build
96
+
97
+ # Run locally
98
+ ID_VERIFY_API_KEY=your_key npm start
99
+ ```
100
+
101
+ ## License
102
+
103
+ MIT
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ID Verify MCP Server
4
+ *
5
+ * Exposes the ID Verify API as MCP tools for AI assistants.
6
+ *
7
+ * Environment variables:
8
+ * ID_VERIFY_API_URL - Base URL of the ID Verify API (default: http://localhost:3000)
9
+ * ID_VERIFY_API_KEY - Partner API key for authentication
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
package/dist/index.js ADDED
@@ -0,0 +1,460 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ID Verify MCP Server
4
+ *
5
+ * Exposes the ID Verify API as MCP tools for AI assistants.
6
+ *
7
+ * Environment variables:
8
+ * ID_VERIFY_API_URL - Base URL of the ID Verify API (default: http://localhost:3000)
9
+ * ID_VERIFY_API_KEY - Partner API key for authentication
10
+ */
11
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
13
+ import { z } from "zod";
14
+ import { IdVerifyApiClient } from "./utils/apiClient.js";
15
+ // Initialize API client
16
+ const apiClient = new IdVerifyApiClient();
17
+ // Create MCP server
18
+ const server = new McpServer({
19
+ name: "id-verify-mcp",
20
+ version: "1.0.0"
21
+ });
22
+ // =============================================================================
23
+ // API KEY AUTH TOOLS (Verification API)
24
+ // =============================================================================
25
+ /**
26
+ * Tool: create_verification
27
+ * Creates a new identity verification request
28
+ */
29
+ server.tool("create_verification", "Create a new identity verification request using API key. Returns a verification ID and link to send to the user.", {
30
+ fullName: z.string().optional().describe("User's full legal name (for name matching)"),
31
+ email: z.string().email().optional().describe("User's email address for notifications"),
32
+ phone: z.string().optional().describe("User's phone number for SMS notifications"),
33
+ documentType: z.enum([
34
+ "PASSPORT",
35
+ "DRIVERS_LICENSE",
36
+ "NATIONAL_ID",
37
+ "HEALTH_CARD",
38
+ "OTHER"
39
+ ]).optional().describe("Expected document type"),
40
+ callbackUrl: z.string().url().optional().describe("Webhook URL for verification result callback")
41
+ }, async ({ fullName, email, phone, documentType, callbackUrl }) => {
42
+ const result = await apiClient.createVerification({
43
+ fullName,
44
+ email,
45
+ phone,
46
+ documentType,
47
+ callbackUrl
48
+ });
49
+ return {
50
+ content: [{
51
+ type: "text",
52
+ text: JSON.stringify(result, null, 2)
53
+ }]
54
+ };
55
+ });
56
+ /**
57
+ * Tool: get_verification
58
+ * Get details of a specific verification
59
+ */
60
+ server.tool("get_verification", "Get the current status and details of a verification by its ID (uses API key auth)", {
61
+ verificationId: z.string().uuid().describe("The verification ID (UUID format)")
62
+ }, async ({ verificationId }) => {
63
+ const result = await apiClient.getVerification(verificationId);
64
+ return {
65
+ content: [{
66
+ type: "text",
67
+ text: JSON.stringify(result, null, 2)
68
+ }]
69
+ };
70
+ });
71
+ /**
72
+ * Tool: get_verification_result
73
+ * Get the detailed result of a completed verification
74
+ */
75
+ server.tool("get_verification_result", "Get the detailed verification result including extracted data, scores, and failure reasons", {
76
+ verificationId: z.string().uuid().describe("The verification ID (UUID format)")
77
+ }, async ({ verificationId }) => {
78
+ const result = await apiClient.getVerificationResult(verificationId);
79
+ // Format the result for better readability
80
+ if (result.success && result.data) {
81
+ const data = result.data;
82
+ let summary = `## Verification Result\n\n`;
83
+ summary += `**Status:** ${data.passed ? '✅ PASSED' : '❌ FAILED'}\n`;
84
+ summary += `**Score:** ${(data.score * 100).toFixed(1)}%\n`;
85
+ summary += `**Risk Level:** ${data.riskLevel}\n\n`;
86
+ if (data.extractedData) {
87
+ summary += `### Extracted Data\n`;
88
+ summary += `- **Name:** ${data.extractedData.fullName || 'N/A'}\n`;
89
+ summary += `- **DOB:** ${data.extractedData.dateOfBirth || 'N/A'}\n`;
90
+ summary += `- **Document Number:** ${data.extractedData.documentNumber || 'N/A'}\n`;
91
+ summary += `- **Expiry Date:** ${data.extractedData.expiryDate || 'N/A'}\n`;
92
+ summary += `- **Country:** ${data.extractedData.issuingCountry || 'N/A'}\n\n`;
93
+ }
94
+ if (data.checks) {
95
+ summary += `### Verification Checks\n`;
96
+ summary += `- **Face Match:** ${data.checks.faceMatch ? '✅' : '❌'} (${(data.checks.faceMatchScore * 100).toFixed(1)}%)\n`;
97
+ summary += `- **Name Match:** ${data.checks.nameMatch ? '✅' : '❌'} (${(data.checks.nameMatchScore * 100).toFixed(1)}%)\n`;
98
+ summary += `- **Liveness Check:** ${data.checks.livenessCheck ? '✅' : '❌'}\n`;
99
+ summary += `- **Document Authentic:** ${data.checks.documentAuthentic ? '✅' : '❌'}\n`;
100
+ summary += `- **Document Expired:** ${data.checks.documentExpired ? '❌ Yes' : '✅ No'}\n\n`;
101
+ }
102
+ if (data.flags && data.flags.length > 0) {
103
+ summary += `### Flags\n`;
104
+ data.flags.forEach((flag) => {
105
+ summary += `- ⚠️ ${flag}\n`;
106
+ });
107
+ summary += '\n';
108
+ }
109
+ if (data.failureReasons && data.failureReasons.length > 0) {
110
+ summary += `### Failure Reasons\n`;
111
+ data.failureReasons.forEach((reason) => {
112
+ summary += `- ${reason}\n`;
113
+ });
114
+ }
115
+ return {
116
+ content: [{
117
+ type: "text",
118
+ text: summary + '\n---\n\n**Raw Data:**\n```json\n' + JSON.stringify(result, null, 2) + '\n```'
119
+ }]
120
+ };
121
+ }
122
+ return {
123
+ content: [{
124
+ type: "text",
125
+ text: JSON.stringify(result, null, 2)
126
+ }]
127
+ };
128
+ });
129
+ // =============================================================================
130
+ // PUBLIC TOOLS (No Authentication Required)
131
+ // =============================================================================
132
+ /**
133
+ * Tool: register_partner
134
+ * Register a new partner account
135
+ */
136
+ server.tool("register_partner", "Register a new partner account using the public registration endpoint. No authentication required.", {
137
+ email: z.string().email().describe("Partner's email address (used for login)"),
138
+ contactName: z.string().describe("Partner's contact name"),
139
+ password: z.string().min(8).describe("Partner's password (min 8 characters)"),
140
+ companyName: z.string().optional().describe("Partner's company name"),
141
+ phone: z.string().optional().describe("Partner's phone number"),
142
+ webhookUrl: z.string().url().optional().describe("Webhook URL for verification callbacks")
143
+ }, async ({ email, contactName, password, companyName, phone, webhookUrl }) => {
144
+ const result = await apiClient.registerPartner({
145
+ email,
146
+ contactName,
147
+ password,
148
+ companyName,
149
+ phone,
150
+ webhookUrl
151
+ });
152
+ return {
153
+ content: [{
154
+ type: "text",
155
+ text: JSON.stringify(result, null, 2)
156
+ }]
157
+ };
158
+ });
159
+ // =============================================================================
160
+ // PARTNER AUTH TOOLS (JWT Authentication)
161
+ // =============================================================================
162
+ /**
163
+ * Tool: partner_login
164
+ * Login as a partner to access partner-specific APIs
165
+ */
166
+ server.tool("partner_login", "Login as a partner to access partner-specific APIs. Required before using partner_* tools.", {
167
+ email: z.string().email().describe("Partner account email"),
168
+ password: z.string().describe("Partner account password")
169
+ }, async ({ email, password }) => {
170
+ const result = await apiClient.partnerLogin(email, password);
171
+ if (result.success && apiClient.isAuthenticated()) {
172
+ return {
173
+ content: [{
174
+ type: "text",
175
+ text: `✅ Login successful! JWT token stored. You can now use partner_* tools.\n\n${JSON.stringify(result, null, 2)}`
176
+ }]
177
+ };
178
+ }
179
+ if (result.success && !apiClient.isAuthenticated()) {
180
+ return {
181
+ content: [{
182
+ type: "text",
183
+ text: `⚠️ Login API returned success but no JWT token was found in the response.\n\nFull response:\n${JSON.stringify(result, null, 2)}`
184
+ }]
185
+ };
186
+ }
187
+ return {
188
+ content: [{
189
+ type: "text",
190
+ text: JSON.stringify(result, null, 2)
191
+ }]
192
+ };
193
+ });
194
+ /**
195
+ * Tool: partner_profile
196
+ * Get the logged-in partner's profile
197
+ */
198
+ server.tool("partner_profile", "Get the logged-in partner's profile information. Requires partner_login first.", {}, async () => {
199
+ const result = await apiClient.getPartnerProfile();
200
+ return {
201
+ content: [{
202
+ type: "text",
203
+ text: JSON.stringify(result, null, 2)
204
+ }]
205
+ };
206
+ });
207
+ /**
208
+ * Tool: partner_verifications
209
+ * Get all verifications for the logged-in partner
210
+ */
211
+ server.tool("partner_verifications", "List all verifications for the logged-in partner with optional filters. Requires partner_login first.", {
212
+ status: z.enum(["PENDING", "IN_PROGRESS", "COMPLETED", "FAILED", "EXPIRED"])
213
+ .optional()
214
+ .describe("Filter by verification status"),
215
+ limit: z.number().min(1).max(100).optional().default(10)
216
+ .describe("Maximum number of results to return (1-100)"),
217
+ offset: z.number().min(0).optional().default(0)
218
+ .describe("Number of results to skip for pagination"),
219
+ search: z.string().optional()
220
+ .describe("Search by user name or email")
221
+ }, async ({ status, limit, offset, search }) => {
222
+ const result = await apiClient.getPartnerVerifications({
223
+ status,
224
+ limit,
225
+ offset,
226
+ search
227
+ });
228
+ return {
229
+ content: [{
230
+ type: "text",
231
+ text: JSON.stringify(result, null, 2)
232
+ }]
233
+ };
234
+ });
235
+ /**
236
+ * Tool: partner_verification_detail
237
+ * Get detailed information about a specific verification
238
+ */
239
+ server.tool("partner_verification_detail", "Get detailed information about a specific verification. Requires partner_login first.", {
240
+ verificationId: z.string().uuid().describe("The verification ID (UUID format)")
241
+ }, async ({ verificationId }) => {
242
+ const result = await apiClient.getPartnerVerificationById(verificationId);
243
+ return {
244
+ content: [{
245
+ type: "text",
246
+ text: JSON.stringify(result, null, 2)
247
+ }]
248
+ };
249
+ });
250
+ /**
251
+ * Tool: partner_usage_stats
252
+ * Get usage statistics for the logged-in partner
253
+ */
254
+ server.tool("partner_usage_stats", "Get usage statistics including verification counts, pass/fail rates, etc. Requires partner_login first.", {}, async () => {
255
+ const result = await apiClient.getPartnerUsageStats();
256
+ return {
257
+ content: [{
258
+ type: "text",
259
+ text: JSON.stringify(result, null, 2)
260
+ }]
261
+ };
262
+ });
263
+ /**
264
+ * Tool: partner_webhook_logs
265
+ * Get webhook delivery logs for the logged-in partner
266
+ */
267
+ server.tool("partner_webhook_logs", "Get webhook delivery logs showing all webhook attempts. Requires partner_login first.", {}, async () => {
268
+ const result = await apiClient.getPartnerWebhookLogs();
269
+ return {
270
+ content: [{
271
+ type: "text",
272
+ text: JSON.stringify(result, null, 2)
273
+ }]
274
+ };
275
+ });
276
+ /**
277
+ * Tool: partner_request_verification
278
+ * Request a new verification as a partner
279
+ */
280
+ server.tool("partner_request_verification", "Request a new identity verification. Requires partner_login first.", {
281
+ fullName: z.string().optional().describe("User's full legal name (for name matching)"),
282
+ email: z.string().email().optional().describe("User's email address for notifications"),
283
+ phone: z.string().optional().describe("User's phone number for SMS notifications"),
284
+ documentType: z.enum([
285
+ "PASSPORT",
286
+ "DRIVERS_LICENSE",
287
+ "NATIONAL_ID",
288
+ "HEALTH_CARD",
289
+ "OTHER"
290
+ ]).optional().describe("Expected document type")
291
+ }, async ({ fullName, email, phone, documentType }) => {
292
+ const result = await apiClient.requestVerification({
293
+ fullName,
294
+ email,
295
+ phone,
296
+ documentType
297
+ });
298
+ return {
299
+ content: [{
300
+ type: "text",
301
+ text: JSON.stringify(result, null, 2)
302
+ }]
303
+ };
304
+ });
305
+ /**
306
+ * Tool: partner_resend_email
307
+ * Resend verification email to user
308
+ */
309
+ server.tool("partner_resend_email", "Resend the verification email to the user. Requires partner_login first.", {
310
+ verificationId: z.string().uuid().describe("The verification ID")
311
+ }, async ({ verificationId }) => {
312
+ const result = await apiClient.resendVerificationEmail(verificationId);
313
+ return {
314
+ content: [{
315
+ type: "text",
316
+ text: JSON.stringify(result, null, 2)
317
+ }]
318
+ };
319
+ });
320
+ /**
321
+ * Tool: partner_resend_webhook
322
+ * Resend webhook for a verification
323
+ */
324
+ server.tool("partner_resend_webhook", "Resend the webhook notification for a completed verification. Requires partner_login first.", {
325
+ verificationId: z.string().uuid().describe("The verification ID")
326
+ }, async ({ verificationId }) => {
327
+ const result = await apiClient.resendWebhook(verificationId);
328
+ return {
329
+ content: [{
330
+ type: "text",
331
+ text: JSON.stringify(result, null, 2)
332
+ }]
333
+ };
334
+ });
335
+ // =============================================================================
336
+ // ADMIN TOOLS (API Key Auth - Partner Management)
337
+ // =============================================================================
338
+ /**
339
+ * Tool: admin_create_partner
340
+ * Create a new partner organization
341
+ */
342
+ server.tool("admin_create_partner", "Create a new partner organization. Requires admin API key.", {
343
+ name: z.string().describe("Partner's name"),
344
+ email: z.string().email().describe("Partner's email address (used for login)"),
345
+ password: z.string().min(8).describe("Partner's password (min 8 characters)"),
346
+ company: z.string().optional().describe("Partner's company name"),
347
+ webhookUrl: z.string().url().optional().describe("Webhook URL for verification callbacks")
348
+ }, async ({ name, email, password, company, webhookUrl }) => {
349
+ const result = await apiClient.createPartner({
350
+ name,
351
+ email,
352
+ password,
353
+ company,
354
+ webhookUrl
355
+ });
356
+ return {
357
+ content: [{
358
+ type: "text",
359
+ text: JSON.stringify(result, null, 2)
360
+ }]
361
+ };
362
+ });
363
+ /**
364
+ * Tool: admin_list_partners
365
+ * List all partners with optional filters
366
+ */
367
+ server.tool("admin_list_partners", "List all partners with optional filters. Requires admin API key.", {
368
+ limit: z.number().min(1).max(100).optional().default(10)
369
+ .describe("Maximum number of results to return (1-100)"),
370
+ offset: z.number().min(0).optional().default(0)
371
+ .describe("Number of results to skip for pagination"),
372
+ search: z.string().optional()
373
+ .describe("Search by partner name, email, or company"),
374
+ status: z.enum(["ACTIVE", "INACTIVE", "SUSPENDED"]).optional()
375
+ .describe("Filter by partner status")
376
+ }, async ({ limit, offset, search, status }) => {
377
+ const result = await apiClient.listPartners({
378
+ limit,
379
+ offset,
380
+ search,
381
+ status
382
+ });
383
+ return {
384
+ content: [{
385
+ type: "text",
386
+ text: JSON.stringify(result, null, 2)
387
+ }]
388
+ };
389
+ });
390
+ /**
391
+ * Tool: admin_get_partner
392
+ * Get partner details by ID
393
+ */
394
+ server.tool("admin_get_partner", "Get detailed information about a specific partner. Requires admin API key.", {
395
+ partnerId: z.string().uuid().describe("The partner ID (UUID format)")
396
+ }, async ({ partnerId }) => {
397
+ const result = await apiClient.getPartner(partnerId);
398
+ return {
399
+ content: [{
400
+ type: "text",
401
+ text: JSON.stringify(result, null, 2)
402
+ }]
403
+ };
404
+ });
405
+ /**
406
+ * Tool: admin_update_partner
407
+ * Update partner settings
408
+ */
409
+ server.tool("admin_update_partner", "Update a partner's settings. Requires admin API key.", {
410
+ partnerId: z.string().uuid().describe("The partner ID (UUID format)"),
411
+ name: z.string().optional().describe("Partner's new name"),
412
+ company: z.string().optional().describe("Partner's new company name"),
413
+ webhookUrl: z.string().url().optional().describe("New webhook URL"),
414
+ status: z.enum(["ACTIVE", "INACTIVE", "SUSPENDED"]).optional()
415
+ .describe("Partner status")
416
+ }, async ({ partnerId, name, company, webhookUrl, status }) => {
417
+ const result = await apiClient.updatePartner(partnerId, {
418
+ name,
419
+ company,
420
+ webhookUrl,
421
+ status
422
+ });
423
+ return {
424
+ content: [{
425
+ type: "text",
426
+ text: JSON.stringify(result, null, 2)
427
+ }]
428
+ };
429
+ });
430
+ /**
431
+ * Tool: admin_delete_partner
432
+ * Delete a partner
433
+ */
434
+ server.tool("admin_delete_partner", "Delete a partner organization. This action cannot be undone. Requires admin API key.", {
435
+ partnerId: z.string().uuid().describe("The partner ID (UUID format)")
436
+ }, async ({ partnerId }) => {
437
+ const result = await apiClient.deletePartner(partnerId);
438
+ return {
439
+ content: [{
440
+ type: "text",
441
+ text: JSON.stringify(result, null, 2)
442
+ }]
443
+ };
444
+ });
445
+ // =============================================================================
446
+ // SERVER STARTUP
447
+ // =============================================================================
448
+ async function main() {
449
+ console.error('[id-verify-mcp] Starting MCP server...');
450
+ console.error(`[id-verify-mcp] API URL: ${process.env.ID_VERIFY_API_URL || 'http://localhost:3000'}`);
451
+ console.error(`[id-verify-mcp] API Key: ${process.env.ID_VERIFY_API_KEY ? '***configured***' : 'NOT SET'}`);
452
+ const transport = new StdioServerTransport();
453
+ await server.connect(transport);
454
+ console.error('[id-verify-mcp] Server started successfully');
455
+ }
456
+ main().catch((error) => {
457
+ console.error('[id-verify-mcp] Fatal error:', error);
458
+ process.exit(1);
459
+ });
460
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}