@signdocs-brasil/mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +121 -0
  3. package/dist/annotations.d.ts +31 -0
  4. package/dist/annotations.js +29 -0
  5. package/dist/annotations.js.map +1 -0
  6. package/dist/bin/stdio.d.ts +2 -0
  7. package/dist/bin/stdio.js +19 -0
  8. package/dist/bin/stdio.js.map +1 -0
  9. package/dist/client.d.ts +35 -0
  10. package/dist/client.js +80 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/http/server.d.ts +34 -0
  13. package/dist/http/server.js +38 -0
  14. package/dist/http/server.js.map +1 -0
  15. package/dist/resources.d.ts +2 -0
  16. package/dist/resources.js +91 -0
  17. package/dist/resources.js.map +1 -0
  18. package/dist/schemas.d.ts +179 -0
  19. package/dist/schemas.js +169 -0
  20. package/dist/schemas.js.map +1 -0
  21. package/dist/server.d.ts +9 -0
  22. package/dist/server.js +38 -0
  23. package/dist/server.js.map +1 -0
  24. package/dist/tools/documents.d.ts +2 -0
  25. package/dist/tools/documents.js +22 -0
  26. package/dist/tools/documents.js.map +1 -0
  27. package/dist/tools/envelopes.d.ts +2 -0
  28. package/dist/tools/envelopes.js +59 -0
  29. package/dist/tools/envelopes.js.map +1 -0
  30. package/dist/tools/evidence.d.ts +2 -0
  31. package/dist/tools/evidence.js +13 -0
  32. package/dist/tools/evidence.js.map +1 -0
  33. package/dist/tools/helpers.d.ts +20 -0
  34. package/dist/tools/helpers.js +33 -0
  35. package/dist/tools/helpers.js.map +1 -0
  36. package/dist/tools/signingSessions.d.ts +2 -0
  37. package/dist/tools/signingSessions.js +70 -0
  38. package/dist/tools/signingSessions.js.map +1 -0
  39. package/dist/tools/transactions.d.ts +2 -0
  40. package/dist/tools/transactions.js +37 -0
  41. package/dist/tools/transactions.js.map +1 -0
  42. package/dist/tools/verify.d.ts +2 -0
  43. package/dist/tools/verify.js +39 -0
  44. package/dist/tools/verify.js.map +1 -0
  45. package/dist/tools/webhooks.d.ts +2 -0
  46. package/dist/tools/webhooks.js +35 -0
  47. package/dist/tools/webhooks.js.map +1 -0
  48. package/package.json +49 -0
