@trustpager/mcp-server 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.
Files changed (61) hide show
  1. package/dist/index.d.ts +22 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +149 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/tools/activities.d.ts +7 -0
  6. package/dist/tools/activities.d.ts.map +1 -0
  7. package/dist/tools/activities.js +109 -0
  8. package/dist/tools/activities.js.map +1 -0
  9. package/dist/tools/ai.d.ts +7 -0
  10. package/dist/tools/ai.d.ts.map +1 -0
  11. package/dist/tools/ai.js +105 -0
  12. package/dist/tools/ai.js.map +1 -0
  13. package/dist/tools/automations.d.ts +7 -0
  14. package/dist/tools/automations.d.ts.map +1 -0
  15. package/dist/tools/automations.js +190 -0
  16. package/dist/tools/automations.js.map +1 -0
  17. package/dist/tools/communications.d.ts +7 -0
  18. package/dist/tools/communications.d.ts.map +1 -0
  19. package/dist/tools/communications.js +141 -0
  20. package/dist/tools/communications.js.map +1 -0
  21. package/dist/tools/contacts.d.ts +7 -0
  22. package/dist/tools/contacts.d.ts.map +1 -0
  23. package/dist/tools/contacts.js +125 -0
  24. package/dist/tools/contacts.js.map +1 -0
  25. package/dist/tools/customers.d.ts +7 -0
  26. package/dist/tools/customers.d.ts.map +1 -0
  27. package/dist/tools/customers.js +83 -0
  28. package/dist/tools/customers.js.map +1 -0
  29. package/dist/tools/deals.d.ts +7 -0
  30. package/dist/tools/deals.d.ts.map +1 -0
  31. package/dist/tools/deals.js +264 -0
  32. package/dist/tools/deals.js.map +1 -0
  33. package/dist/tools/documents.d.ts +7 -0
  34. package/dist/tools/documents.d.ts.map +1 -0
  35. package/dist/tools/documents.js +173 -0
  36. package/dist/tools/documents.js.map +1 -0
  37. package/dist/tools/forms.d.ts +7 -0
  38. package/dist/tools/forms.d.ts.map +1 -0
  39. package/dist/tools/forms.js +179 -0
  40. package/dist/tools/forms.js.map +1 -0
  41. package/dist/tools/pipelines.d.ts +7 -0
  42. package/dist/tools/pipelines.d.ts.map +1 -0
  43. package/dist/tools/pipelines.js +207 -0
  44. package/dist/tools/pipelines.js.map +1 -0
  45. package/dist/tools/platform.d.ts +7 -0
  46. package/dist/tools/platform.d.ts.map +1 -0
  47. package/dist/tools/platform.js +188 -0
  48. package/dist/tools/platform.js.map +1 -0
  49. package/dist/tools/products.d.ts +7 -0
  50. package/dist/tools/products.d.ts.map +1 -0
  51. package/dist/tools/products.js +105 -0
  52. package/dist/tools/products.js.map +1 -0
  53. package/dist/tools/tasks.d.ts +7 -0
  54. package/dist/tools/tasks.d.ts.map +1 -0
  55. package/dist/tools/tasks.js +130 -0
  56. package/dist/tools/tasks.js.map +1 -0
  57. package/dist/utils/api-client.d.ts +40 -0
  58. package/dist/utils/api-client.d.ts.map +1 -0
  59. package/dist/utils/api-client.js +98 -0
  60. package/dist/utils/api-client.js.map +1 -0
  61. package/package.json +44 -0
