acuity-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 (99) hide show
  1. package/README.md +541 -0
  2. package/dist/auth/device-flow.d.ts +46 -0
  3. package/dist/auth/device-flow.d.ts.map +1 -0
  4. package/dist/auth/device-flow.js +141 -0
  5. package/dist/auth/device-flow.js.map +1 -0
  6. package/dist/auth/http-auth.d.ts +25 -0
  7. package/dist/auth/http-auth.d.ts.map +1 -0
  8. package/dist/auth/http-auth.js +101 -0
  9. package/dist/auth/http-auth.js.map +1 -0
  10. package/dist/auth/jwt-validator.d.ts +20 -0
  11. package/dist/auth/jwt-validator.d.ts.map +1 -0
  12. package/dist/auth/jwt-validator.js +83 -0
  13. package/dist/auth/jwt-validator.js.map +1 -0
  14. package/dist/auth/token-storage.d.ts +88 -0
  15. package/dist/auth/token-storage.d.ts.map +1 -0
  16. package/dist/auth/token-storage.js +273 -0
  17. package/dist/auth/token-storage.js.map +1 -0
  18. package/dist/clients/hasura-client.d.ts +33 -0
  19. package/dist/clients/hasura-client.d.ts.map +1 -0
  20. package/dist/clients/hasura-client.js +79 -0
  21. package/dist/clients/hasura-client.js.map +1 -0
  22. package/dist/config/environments.d.ts +51 -0
  23. package/dist/config/environments.d.ts.map +1 -0
  24. package/dist/config/environments.js +183 -0
  25. package/dist/config/environments.js.map +1 -0
  26. package/dist/index.d.ts +7 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +593 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/server/http-server.d.ts +14 -0
  31. package/dist/server/http-server.d.ts.map +1 -0
  32. package/dist/server/http-server.js +167 -0
  33. package/dist/server/http-server.js.map +1 -0
  34. package/dist/server/mcp-core.d.ts +12 -0
  35. package/dist/server/mcp-core.d.ts.map +1 -0
  36. package/dist/server/mcp-core.js +200 -0
  37. package/dist/server/mcp-core.js.map +1 -0
  38. package/dist/tools/acuity-init.d.ts +84 -0
  39. package/dist/tools/acuity-init.d.ts.map +1 -0
  40. package/dist/tools/acuity-init.js +239 -0
  41. package/dist/tools/acuity-init.js.map +1 -0
  42. package/dist/tools/get-dashboard-summary.d.ts +96 -0
  43. package/dist/tools/get-dashboard-summary.d.ts.map +1 -0
  44. package/dist/tools/get-dashboard-summary.js +264 -0
  45. package/dist/tools/get-dashboard-summary.js.map +1 -0
  46. package/dist/tools/get-issue.d.ts +62 -0
  47. package/dist/tools/get-issue.d.ts.map +1 -0
  48. package/dist/tools/get-issue.js +150 -0
  49. package/dist/tools/get-issue.js.map +1 -0
  50. package/dist/tools/get-lesson-learned.d.ts +53 -0
  51. package/dist/tools/get-lesson-learned.d.ts.map +1 -0
  52. package/dist/tools/get-lesson-learned.js +117 -0
  53. package/dist/tools/get-lesson-learned.js.map +1 -0
  54. package/dist/tools/get-lookup-values.d.ts +41 -0
  55. package/dist/tools/get-lookup-values.d.ts.map +1 -0
  56. package/dist/tools/get-lookup-values.js +127 -0
  57. package/dist/tools/get-lookup-values.js.map +1 -0
  58. package/dist/tools/get-project.d.ts +131 -0
  59. package/dist/tools/get-project.d.ts.map +1 -0
  60. package/dist/tools/get-project.js +340 -0
  61. package/dist/tools/get-project.js.map +1 -0
  62. package/dist/tools/get-risk.d.ts +65 -0
  63. package/dist/tools/get-risk.d.ts.map +1 -0
  64. package/dist/tools/get-risk.js +173 -0
  65. package/dist/tools/get-risk.js.map +1 -0
  66. package/dist/tools/get-status-reports.d.ts +46 -0
  67. package/dist/tools/get-status-reports.d.ts.map +1 -0
  68. package/dist/tools/get-status-reports.js +151 -0
  69. package/dist/tools/get-status-reports.js.map +1 -0
  70. package/dist/tools/init-auth.d.ts +47 -0
  71. package/dist/tools/init-auth.d.ts.map +1 -0
  72. package/dist/tools/init-auth.js +213 -0
  73. package/dist/tools/init-auth.js.map +1 -0
  74. package/dist/tools/list-issues.d.ts +134 -0
  75. package/dist/tools/list-issues.d.ts.map +1 -0
  76. package/dist/tools/list-issues.js +285 -0
  77. package/dist/tools/list-issues.js.map +1 -0
  78. package/dist/tools/list-lessons-learned.d.ts +79 -0
  79. package/dist/tools/list-lessons-learned.d.ts.map +1 -0
  80. package/dist/tools/list-lessons-learned.js +155 -0
  81. package/dist/tools/list-lessons-learned.js.map +1 -0
  82. package/dist/tools/list-projects.d.ts +200 -0
  83. package/dist/tools/list-projects.d.ts.map +1 -0
  84. package/dist/tools/list-projects.js +396 -0
  85. package/dist/tools/list-projects.js.map +1 -0
  86. package/dist/tools/list-risks.d.ts +166 -0
  87. package/dist/tools/list-risks.d.ts.map +1 -0
  88. package/dist/tools/list-risks.js +356 -0
  89. package/dist/tools/list-risks.js.map +1 -0
  90. package/dist/tools/search-projects.d.ts +90 -0
  91. package/dist/tools/search-projects.d.ts.map +1 -0
  92. package/dist/tools/search-projects.js +191 -0
  93. package/dist/tools/search-projects.js.map +1 -0
  94. package/dist/utils/formatters.d.ts +12 -0
  95. package/dist/utils/formatters.d.ts.map +1 -0
  96. package/dist/utils/formatters.js +28 -0
  97. package/dist/utils/formatters.js.map +1 -0
  98. package/openapi.yaml +194 -0
  99. package/package.json +68 -0