@@ -0,0 +1,70 @@
1
+ import { getClient, buildSigningUrl } from '../client.js';
2
+ import { CONFIRM_WARNING, DESTRUCTIVE, READ_ONLY, WRITE_SAFE } from '../annotations.js';
3
+ import { run, idempotencyKey } from './helpers.js';
4
+ import { createSigningSessionShape, sessionIdShape, listSigningSessionsShape, resendOtpShape, } from '../schemas.js';
5
+ export function registerSigningSessionTools(server) {
6
+ server.registerTool('create_signing_session', {
7
+ title: 'Create signing session',
8
+ description: CONFIRM_WARNING +
9
+ 'Create a single-signer "express" signing (or action-authentication) session and return its ' +
10
+ 'IDs plus a ready-to-share `signingUrl` (url + embed token). Consumes signature quota.',
11
+ inputSchema: createSigningSessionShape,
12
+ annotations: DESTRUCTIVE,
13
+ }, async (args) => run(async () => {
14
+ const req = {
15
+ purpose: args.purpose,
16
+ policy: {
17
+ profile: args.policyProfile,
18
+ ...(args.customSteps ? { customSteps: args.customSteps } : {}),
19
+ },
20
+ signer: args.signer,
21
+ ...(args.documentBase64
22
+ ? { document: { content: args.documentBase64, filename: args.documentFilename } }
23
+ : {}),
24
+ ...(args.action ? { action: args.action } : {}),
25
+ ...(args.returnUrl ? { returnUrl: args.returnUrl } : {}),
26
+ ...(args.cancelUrl ? { cancelUrl: args.cancelUrl } : {}),
27
+ ...(args.metadata ? { metadata: args.metadata } : {}),
28
+ ...(args.locale ? { locale: args.locale } : {}),
29
+ ...(args.expiresInMinutes ? { expiresInMinutes: args.expiresInMinutes } : {}),
30
+ ...(args.owner ? { owner: args.owner } : {}),
31
+ };
32
+ const session = await getClient().signingSessions.create(req, idempotencyKey(args.idempotencyKey));
33
+ return { ...session, signingUrl: buildSigningUrl(session.url, session.clientSecret) };
34
+ }));
35
+ server.registerTool('get_signing_session_status', {
36
+ title: 'Get signing session status',
37
+ description: 'Poll the current status of a signing session (ACTIVE/COMPLETED/CANCELLED/EXPIRED/FAILED).',
38
+ inputSchema: sessionIdShape,
39
+ annotations: READ_ONLY,
40
+ }, async (args) => run(() => getClient().signingSessions.getStatus(args.sessionId)));
41
+ server.registerTool('get_signing_session', {
42
+ title: 'Get signing session details',
43
+ description: 'Get full bootstrap data for a signing session (signer, steps, document, appearance).',
44
+ inputSchema: sessionIdShape,
45
+ annotations: READ_ONLY,
46
+ }, async (args) => run(() => getClient().signingSessions.get(args.sessionId)));
47
+ server.registerTool('list_signing_sessions', {
48
+ title: 'List signing sessions',
49
+ description: 'List signing sessions filtered by status, with cursor pagination.',
50
+ inputSchema: listSigningSessionsShape,
51
+ annotations: READ_ONLY,
52
+ }, async (args) => run(() => getClient().signingSessions.list({
53
+ status: args.status,
54
+ ...(args.limit !== undefined ? { limit: args.limit } : {}),
55
+ ...(args.cursor ? { cursor: args.cursor } : {}),
56
+ })));
57
+ server.registerTool('cancel_signing_session', {
58
+ title: 'Cancel signing session',
59
+ description: CONFIRM_WARNING + 'Cancel an active signing session. This cannot be undone.',
60
+ inputSchema: sessionIdShape,
61
+ annotations: DESTRUCTIVE,
62
+ }, async (args) => run(() => getClient().signingSessions.cancel(args.sessionId)));
63
+ server.registerTool('resend_signing_session_otp', {
64
+ title: 'Resend signing session OTP',
65
+ description: 'Resend the OTP challenge for a signing session, optionally over a specific channel (email/sms).',
66
+ inputSchema: resendOtpShape,
67
+ annotations: WRITE_SAFE,
68
+ }, async (args) => run(() => getClient().signingSessions.resendOtp(args.sessionId, args.channel ? { channel: args.channel } : undefined)));
69
+ }
70
+ //# sourceMappingURL=signingSessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signingSessions.js","sourceRoot":"","sources":["../../src/tools/signingSessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerTransactionTools(server: McpServer): void;
@@ -0,0 +1,37 @@
1
+ import { getClient } from '../client.js';
2
+ import { CONFIRM_WARNING, DESTRUCTIVE, READ_ONLY } from '../annotations.js';
3
+ import { run } from './helpers.js';
4
+ import { listTransactionsShape, transactionIdShape } from '../schemas.js';
5
+ export function registerTransactionTools(server) {
6
+ server.registerTool('list_transactions', {
7
+ title: 'List / find transactions',
8
+ description: 'Search transactions by status, signer external ID, document group, or date range (cursor pagination). ' +
9
+ 'Use this to find a transaction or check signing history.',
10
+ inputSchema: listTransactionsShape,
11
+ annotations: READ_ONLY,
12
+ }, async (args) => {
13
+ const params = {
14
+ ...(args.status ? { status: args.status } : {}),
15
+ ...(args.userExternalId ? { userExternalId: args.userExternalId } : {}),
16
+ ...(args.documentGroupId ? { documentGroupId: args.documentGroupId } : {}),
17
+ ...(args.limit !== undefined ? { limit: args.limit } : {}),
18
+ ...(args.nextToken ? { nextToken: args.nextToken } : {}),
19
+ ...(args.startDate ? { startDate: args.startDate } : {}),
20
+ ...(args.endDate ? { endDate: args.endDate } : {}),
21
+ };
22
+ return run(() => getClient().transactions.list(params));
23
+ });
24
+ server.registerTool('get_transaction', {
25
+ title: 'Get transaction',
26
+ description: 'Get full details of a single transaction, including its steps and results.',
27
+ inputSchema: transactionIdShape,
28
+ annotations: READ_ONLY,
29
+ }, async (args) => run(() => getClient().transactions.get(args.transactionId)));
30
+ server.registerTool('cancel_transaction', {
31
+ title: 'Cancel transaction',
32
+ description: CONFIRM_WARNING + 'Cancel a low-level transaction. This cannot be undone.',
33
+ inputSchema: transactionIdShape,
34
+ annotations: DESTRUCTIVE,
35
+ }, async (args) => run(() => getClient().transactions.cancel(args.transactionId)));
36
+ }
37
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,wGAAwG;YACxG,0DAA0D;QAC5D,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,SAAS;KACvB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAA0B;YACpC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;QACF,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,SAAS;KACvB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAC5E,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,eAAe,GAAG,wDAAwD;QACvF,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAC/E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerVerifyTools(server: McpServer): void;
@@ -0,0 +1,39 @@
1
+ import { getClient, getResolvedEnv } from '../client.js';
2
+ import { CONFIRM_WARNING, DESTRUCTIVE, READ_ONLY } from '../annotations.js';
3
+ import { run, errorContent } from './helpers.js';
4
+ import { verifyEvidenceShape, verifyEnvelopeShape, verifyDocumentShape } from '../schemas.js';
5
+ export function registerVerifyTools(server) {
6
+ server.registerTool('verify_evidence', {
7
+ title: 'Verify evidence (public)',
8
+ description: 'Publicly verify a completed signature by its evidenceId. Returns status, document/evidence hashes, ' +
9
+ 'steps and signer display info. No authentication needed.',
10
+ inputSchema: verifyEvidenceShape,
11
+ annotations: READ_ONLY,
12
+ }, async (args) => run(() => getClient().verification.verify(args.evidenceId)));
13
+ server.registerTool('verify_envelope', {
14
+ title: 'Verify envelope (public)',
15
+ description: 'Publicly verify all signers of an envelope and get consolidated download URLs.',
16
+ inputSchema: verifyEnvelopeShape,
17
+ annotations: READ_ONLY,
18
+ }, async (args) => run(() => getClient().verification.verifyEnvelope(args.envelopeId)));
19
+ server.registerTool('verify_document', {
20
+ title: 'Verify document signatures',
21
+ description: CONFIRM_WARNING +
22
+ 'Inspect an uploaded PDF for embedded electronic/digital signatures. ' +
23
+ 'Requires PRODUCTION credentials + the verification:write scope and CONSUMES verification quota. ' +
24
+ 'Not available in HML.',
25
+ inputSchema: verifyDocumentShape,
26
+ annotations: DESTRUCTIVE,
27
+ }, async (args) => {
28
+ const env = getResolvedEnv();
29
+ if (env.environment !== 'production') {
30
+ return errorContent(new Error('verify_document is PRODUCTION-only — the signature-detection backend is not provisioned in HML. ' +
31
+ 'Set SIGNDOCS_ENVIRONMENT=production with a production credential to use it.'));
32
+ }
33
+ return run(() => getClient().verification.verifyDocument({
34
+ content: args.documentBase64,
35
+ ...(args.filename ? { filename: args.filename } : {}),
36
+ }));
37
+ });
38
+ }
39
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/tools/verify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE9F,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,qGAAqG;YACrG,0DAA0D;QAC5D,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,SAAS;KACvB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAC5E,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,gFAAgF;QAC7F,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,SAAS;KACvB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACpF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,eAAe;YACf,sEAAsE;YACtE,kGAAkG;YAClG,uBAAuB;QACzB,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;YACrC,OAAO,YAAY,CACjB,IAAI,KAAK,CACP,kGAAkG;gBAChG,6EAA6E,CAChF,CACF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,GAAG,EAAE,CACd,SAAS,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerWebhookTools(server: McpServer): void;
@@ -0,0 +1,35 @@
1
+ import { getClient } from '../client.js';
2
+ import { CONFIRM_WARNING, DESTRUCTIVE, READ_ONLY, WRITE_SAFE } from '../annotations.js';
3
+ import { run } from './helpers.js';
4
+ import { registerWebhookShape, webhookIdShape } from '../schemas.js';
5
+ export function registerWebhookTools(server) {
6
+ server.registerTool('register_webhook', {
7
+ title: 'Register webhook',
8
+ description: 'Register an HTTPS endpoint to receive event notifications. The response returns a signing secret ' +
9
+ '— store it to verify the HMAC-SHA256 signature on incoming payloads.',
10
+ inputSchema: registerWebhookShape,
11
+ annotations: WRITE_SAFE,
12
+ }, async (args) => run(() => getClient().webhooks.register({ url: args.url, events: args.events })));
13
+ server.registerTool('list_webhooks', {
14
+ title: 'List webhooks',
15
+ description: 'List all registered webhooks for the tenant.',
16
+ inputSchema: {},
17
+ annotations: READ_ONLY,
18
+ }, async () => run(() => getClient().webhooks.list()));
19
+ server.registerTool('delete_webhook', {
20
+ title: 'Delete webhook',
21
+ description: CONFIRM_WARNING + 'Delete a registered webhook. Event delivery to it stops immediately.',
22
+ inputSchema: webhookIdShape,
23
+ annotations: DESTRUCTIVE,
24
+ }, async (args) => run(async () => {
25
+ await getClient().webhooks.delete(args.webhookId);
26
+ return { webhookId: args.webhookId, deleted: true };
27
+ }));
28
+ server.registerTool('test_webhook', {
29
+ title: 'Test webhook',
30
+ description: 'Send a sample payload to a registered webhook and return the delivery result.',
31
+ inputSchema: webhookIdShape,
32
+ annotations: WRITE_SAFE,
33
+ }, async (args) => run(() => getClient().webhooks.test(args.webhookId)));
34
+ }
35
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErE,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,mGAAmG;YACnG,sEAAsE;QACxE,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,UAAU;KACxB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,GAAG,CAAC,GAAG,EAAE,CACP,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAA4B,EAAE,CAAC,CAC5F,CACJ,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,SAAS;KACvB,EACD,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CACnD,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,eAAe,GAAG,sEAAsE;QACrG,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,GAAG,CAAC,KAAK,IAAI,EAAE;QACb,MAAM,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,UAAU;KACxB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@signdocs-brasil/mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "Model Context Protocol (MCP) server for the SignDocs Brasil e-signature API — lets AI agents create signing sessions, manage envelopes, verify documents and more.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=18"
9
+ },
10
+ "bin": {
11
+ "signdocs-mcp": "dist/bin/stdio.js"
12
+ },
13
+ "main": "dist/server.js",
14
+ "types": "dist/server.d.ts",
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.json && chmod +x dist/bin/stdio.js",
22
+ "typecheck": "tsc -p tsconfig.json --noEmit",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "inspect": "npm run build && npx @modelcontextprotocol/inspector node dist/bin/stdio.js",
26
+ "start": "node dist/bin/stdio.js",
27
+ "prepublishOnly": "npm run build && npm test"
28
+ },
29
+ "keywords": [
30
+ "mcp",
31
+ "model-context-protocol",
32
+ "signdocs",
33
+ "e-signature",
34
+ "assinatura-eletronica",
35
+ "icp-brasil",
36
+ "ai",
37
+ "llm"
38
+ ],
39
+ "dependencies": {
40
+ "@modelcontextprotocol/sdk": "^1.29.0",
41
+ "@signdocs-brasil/api": "^1.6.1",
42
+ "zod": "^3.25.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^22.0.0",
46
+ "typescript": "^5.5.0",
47
+ "vitest": "^2.1.0"
48
+ }
49
+ }