@@ -0,0 +1,105 @@
1
+ import { apiRequest, formatResponse, buildQuery, generateIdempotencyKey } from '../utils/api-client.js';
2
+ export const productTools = [
3
+ {
4
+ name: 'list_products',
5
+ description: 'List products with optional filters. Returns paginated results with cursor navigation.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ category: { type: 'string', description: 'Filter by category (service, product, subscription, etc.)' },
10
+ is_active: { type: 'boolean', description: 'Filter by active status' },
11
+ search: { type: 'string', description: 'Search by product name' },
12
+ limit: { type: 'number', description: 'Items per page (default 25, max 100)' },
13
+ after: { type: 'string', description: 'Cursor: get items after this ID' },
14
+ },
15
+ },
16
+ },
17
+ {
18
+ name: 'get_product',
19
+ description: 'Get a single product by ID with full details.',
20
+ inputSchema: {
21
+ type: 'object',
22
+ properties: { id: { type: 'string', description: 'Product UUID' } },
23
+ required: ['id'],
24
+ },
25
+ },
26
+ {
27
+ name: 'create_product',
28
+ description: 'Create a new product.',
29
+ inputSchema: {
30
+ type: 'object',
31
+ properties: {
32
+ name: { type: 'string', description: 'Product name (required)' },
33
+ price: { type: 'number', description: 'Product price (required)' },
34
+ currency: { type: 'string', description: 'Currency code (default AUD)' },
35
+ category: { type: 'string', description: 'Category (service, product, subscription, etc.)' },
36
+ unit: { type: 'string', description: 'Pricing unit (once-off, each, month, year, etc.)' },
37
+ description: { type: 'string', description: 'Product description' },
38
+ benefits: { type: 'array', items: { type: 'string' }, description: 'List of product benefits' },
39
+ deposit_percent: { type: 'number', description: 'Deposit percentage (0-100)' },
40
+ },
41
+ required: ['name', 'price'],
42
+ },
43
+ },
44
+ {
45
+ name: 'update_product',
46
+ description: 'Update an existing product. Only include fields you want to change.',
47
+ inputSchema: {
48
+ type: 'object',
49
+ properties: {
50
+ id: { type: 'string', description: 'Product UUID' },
51
+ name: { type: 'string' },
52
+ price: { type: 'number' },
53
+ currency: { type: 'string' },
54
+ category: { type: 'string' },
55
+ unit: { type: 'string' },
56
+ description: { type: 'string' },
57
+ benefits: { type: 'array', items: { type: 'string' } },
58
+ deposit_percent: { type: 'number' },
59
+ is_active: { type: 'boolean' },
60
+ },
61
+ required: ['id'],
62
+ },
63
+ },
64
+ {
65
+ name: 'delete_product',
66
+ description: 'Permanently delete a product.',
67
+ inputSchema: {
68
+ type: 'object',
69
+ properties: { id: { type: 'string', description: 'Product UUID' } },
70
+ required: ['id'],
71
+ },
72
+ },
73
+ ];
74
+ export async function handleProductTool(name, args) {
75
+ switch (name) {
76
+ case 'list_products': {
77
+ const { category, is_active, search, limit, after } = args;
78
+ const query = buildQuery({
79
+ category: category,
80
+ is_active: is_active,
81
+ search: search,
82
+ limit: limit,
83
+ after: after,
84
+ });
85
+ return formatResponse(await apiRequest('GET', `/products${query}`));
86
+ }
87
+ case 'get_product': {
88
+ return formatResponse(await apiRequest('GET', `/products/${args.id}`));
89
+ }
90
+ case 'create_product': {
91
+ const { id: _, ...body } = args;
92
+ return formatResponse(await apiRequest('POST', '/products', body, generateIdempotencyKey()));
93
+ }
94
+ case 'update_product': {
95
+ const { id, ...body } = args;
96
+ return formatResponse(await apiRequest('PATCH', `/products/${id}`, body));
97
+ }
98
+ case 'delete_product': {
99
+ return formatResponse(await apiRequest('DELETE', `/products/${args.id}`));
100
+ }
101
+ default:
102
+ return { text: `Unknown product tool: ${name}`, isError: true };
103
+ }
104
+ }
105
+ //# sourceMappingURL=products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ export declare const taskTools: Tool[];
3
+ export declare function handleTaskTool(name: string, args: Record<string, unknown>): Promise<{
4
+ text: string;
5
+ isError: boolean;
6
+ }>;
7
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,SAAS,EAAE,IAAI,EAsF3B,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;GAwC/E"}
@@ -0,0 +1,130 @@
1
+ import { apiRequest, formatResponse, buildQuery, generateIdempotencyKey } from '../utils/api-client.js';
2
+ export const taskTools = [
3
+ {
4
+ name: 'list_tasks',
5
+ description: 'List tasks with optional filters. Returns paginated results with cursor navigation.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ deal_id: { type: 'string', description: 'Filter by deal UUID' },
10
+ contact_id: { type: 'string', description: 'Filter by contact UUID' },
11
+ customer_id: { type: 'string', description: 'Filter by customer UUID' },
12
+ assigned_to: { type: 'string', description: 'Filter by assigned user UUID' },
13
+ status: { type: 'string', description: 'Filter by status' },
14
+ priority: { type: 'string', enum: ['low', 'medium', 'high', 'urgent'], description: 'Filter by priority' },
15
+ category: { type: 'string', description: 'Filter by category' },
16
+ limit: { type: 'number', description: 'Items per page (default 25, max 100)' },
17
+ after: { type: 'string', description: 'Cursor: get items after this ID' },
18
+ },
19
+ },
20
+ },
21
+ {
22
+ name: 'create_task',
23
+ description: 'Create a new task.',
24
+ inputSchema: {
25
+ type: 'object',
26
+ properties: {
27
+ title: { type: 'string', description: 'Task title (required)' },
28
+ description: { type: 'string', description: 'Task description' },
29
+ status: { type: 'string', description: 'Task status' },
30
+ priority: { type: 'string', enum: ['low', 'medium', 'high', 'urgent'], description: 'Task priority' },
31
+ category: { type: 'string', description: 'Task category' },
32
+ assigned_to: { type: 'string', description: 'User UUID to assign the task to' },
33
+ due_date: { type: 'string', description: 'Due date in ISO 8601 format' },
34
+ deal_id: { type: 'string', description: 'Link to a deal UUID' },
35
+ contact_id: { type: 'string', description: 'Link to a contact UUID' },
36
+ customer_id: { type: 'string', description: 'Link to a customer UUID' },
37
+ },
38
+ required: ['title'],
39
+ },
40
+ },
41
+ {
42
+ name: 'update_task',
43
+ description: 'Update an existing task. Only include fields you want to change.',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ id: { type: 'string', description: 'Task UUID' },
48
+ title: { type: 'string' },
49
+ description: { type: 'string' },
50
+ status: { type: 'string' },
51
+ priority: { type: 'string', enum: ['low', 'medium', 'high', 'urgent'] },
52
+ category: { type: 'string' },
53
+ assigned_to: { type: 'string' },
54
+ due_date: { type: 'string' },
55
+ deal_id: { type: 'string' },
56
+ contact_id: { type: 'string' },
57
+ customer_id: { type: 'string' },
58
+ },
59
+ required: ['id'],
60
+ },
61
+ },
62
+ {
63
+ name: 'delete_task',
64
+ description: 'Permanently delete a task.',
65
+ inputSchema: {
66
+ type: 'object',
67
+ properties: { id: { type: 'string', description: 'Task UUID' } },
68
+ required: ['id'],
69
+ },
70
+ },
71
+ {
72
+ name: 'complete_task',
73
+ description: 'Mark a task as completed.',
74
+ inputSchema: {
75
+ type: 'object',
76
+ properties: { id: { type: 'string', description: 'Task UUID' } },
77
+ required: ['id'],
78
+ },
79
+ },
80
+ {
81
+ name: 'list_task_categories',
82
+ description: 'List all available task categories.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {},
86
+ },
87
+ },
88
+ ];
89
+ export async function handleTaskTool(name, args) {
90
+ switch (name) {
91
+ case 'list_tasks': {
92
+ const { deal_id, contact_id, customer_id, assigned_to, status, priority, category, limit, after } = args;
93
+ const query = buildQuery({
94
+ deal_id: deal_id,
95
+ contact_id: contact_id,
96
+ customer_id: customer_id,
97
+ assigned_to: assigned_to,
98
+ status: status,
99
+ priority: priority,
100
+ category: category,
101
+ limit: limit,
102
+ after: after,
103
+ });
104
+ return formatResponse(await apiRequest('GET', `/tasks${query}`));
105
+ }
106
+ case 'create_task': {
107
+ const { id: _, ...body } = args;
108
+ return formatResponse(await apiRequest('POST', '/tasks', body, generateIdempotencyKey()));
109
+ }
110
+ case 'update_task': {
111
+ const { id, ...body } = args;
112
+ return formatResponse(await apiRequest('PATCH', `/tasks/${id}`, body));
113
+ }
114
+ case 'delete_task': {
115
+ return formatResponse(await apiRequest('DELETE', `/tasks/${args.id}`));
116
+ }
117
+ case 'complete_task': {
118
+ return formatResponse(await apiRequest('PATCH', `/tasks/${args.id}`, {
119
+ status: 'completed',
120
+ completed_at: new Date().toISOString(),
121
+ }));
122
+ }
123
+ case 'list_task_categories': {
124
+ return formatResponse(await apiRequest('GET', '/tasks/categories'));
125
+ }
126
+ default:
127
+ return { text: `Unknown task tool: ${name}`, isError: true };
128
+ }
129
+ }
130
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * TrustPager API Client
3
+ *
4
+ * Shared HTTP client used by all tool handlers.
5
+ * Reads API key and base URL from environment variables.
6
+ */
7
+ export declare function getConfig(): {
8
+ apiKey: string;
9
+ baseUrl: string;
10
+ };
11
+ export interface ApiResponse<T = unknown> {
12
+ ok: boolean;
13
+ status: number;
14
+ data?: T;
15
+ error?: {
16
+ code: string;
17
+ message: string;
18
+ details?: unknown;
19
+ };
20
+ }
21
+ /**
22
+ * Make an API request to TrustPager.
23
+ */
24
+ export declare function apiRequest<T = unknown>(method: string, path: string, body?: unknown, idempotencyKey?: string): Promise<ApiResponse<T>>;
25
+ /**
26
+ * Format an API response for Claude — returns the text content for the tool response.
27
+ */
28
+ export declare function formatResponse(res: ApiResponse): {
29
+ text: string;
30
+ isError: boolean;
31
+ };
32
+ /**
33
+ * Build a query string from params, omitting null/undefined values.
34
+ */
35
+ export declare function buildQuery(params: Record<string, string | number | boolean | null | undefined>): string;
36
+ /**
37
+ * Generate an idempotency key for write operations.
38
+ */
39
+ export declare function generateIdempotencyKey(): string;
40
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAgB,SAAS;;;EAWxB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAkDzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAenF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAQvG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * TrustPager API Client
3
+ *
4
+ * Shared HTTP client used by all tool handlers.
5
+ * Reads API key and base URL from environment variables.
6
+ */
7
+ const DEFAULT_BASE_URL = 'https://ucqwijexmjctglmrxlej.supabase.co/functions/v1/api/v1';
8
+ const TIMEOUT_MS = 30_000;
9
+ export function getConfig() {
10
+ const apiKey = process.env.TRUSTPAGER_API_KEY;
11
+ if (!apiKey) {
12
+ throw new Error('TRUSTPAGER_API_KEY environment variable is not set. ' +
13
+ 'Generate an API key at: Settings > API Keys in your TrustPager dashboard.');
14
+ }
15
+ const baseUrl = process.env.TRUSTPAGER_API_URL || DEFAULT_BASE_URL;
16
+ return { apiKey, baseUrl };
17
+ }
18
+ /**
19
+ * Make an API request to TrustPager.
20
+ */
21
+ export async function apiRequest(method, path, body, idempotencyKey) {
22
+ const { apiKey, baseUrl } = getConfig();
23
+ const headers = {
24
+ 'Authorization': `Bearer ${apiKey}`,
25
+ 'Content-Type': 'application/json',
26
+ };
27
+ if (idempotencyKey) {
28
+ headers['Idempotency-Key'] = idempotencyKey;
29
+ }
30
+ const controller = new AbortController();
31
+ const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS);
32
+ try {
33
+ const res = await fetch(`${baseUrl}${path}`, {
34
+ method,
35
+ headers,
36
+ body: body ? JSON.stringify(body) : undefined,
37
+ signal: controller.signal,
38
+ });
39
+ clearTimeout(timeout);
40
+ if (res.status === 204) {
41
+ return { ok: true, status: 204 };
42
+ }
43
+ const json = await res.json();
44
+ if (!res.ok) {
45
+ return {
46
+ ok: false,
47
+ status: res.status,
48
+ error: json.error || { code: 'UNKNOWN', message: `HTTP ${res.status}` },
49
+ };
50
+ }
51
+ return { ok: true, status: res.status, data: json.data ?? json };
52
+ }
53
+ catch (err) {
54
+ clearTimeout(timeout);
55
+ const message = err instanceof Error ? err.message : 'Unknown error';
56
+ if (message.includes('abort')) {
57
+ return { ok: false, status: 0, error: { code: 'TIMEOUT', message: `Request timed out after ${TIMEOUT_MS / 1000}s` } };
58
+ }
59
+ return { ok: false, status: 0, error: { code: 'NETWORK_ERROR', message } };
60
+ }
61
+ }
62
+ /**
63
+ * Format an API response for Claude — returns the text content for the tool response.
64
+ */
65
+ export function formatResponse(res) {
66
+ if (!res.ok) {
67
+ const errMsg = res.error?.message || 'Unknown error';
68
+ const details = res.error?.details ? `\nDetails: ${JSON.stringify(res.error.details, null, 2)}` : '';
69
+ const fix = res.error?.details?.fix ? `\nFix: ${(res.error?.details).fix}` : '';
70
+ return {
71
+ text: `Error (${res.error?.code || res.status}): ${errMsg}${fix}${details}`,
72
+ isError: true,
73
+ };
74
+ }
75
+ return {
76
+ text: JSON.stringify(res.data, null, 2),
77
+ isError: false,
78
+ };
79
+ }
80
+ /**
81
+ * Build a query string from params, omitting null/undefined values.
82
+ */
83
+ export function buildQuery(params) {
84
+ const parts = [];
85
+ for (const [key, value] of Object.entries(params)) {
86
+ if (value !== null && value !== undefined && value !== '') {
87
+ parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
88
+ }
89
+ }
90
+ return parts.length > 0 ? `?${parts.join('&')}` : '';
91
+ }
92
+ /**
93
+ * Generate an idempotency key for write operations.
94
+ */
95
+ export function generateIdempotencyKey() {
96
+ return `mcp-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
97
+ }
98
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/utils/api-client.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@trustpager/mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for TrustPager — connect Claude to your CRM",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "trustpager-mcp-server": "./dist/index.js"
9
+ },
10
+ "exports": {
11
+ ".": "./dist/index.js"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsx src/index.ts",
19
+ "debug": "npx @modelcontextprotocol/inspector node dist/index.js",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "keywords": [
23
+ "mcp",
24
+ "model-context-protocol",
25
+ "trustpager",
26
+ "crm",
27
+ "ai",
28
+ "claude"
29
+ ],
30
+ "author": "FinalPiece AI",
31
+ "license": "MIT",
32
+ "dependencies": {
33
+ "@modelcontextprotocol/sdk": "^1.0.0",
34
+ "zod": "^3.25.0"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "^22.0.0",
38
+ "typescript": "^5.5.0",
39
+ "tsx": "^4.7.0"
40
+ },
41
+ "engines": {
42
+ "node": ">=18.0.0"
43
+ }
44
+ }