@@ -0,0 +1,166 @@
1
+ /**
2
+ * MCP Tool: list_risks
3
+ * Lists all risks the user has access to with optional filtering
4
+ *
5
+ * Features:
6
+ * - Enum conversion: input strings → DB integers, DB integers → output strings
7
+ * - Hasura relationships: returns resolved names instead of IDs
8
+ * - Multiple filters: status, priority, severity, likelihood, risk_response, project_id
9
+ */
10
+ import type { HasuraClient } from '../clients/hasura-client.js';
11
+ export type RiskStatus = 'open' | 'closed' | 'realized';
12
+ export type RiskPriority = 'very_low' | 'low' | 'medium' | 'high' | 'critical';
13
+ export type RiskResponse = 'mitigate' | 'accept' | 'avoid' | 'watch' | 'transfer';
14
+ export type SeverityLevel = 'very_low' | 'low' | 'medium' | 'high' | 'very_high';
15
+ export type LikelihoodLevel = 'very_low' | 'low' | 'medium' | 'high' | 'very_high';
16
+ export interface ListRisksInput {
17
+ project_id?: number;
18
+ status?: RiskStatus | RiskStatus[];
19
+ priority?: RiskPriority | RiskPriority[];
20
+ severity?: SeverityLevel | SeverityLevel[];
21
+ likelihood?: LikelihoodLevel | LikelihoodLevel[];
22
+ risk_response?: RiskResponse | RiskResponse[];
23
+ order_by?: 'impact_score' | 'priority' | 'created_at' | 'updated_at';
24
+ limit?: number;
25
+ offset?: number;
26
+ }
27
+ export interface RiskListItem {
28
+ id: number;
29
+ risk_id: number;
30
+ name: string;
31
+ description: string | null;
32
+ notes: string | null;
33
+ hyperlinks: string | null;
34
+ status: RiskStatus;
35
+ priority: RiskPriority;
36
+ severity: SeverityLevel;
37
+ likelihood: LikelihoodLevel;
38
+ risk_response: RiskResponse;
39
+ impact_score: number;
40
+ response_plan: string | null;
41
+ created_at: string;
42
+ updated_at: string;
43
+ project: {
44
+ id: number;
45
+ name: string;
46
+ } | null;
47
+ owner: {
48
+ id: number;
49
+ name: string;
50
+ } | null;
51
+ }
52
+ export interface ListRisksResult {
53
+ risks: RiskListItem[];
54
+ total_count: number;
55
+ has_more: boolean;
56
+ offset: number;
57
+ }
58
+ /**
59
+ * List risks handler
60
+ */
61
+ export declare function listRisks(input: ListRisksInput, hasuraClient: HasuraClient): Promise<ListRisksResult>;
62
+ export declare const listRisksTool: {
63
+ name: string;
64
+ description: string;
65
+ inputSchema: {
66
+ type: string;
67
+ properties: {
68
+ project_id: {
69
+ type: string;
70
+ description: string;
71
+ };
72
+ status: {
73
+ oneOf: ({
74
+ type: string;
75
+ enum: string[];
76
+ items?: undefined;
77
+ } | {
78
+ type: string;
79
+ items: {
80
+ type: string;
81
+ enum: string[];
82
+ };
83
+ enum?: undefined;
84
+ })[];
85
+ description: string;
86
+ };
87
+ priority: {
88
+ oneOf: ({
89
+ type: string;
90
+ enum: string[];
91
+ items?: undefined;
92
+ } | {
93
+ type: string;
94
+ items: {
95
+ type: string;
96
+ enum: string[];
97
+ };
98
+ enum?: undefined;
99
+ })[];
100
+ description: string;
101
+ };
102
+ severity: {
103
+ oneOf: ({
104
+ type: string;
105
+ enum: string[];
106
+ items?: undefined;
107
+ } | {
108
+ type: string;
109
+ items: {
110
+ type: string;
111
+ enum: string[];
112
+ };
113
+ enum?: undefined;
114
+ })[];
115
+ description: string;
116
+ };
117
+ likelihood: {
118
+ oneOf: ({
119
+ type: string;
120
+ enum: string[];
121
+ items?: undefined;
122
+ } | {
123
+ type: string;
124
+ items: {
125
+ type: string;
126
+ enum: string[];
127
+ };
128
+ enum?: undefined;
129
+ })[];
130
+ description: string;
131
+ };
132
+ risk_response: {
133
+ oneOf: ({
134
+ type: string;
135
+ enum: string[];
136
+ items?: undefined;
137
+ } | {
138
+ type: string;
139
+ items: {
140
+ type: string;
141
+ enum: string[];
142
+ };
143
+ enum?: undefined;
144
+ })[];
145
+ description: string;
146
+ };
147
+ order_by: {
148
+ type: string;
149
+ enum: string[];
150
+ description: string;
151
+ default: string;
152
+ };
153
+ limit: {
154
+ type: string;
155
+ description: string;
156
+ default: number;
157
+ };
158
+ offset: {
159
+ type: string;
160
+ description: string;
161
+ default: number;
162
+ };
163
+ };
164
+ };
165
+ };
166
+ //# sourceMappingURL=list-risks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-risks.d.ts","sourceRoot":"","sources":["../../src/tools/list-risks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AACxD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAC/E,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAClF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AACjF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IAC3C,UAAU,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,CAAC;IACjD,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,cAAc,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,YAAY,CAAC;IAG5B,YAAY,EAAE,MAAM,CAAC;IAGrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAG7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiLD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,eAAe,CAAC,CA+H1B;AAMD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GzB,CAAC"}
@@ -0,0 +1,356 @@
1
+ /**
2
+ * MCP Tool: list_risks
3
+ * Lists all risks the user has access to with optional filtering
4
+ *
5
+ * Features:
6
+ * - Enum conversion: input strings → DB integers, DB integers → output strings
7
+ * - Hasura relationships: returns resolved names instead of IDs
8
+ * - Multiple filters: status, priority, severity, likelihood, risk_response, project_id
9
+ */
10
+ // ============================================================================
11
+ // Enum Mappings
12
+ // ============================================================================
13
+ /**
14
+ * Enum mappings: string → DB integer
15
+ * Verified against Rails model risk.rb
16
+ */
17
+ const STATUS_TO_DB = {
18
+ open: 0,
19
+ closed: 1,
20
+ realized: 2
21
+ };
22
+ const PRIORITY_TO_DB = {
23
+ very_low: 0,
24
+ low: 1,
25
+ medium: 2,
26
+ high: 3,
27
+ critical: 4
28
+ };
29
+ const RISK_RESPONSE_TO_DB = {
30
+ mitigate: 0,
31
+ accept: 1,
32
+ avoid: 2,
33
+ watch: 3,
34
+ transfer: 4
35
+ };
36
+ const SEVERITY_TO_DB = {
37
+ very_low: 0,
38
+ low: 1,
39
+ medium: 2,
40
+ high: 3,
41
+ very_high: 4
42
+ };
43
+ const LIKELIHOOD_TO_DB = {
44
+ very_low: 0,
45
+ low: 1,
46
+ medium: 2,
47
+ high: 3,
48
+ very_high: 4
49
+ };
50
+ /**
51
+ * Reverse mappings: DB integer → string
52
+ */
53
+ const DB_TO_STATUS = {
54
+ 0: 'open',
55
+ 1: 'closed',
56
+ 2: 'realized'
57
+ };
58
+ const DB_TO_PRIORITY = {
59
+ 0: 'very_low',
60
+ 1: 'low',
61
+ 2: 'medium',
62
+ 3: 'high',
63
+ 4: 'critical'
64
+ };
65
+ const DB_TO_RISK_RESPONSE = {
66
+ 0: 'mitigate',
67
+ 1: 'accept',
68
+ 2: 'avoid',
69
+ 3: 'watch',
70
+ 4: 'transfer'
71
+ };
72
+ const DB_TO_SEVERITY = {
73
+ 0: 'very_low',
74
+ 1: 'low',
75
+ 2: 'medium',
76
+ 3: 'high',
77
+ 4: 'very_high'
78
+ };
79
+ const DB_TO_LIKELIHOOD = {
80
+ 0: 'very_low',
81
+ 1: 'low',
82
+ 2: 'medium',
83
+ 3: 'high',
84
+ 4: 'very_high'
85
+ };
86
+ // ============================================================================
87
+ // Helper Functions
88
+ // ============================================================================
89
+ /**
90
+ * Convert enum values to DB integers for WHERE clause
91
+ */
92
+ function toDbValues(values, mapping) {
93
+ if (values === undefined)
94
+ return undefined;
95
+ const arr = Array.isArray(values) ? values : [values];
96
+ return arr.map(v => mapping[v]).filter(n => n !== undefined);
97
+ }
98
+ /**
99
+ * Convert a single DB integer to string
100
+ */
101
+ function fromDbValue(value, mapping) {
102
+ if (value === null || value === undefined)
103
+ return null;
104
+ return mapping[value] ?? null;
105
+ }
106
+ /**
107
+ * Transform raw DB risk to formatted output with resolved enums
108
+ */
109
+ function transformRisk(raw) {
110
+ return {
111
+ id: raw.id,
112
+ risk_id: raw.risk_id,
113
+ name: raw.name,
114
+ description: raw.description,
115
+ notes: raw.notes,
116
+ hyperlinks: raw.hyperlinks,
117
+ // Convert enums from integers to strings
118
+ status: fromDbValue(raw.status, DB_TO_STATUS) ?? 'open',
119
+ priority: fromDbValue(raw.priority, DB_TO_PRIORITY) ?? 'low',
120
+ severity: fromDbValue(raw.severity, DB_TO_SEVERITY) ?? 'very_low',
121
+ likelihood: fromDbValue(raw.likelihood, DB_TO_LIKELIHOOD) ?? 'very_low',
122
+ risk_response: fromDbValue(raw.risk_response, DB_TO_RISK_RESPONSE) ?? 'mitigate',
123
+ impact_score: raw.impact_score ?? 0,
124
+ response_plan: raw.response_plan,
125
+ created_at: raw.created_at,
126
+ updated_at: raw.updated_at,
127
+ // Relationships - transform company_project_resource to owner
128
+ project: raw.project,
129
+ owner: raw.company_project_resource
130
+ };
131
+ }
132
+ // ============================================================================
133
+ // Main Handler
134
+ // ============================================================================
135
+ /**
136
+ * List risks handler
137
+ */
138
+ export async function listRisks(input, hasuraClient) {
139
+ const { project_id, status, priority, severity, likelihood, risk_response, order_by = 'created_at', limit = 20, offset = 0 } = input;
140
+ // Build where conditions
141
+ const whereConditions = {};
142
+ // Project filter
143
+ if (project_id !== undefined) {
144
+ whereConditions.project_id = { _eq: project_id };
145
+ }
146
+ // Status filter
147
+ const statusValues = toDbValues(status, STATUS_TO_DB);
148
+ if (statusValues && statusValues.length > 0) {
149
+ whereConditions.status = statusValues.length === 1
150
+ ? { _eq: statusValues[0] }
151
+ : { _in: statusValues };
152
+ }
153
+ // Priority filter
154
+ const priorityValues = toDbValues(priority, PRIORITY_TO_DB);
155
+ if (priorityValues && priorityValues.length > 0) {
156
+ whereConditions.priority = priorityValues.length === 1
157
+ ? { _eq: priorityValues[0] }
158
+ : { _in: priorityValues };
159
+ }
160
+ // Severity filter
161
+ const severityValues = toDbValues(severity, SEVERITY_TO_DB);
162
+ if (severityValues && severityValues.length > 0) {
163
+ whereConditions.severity = severityValues.length === 1
164
+ ? { _eq: severityValues[0] }
165
+ : { _in: severityValues };
166
+ }
167
+ // Likelihood filter
168
+ const likelihoodValues = toDbValues(likelihood, LIKELIHOOD_TO_DB);
169
+ if (likelihoodValues && likelihoodValues.length > 0) {
170
+ whereConditions.likelihood = likelihoodValues.length === 1
171
+ ? { _eq: likelihoodValues[0] }
172
+ : { _in: likelihoodValues };
173
+ }
174
+ // Risk response filter
175
+ const riskResponseValues = toDbValues(risk_response, RISK_RESPONSE_TO_DB);
176
+ if (riskResponseValues && riskResponseValues.length > 0) {
177
+ whereConditions.risk_response = riskResponseValues.length === 1
178
+ ? { _eq: riskResponseValues[0] }
179
+ : { _in: riskResponseValues };
180
+ }
181
+ // Build order_by clause
182
+ let orderByClause = '{ created_at: desc }';
183
+ switch (order_by) {
184
+ case 'impact_score':
185
+ orderByClause = '{ impact_score: desc_nulls_last }';
186
+ break;
187
+ case 'priority':
188
+ orderByClause = '{ priority: desc }';
189
+ break;
190
+ case 'updated_at':
191
+ orderByClause = '{ updated_at: desc }';
192
+ break;
193
+ // 'created_at' is default
194
+ }
195
+ // Build GraphQL query with relationships
196
+ const whereClause = JSON.stringify(whereConditions).replace(/"([^"]+)":/g, '$1:');
197
+ const query = `
198
+ query ListRisks($limit: Int!, $offset: Int!) {
199
+ risks(
200
+ where: ${whereClause},
201
+ order_by: ${orderByClause},
202
+ limit: $limit,
203
+ offset: $offset
204
+ ) {
205
+ id
206
+ risk_id
207
+ name
208
+ description
209
+ notes
210
+ hyperlinks
211
+ status
212
+ priority
213
+ severity
214
+ likelihood
215
+ risk_response
216
+ impact_score
217
+ response_plan
218
+ created_at
219
+ updated_at
220
+
221
+ # Relationships - Hasura resolves automatically
222
+ project { id name }
223
+ company_project_resource { id name }
224
+ }
225
+
226
+ risks_aggregate(where: ${whereClause}) {
227
+ aggregate {
228
+ count
229
+ }
230
+ }
231
+ }
232
+ `;
233
+ const result = await hasuraClient.query(query, { limit, offset });
234
+ const totalCount = result.risks_aggregate.aggregate.count;
235
+ const transformedRisks = result.risks.map(transformRisk);
236
+ return {
237
+ risks: transformedRisks,
238
+ total_count: totalCount,
239
+ has_more: offset + result.risks.length < totalCount,
240
+ offset
241
+ };
242
+ }
243
+ // ============================================================================
244
+ // Tool Definition
245
+ // ============================================================================
246
+ export const listRisksTool = {
247
+ name: 'list_risks',
248
+ description: `
249
+ List risks the user has access to with optional filtering.
250
+
251
+ Returns risk information including:
252
+ - Identifiers: id, risk_id (human-readable within company)
253
+ - Content: name, description, notes, hyperlinks, response_plan
254
+ - Status & Classification: status, priority, severity, likelihood, risk_response
255
+ - Scoring: impact_score (calculated as severity × likelihood, range 1-25)
256
+ - Dates: created_at, updated_at
257
+ - Relationships with NAMES: project, owner (the person responsible)
258
+
259
+ FILTER VALUES:
260
+
261
+ status: "open", "closed", "realized"
262
+ - open = active risk being monitored
263
+ - closed = risk no longer relevant
264
+ - realized = risk has occurred
265
+
266
+ priority: "very_low", "low", "medium", "high", "critical"
267
+ - Indicates importance/urgency of addressing the risk
268
+
269
+ severity: "very_low", "low", "medium", "high", "very_high"
270
+ - Impact if risk occurs (1-5 scale)
271
+
272
+ likelihood: "very_low", "low", "medium", "high", "very_high"
273
+ - Probability of risk occurring (1-5 scale)
274
+
275
+ risk_response: "mitigate", "accept", "avoid", "watch", "transfer"
276
+ - mitigate = reduce probability or impact
277
+ - accept = acknowledge and take no action
278
+ - avoid = eliminate the risk source
279
+ - watch = monitor closely
280
+ - transfer = shift to third party (e.g., insurance)
281
+
282
+ SORTING:
283
+ - "created_at" (default) - newest first
284
+ - "updated_at" - recently updated first
285
+ - "impact_score" - highest impact first (severity × likelihood)
286
+ - "priority" - highest priority first
287
+
288
+ EXAMPLES:
289
+ - "Show all open risks" → status: "open"
290
+ - "High priority risks" → priority: ["high", "critical"]
291
+ - "Risks for project 123" → project_id: 123
292
+ - "Very high severity risks" → severity: ["high", "very_high"]
293
+ - "Top 10 highest impact risks" → order_by: "impact_score", limit: 10
294
+ `.trim(),
295
+ inputSchema: {
296
+ type: 'object',
297
+ properties: {
298
+ project_id: {
299
+ type: 'number',
300
+ description: 'Filter by project ID'
301
+ },
302
+ status: {
303
+ oneOf: [
304
+ { type: 'string', enum: ['open', 'closed', 'realized'] },
305
+ { type: 'array', items: { type: 'string', enum: ['open', 'closed', 'realized'] } }
306
+ ],
307
+ description: 'Filter by risk status. Can be single value or array.'
308
+ },
309
+ priority: {
310
+ oneOf: [
311
+ { type: 'string', enum: ['very_low', 'low', 'medium', 'high', 'critical'] },
312
+ { type: 'array', items: { type: 'string', enum: ['very_low', 'low', 'medium', 'high', 'critical'] } }
313
+ ],
314
+ description: 'Filter by priority level'
315
+ },
316
+ severity: {
317
+ oneOf: [
318
+ { type: 'string', enum: ['very_low', 'low', 'medium', 'high', 'very_high'] },
319
+ { type: 'array', items: { type: 'string', enum: ['very_low', 'low', 'medium', 'high', 'very_high'] } }
320
+ ],
321
+ description: 'Filter by severity (impact if risk occurs)'
322
+ },
323
+ likelihood: {
324
+ oneOf: [
325
+ { type: 'string', enum: ['very_low', 'low', 'medium', 'high', 'very_high'] },
326
+ { type: 'array', items: { type: 'string', enum: ['very_low', 'low', 'medium', 'high', 'very_high'] } }
327
+ ],
328
+ description: 'Filter by likelihood (probability of occurring)'
329
+ },
330
+ risk_response: {
331
+ oneOf: [
332
+ { type: 'string', enum: ['mitigate', 'accept', 'avoid', 'watch', 'transfer'] },
333
+ { type: 'array', items: { type: 'string', enum: ['mitigate', 'accept', 'avoid', 'watch', 'transfer'] } }
334
+ ],
335
+ description: 'Filter by risk response strategy'
336
+ },
337
+ order_by: {
338
+ type: 'string',
339
+ enum: ['impact_score', 'priority', 'created_at', 'updated_at'],
340
+ description: 'Sort order',
341
+ default: 'created_at'
342
+ },
343
+ limit: {
344
+ type: 'number',
345
+ description: 'Maximum risks to return (default: 20, max: 100)',
346
+ default: 20
347
+ },
348
+ offset: {
349
+ type: 'number',
350
+ description: 'Skip this many risks for pagination (default: 0)',
351
+ default: 0
352
+ }
353
+ }
354
+ }
355
+ };
356
+ //# sourceMappingURL=list-risks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-risks.js","sourceRoot":"","sources":["../../src/tools/list-risks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * MCP Tool: search_projects
3
+ * Search projects by name or description using text matching
4
+ *
5
+ * Uses PostgreSQL ILIKE for case-insensitive partial matching
6
+ */
7
+ import type { HasuraClient } from '../clients/hasura-client.js';
8
+ export type ProjectState = 'active' | 'hold' | 'completed' | 'cancelled' | 'pending';
9
+ export type StoplightStatus = 'green' | 'yellow' | 'red' | 'gray';
10
+ export type ProjectType = 'project' | 'proposal' | 'all';
11
+ export interface SearchProjectsInput {
12
+ query: string;
13
+ search_in?: ('name' | 'description' | 'project_id_key')[];
14
+ project_type?: ProjectType;
15
+ state?: ProjectState | ProjectState[];
16
+ limit?: number;
17
+ }
18
+ export interface SearchProjectResult {
19
+ id: number;
20
+ project_id_key: string | null;
21
+ name: string;
22
+ description: string | null;
23
+ project_type: 'project' | 'proposal';
24
+ state: ProjectState;
25
+ health_status: StoplightStatus | null;
26
+ percent_complete: number;
27
+ portfolio: {
28
+ id: number;
29
+ name: string;
30
+ } | null;
31
+ department: {
32
+ id: number;
33
+ name: string;
34
+ } | null;
35
+ }
36
+ export interface SearchProjectsResult {
37
+ projects: SearchProjectResult[];
38
+ total_count: number;
39
+ query: string;
40
+ }
41
+ export declare function searchProjects(input: SearchProjectsInput, hasuraClient: HasuraClient): Promise<SearchProjectsResult>;
42
+ export declare const searchProjectsTool: {
43
+ name: string;
44
+ description: string;
45
+ inputSchema: {
46
+ type: string;
47
+ properties: {
48
+ query: {
49
+ type: string;
50
+ description: string;
51
+ };
52
+ search_in: {
53
+ type: string;
54
+ items: {
55
+ type: string;
56
+ enum: string[];
57
+ };
58
+ description: string;
59
+ };
60
+ project_type: {
61
+ type: string;
62
+ enum: string[];
63
+ description: string;
64
+ default: string;
65
+ };
66
+ state: {
67
+ oneOf: ({
68
+ type: string;
69
+ enum: string[];
70
+ items?: undefined;
71
+ } | {
72
+ type: string;
73
+ items: {
74
+ type: string;
75
+ enum: string[];
76
+ };
77
+ enum?: undefined;
78
+ })[];
79
+ description: string;
80
+ };
81
+ limit: {
82
+ type: string;
83
+ description: string;
84
+ default: number;
85
+ };
86
+ };
87
+ required: string[];
88
+ };
89
+ };
90
+ //# sourceMappingURL=search-projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-projects.d.ts","sourceRoot":"","sources":["../../src/tools/search-projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMhE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AACrF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAC1D,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,SAAS,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/C,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AA+ED,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAiF/B;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkE9B,CAAC"}