@burdenoff/mcp-libs 2026.511.1
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/README.md +76 -0
- package/dist/chunk-4GBVJ4OY.js +847 -0
- package/dist/chunk-4GBVJ4OY.js.map +1 -0
- package/dist/chunk-H2OYWLOA.js +919 -0
- package/dist/chunk-H2OYWLOA.js.map +1 -0
- package/dist/chunk-JFEQYSWM.js +174 -0
- package/dist/chunk-JFEQYSWM.js.map +1 -0
- package/dist/chunk-WWFVD7BO.js +273 -0
- package/dist/chunk-WWFVD7BO.js.map +1 -0
- package/dist/context-1jV4NsLv.d.cts +138 -0
- package/dist/context-1jV4NsLv.d.ts +138 -0
- package/dist/core/index.cjs +953 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +59 -0
- package/dist/core/index.d.ts +59 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/http-BP4c721D.d.cts +22 -0
- package/dist/http-DXTeCD5r.d.ts +22 -0
- package/dist/index.cjs +1013 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/module-DBcfA-i3.d.ts +67 -0
- package/dist/module-DFQBZNK6.d.cts +67 -0
- package/dist/modules/auth/index.cjs +533 -0
- package/dist/modules/auth/index.cjs.map +1 -0
- package/dist/modules/auth/index.d.cts +51 -0
- package/dist/modules/auth/index.d.ts +51 -0
- package/dist/modules/auth/index.js +159 -0
- package/dist/modules/auth/index.js.map +1 -0
- package/dist/modules/billing/index.cjs +655 -0
- package/dist/modules/billing/index.cjs.map +1 -0
- package/dist/modules/billing/index.d.cts +8 -0
- package/dist/modules/billing/index.d.ts +8 -0
- package/dist/modules/billing/index.js +606 -0
- package/dist/modules/billing/index.js.map +1 -0
- package/dist/modules/channels/index.cjs +443 -0
- package/dist/modules/channels/index.cjs.map +1 -0
- package/dist/modules/channels/index.d.cts +8 -0
- package/dist/modules/channels/index.d.ts +8 -0
- package/dist/modules/channels/index.js +394 -0
- package/dist/modules/channels/index.js.map +1 -0
- package/dist/modules/conversations/index.cjs +288 -0
- package/dist/modules/conversations/index.cjs.map +1 -0
- package/dist/modules/conversations/index.d.cts +8 -0
- package/dist/modules/conversations/index.d.ts +8 -0
- package/dist/modules/conversations/index.js +239 -0
- package/dist/modules/conversations/index.js.map +1 -0
- package/dist/modules/devportal/index.cjs +796 -0
- package/dist/modules/devportal/index.cjs.map +1 -0
- package/dist/modules/devportal/index.d.cts +8 -0
- package/dist/modules/devportal/index.d.ts +8 -0
- package/dist/modules/devportal/index.js +747 -0
- package/dist/modules/devportal/index.js.map +1 -0
- package/dist/modules/export/index.cjs +333 -0
- package/dist/modules/export/index.cjs.map +1 -0
- package/dist/modules/export/index.d.cts +8 -0
- package/dist/modules/export/index.d.ts +8 -0
- package/dist/modules/export/index.js +284 -0
- package/dist/modules/export/index.js.map +1 -0
- package/dist/modules/files/index.cjs +278 -0
- package/dist/modules/files/index.cjs.map +1 -0
- package/dist/modules/files/index.d.cts +8 -0
- package/dist/modules/files/index.d.ts +8 -0
- package/dist/modules/files/index.js +229 -0
- package/dist/modules/files/index.js.map +1 -0
- package/dist/modules/groups/index.cjs +451 -0
- package/dist/modules/groups/index.cjs.map +1 -0
- package/dist/modules/groups/index.d.cts +8 -0
- package/dist/modules/groups/index.d.ts +8 -0
- package/dist/modules/groups/index.js +402 -0
- package/dist/modules/groups/index.js.map +1 -0
- package/dist/modules/health/index.cjs +159 -0
- package/dist/modules/health/index.cjs.map +1 -0
- package/dist/modules/health/index.d.cts +8 -0
- package/dist/modules/health/index.d.ts +8 -0
- package/dist/modules/health/index.js +36 -0
- package/dist/modules/health/index.js.map +1 -0
- package/dist/modules/integrations/index.cjs +316 -0
- package/dist/modules/integrations/index.cjs.map +1 -0
- package/dist/modules/integrations/index.d.cts +8 -0
- package/dist/modules/integrations/index.d.ts +8 -0
- package/dist/modules/integrations/index.js +267 -0
- package/dist/modules/integrations/index.js.map +1 -0
- package/dist/modules/notifications/index.cjs +222 -0
- package/dist/modules/notifications/index.cjs.map +1 -0
- package/dist/modules/notifications/index.d.cts +8 -0
- package/dist/modules/notifications/index.d.ts +8 -0
- package/dist/modules/notifications/index.js +173 -0
- package/dist/modules/notifications/index.js.map +1 -0
- package/dist/modules/organizations/index.cjs +267 -0
- package/dist/modules/organizations/index.cjs.map +1 -0
- package/dist/modules/organizations/index.d.cts +8 -0
- package/dist/modules/organizations/index.d.ts +8 -0
- package/dist/modules/organizations/index.js +218 -0
- package/dist/modules/organizations/index.js.map +1 -0
- package/dist/modules/products/index.cjs +736 -0
- package/dist/modules/products/index.cjs.map +1 -0
- package/dist/modules/products/index.d.cts +8 -0
- package/dist/modules/products/index.d.ts +8 -0
- package/dist/modules/products/index.js +687 -0
- package/dist/modules/products/index.js.map +1 -0
- package/dist/modules/rbac/index.cjs +378 -0
- package/dist/modules/rbac/index.cjs.map +1 -0
- package/dist/modules/rbac/index.d.cts +8 -0
- package/dist/modules/rbac/index.d.ts +8 -0
- package/dist/modules/rbac/index.js +329 -0
- package/dist/modules/rbac/index.js.map +1 -0
- package/dist/modules/sandbox/index.cjs +318 -0
- package/dist/modules/sandbox/index.cjs.map +1 -0
- package/dist/modules/sandbox/index.d.cts +8 -0
- package/dist/modules/sandbox/index.d.ts +8 -0
- package/dist/modules/sandbox/index.js +225 -0
- package/dist/modules/sandbox/index.js.map +1 -0
- package/dist/modules/scheduler/index.cjs +267 -0
- package/dist/modules/scheduler/index.cjs.map +1 -0
- package/dist/modules/scheduler/index.d.cts +8 -0
- package/dist/modules/scheduler/index.d.ts +8 -0
- package/dist/modules/scheduler/index.js +218 -0
- package/dist/modules/scheduler/index.js.map +1 -0
- package/dist/modules/security/index.cjs +529 -0
- package/dist/modules/security/index.cjs.map +1 -0
- package/dist/modules/security/index.d.cts +8 -0
- package/dist/modules/security/index.d.ts +8 -0
- package/dist/modules/security/index.js +480 -0
- package/dist/modules/security/index.js.map +1 -0
- package/dist/modules/store/index.cjs +450 -0
- package/dist/modules/store/index.cjs.map +1 -0
- package/dist/modules/store/index.d.cts +8 -0
- package/dist/modules/store/index.d.ts +8 -0
- package/dist/modules/store/index.js +401 -0
- package/dist/modules/store/index.js.map +1 -0
- package/dist/modules/support/index.cjs +285 -0
- package/dist/modules/support/index.cjs.map +1 -0
- package/dist/modules/support/index.d.cts +8 -0
- package/dist/modules/support/index.d.ts +8 -0
- package/dist/modules/support/index.js +236 -0
- package/dist/modules/support/index.js.map +1 -0
- package/dist/modules/tags/index.cjs +421 -0
- package/dist/modules/tags/index.cjs.map +1 -0
- package/dist/modules/tags/index.d.cts +8 -0
- package/dist/modules/tags/index.d.ts +8 -0
- package/dist/modules/tags/index.js +372 -0
- package/dist/modules/tags/index.js.map +1 -0
- package/dist/modules/tours/index.cjs +225 -0
- package/dist/modules/tours/index.cjs.map +1 -0
- package/dist/modules/tours/index.d.cts +8 -0
- package/dist/modules/tours/index.d.ts +8 -0
- package/dist/modules/tours/index.js +176 -0
- package/dist/modules/tours/index.js.map +1 -0
- package/dist/modules/vibecontrols/index.cjs +5551 -0
- package/dist/modules/vibecontrols/index.cjs.map +1 -0
- package/dist/modules/vibecontrols/index.d.cts +8 -0
- package/dist/modules/vibecontrols/index.d.ts +8 -0
- package/dist/modules/vibecontrols/index.js +4380 -0
- package/dist/modules/vibecontrols/index.js.map +1 -0
- package/dist/modules/workspaces/index.cjs +552 -0
- package/dist/modules/workspaces/index.cjs.map +1 -0
- package/dist/modules/workspaces/index.d.cts +8 -0
- package/dist/modules/workspaces/index.d.ts +8 -0
- package/dist/modules/workspaces/index.js +503 -0
- package/dist/modules/workspaces/index.js.map +1 -0
- package/dist/tool-name-CQf_IqAj.d.cts +47 -0
- package/dist/tool-name-DlnrBsZ6.d.ts +47 -0
- package/dist/transports/index.cjs +183 -0
- package/dist/transports/index.cjs.map +1 -0
- package/dist/transports/index.d.cts +13 -0
- package/dist/transports/index.d.ts +13 -0
- package/dist/transports/index.js +3 -0
- package/dist/transports/index.js.map +1 -0
- package/package.json +125 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { mcpToolName, jsonResult, errorResult } from '../../chunk-H2OYWLOA.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
// src/modules/organizations/operations.ts
|
|
5
|
+
var MY_ORGANIZATIONS = `
|
|
6
|
+
query MyOrganizations($limit: Int, $offset: Int) {
|
|
7
|
+
myOrganizations(limit: $limit, offset: $offset) {
|
|
8
|
+
items {
|
|
9
|
+
id
|
|
10
|
+
name
|
|
11
|
+
slug
|
|
12
|
+
tenantId
|
|
13
|
+
description
|
|
14
|
+
status
|
|
15
|
+
createdAt
|
|
16
|
+
updatedAt
|
|
17
|
+
}
|
|
18
|
+
total
|
|
19
|
+
hasMore
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
var MY_ORGANIZATION_INVITES = `
|
|
24
|
+
query MyOrganizationInvites($status: InviteStatus, $limit: Int, $offset: Int) {
|
|
25
|
+
myOrganizationInvites(status: $status, limit: $limit, offset: $offset) {
|
|
26
|
+
items {
|
|
27
|
+
id
|
|
28
|
+
organizationId
|
|
29
|
+
email
|
|
30
|
+
role
|
|
31
|
+
status
|
|
32
|
+
expiresAt
|
|
33
|
+
message
|
|
34
|
+
createdAt
|
|
35
|
+
}
|
|
36
|
+
total
|
|
37
|
+
hasMore
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
var ACCEPT_ORG_INVITE = `
|
|
42
|
+
mutation AcceptOrganizationInvite($inviteId: ID!) {
|
|
43
|
+
acceptOrganizationInvite(inviteId: $inviteId) {
|
|
44
|
+
id
|
|
45
|
+
userId
|
|
46
|
+
organizationId
|
|
47
|
+
role
|
|
48
|
+
joinedAt
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
var REJECT_ORG_INVITE = `
|
|
53
|
+
mutation RejectOrganizationInvite($inviteId: ID!) {
|
|
54
|
+
rejectOrganizationInvite(inviteId: $inviteId) {
|
|
55
|
+
id
|
|
56
|
+
status
|
|
57
|
+
respondedAt
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
|
|
62
|
+
// src/modules/organizations/tools.ts
|
|
63
|
+
var InviteStatusEnum = z.enum(["PENDING", "ACCEPTED", "REJECTED", "EXPIRED", "REVOKED"]);
|
|
64
|
+
function registerOrganizationsTools(server, ctx, track) {
|
|
65
|
+
server.registerTool(
|
|
66
|
+
track(mcpToolName(ctx.productName, "organizations_list")),
|
|
67
|
+
{
|
|
68
|
+
title: "List Organizations",
|
|
69
|
+
description: "List organizations the current user is a member of.",
|
|
70
|
+
inputSchema: {
|
|
71
|
+
limit: z.number().optional().describe("Page size"),
|
|
72
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
async ({ limit, offset }) => {
|
|
76
|
+
try {
|
|
77
|
+
const data = await ctx.gql.global.request(MY_ORGANIZATIONS, {
|
|
78
|
+
limit: limit ?? 50,
|
|
79
|
+
offset: offset ?? 0
|
|
80
|
+
});
|
|
81
|
+
return jsonResult(data.myOrganizations);
|
|
82
|
+
} catch (error) {
|
|
83
|
+
ctx.logger.error("organizations_list failed", { error: String(error) });
|
|
84
|
+
return errorResult(
|
|
85
|
+
`Failed to list organizations: ${error instanceof Error ? error.message : String(error)}`
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
server.registerTool(
|
|
91
|
+
track(mcpToolName(ctx.productName, "organizations_current")),
|
|
92
|
+
{
|
|
93
|
+
title: "Current Organization",
|
|
94
|
+
description: "Return the current organization context from the auth store.",
|
|
95
|
+
inputSchema: {}
|
|
96
|
+
},
|
|
97
|
+
async () => {
|
|
98
|
+
try {
|
|
99
|
+
const auth = ctx.auth.read();
|
|
100
|
+
if (!auth?.organizationId) {
|
|
101
|
+
return errorResult(
|
|
102
|
+
"No active organization context. Run the auth login flow to bind a tenant."
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
return jsonResult({
|
|
106
|
+
organizationId: auth.organizationId,
|
|
107
|
+
workspaceId: auth.workspaceId ?? null
|
|
108
|
+
});
|
|
109
|
+
} catch (error) {
|
|
110
|
+
ctx.logger.error("organizations_current failed", { error: String(error) });
|
|
111
|
+
return errorResult(
|
|
112
|
+
`Failed to read current organization: ${error instanceof Error ? error.message : String(error)}`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
);
|
|
117
|
+
server.registerTool(
|
|
118
|
+
track(mcpToolName(ctx.productName, "organizations_invites_list")),
|
|
119
|
+
{
|
|
120
|
+
title: "List Organization Invites",
|
|
121
|
+
description: "List organization invites for the current user.",
|
|
122
|
+
inputSchema: {
|
|
123
|
+
status: InviteStatusEnum.optional().describe("Filter by invite status (default: PENDING)"),
|
|
124
|
+
limit: z.number().optional().describe("Page size"),
|
|
125
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
async ({ status, limit, offset }) => {
|
|
129
|
+
try {
|
|
130
|
+
const data = await ctx.gql.global.request(
|
|
131
|
+
MY_ORGANIZATION_INVITES,
|
|
132
|
+
{
|
|
133
|
+
status: status ?? "PENDING",
|
|
134
|
+
limit: limit ?? 50,
|
|
135
|
+
offset: offset ?? 0
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
return jsonResult(data.myOrganizationInvites);
|
|
139
|
+
} catch (error) {
|
|
140
|
+
ctx.logger.error("organizations_invites_list failed", { error: String(error) });
|
|
141
|
+
return errorResult(
|
|
142
|
+
`Failed to list organization invites: ${error instanceof Error ? error.message : String(error)}`
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
);
|
|
147
|
+
server.registerTool(
|
|
148
|
+
track(mcpToolName(ctx.productName, "organizations_invites_accept")),
|
|
149
|
+
{
|
|
150
|
+
title: "Accept Organization Invite",
|
|
151
|
+
description: "Accept a pending organization invite.",
|
|
152
|
+
inputSchema: {
|
|
153
|
+
invitationId: z.string().describe("Invite ID")
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
async ({ invitationId }) => {
|
|
157
|
+
try {
|
|
158
|
+
const data = await ctx.gql.global.request(
|
|
159
|
+
ACCEPT_ORG_INVITE,
|
|
160
|
+
{ inviteId: invitationId }
|
|
161
|
+
);
|
|
162
|
+
return jsonResult(data.acceptOrganizationInvite);
|
|
163
|
+
} catch (error) {
|
|
164
|
+
ctx.logger.error("organizations_invites_accept failed", { error: String(error) });
|
|
165
|
+
return errorResult(
|
|
166
|
+
`Failed to accept invite: ${error instanceof Error ? error.message : String(error)}`
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
server.registerTool(
|
|
172
|
+
track(mcpToolName(ctx.productName, "organizations_invites_decline")),
|
|
173
|
+
{
|
|
174
|
+
title: "Decline Organization Invite",
|
|
175
|
+
description: "Decline a pending organization invite.",
|
|
176
|
+
inputSchema: {
|
|
177
|
+
invitationId: z.string().describe("Invite ID")
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
async ({ invitationId }) => {
|
|
181
|
+
try {
|
|
182
|
+
const data = await ctx.gql.global.request(
|
|
183
|
+
REJECT_ORG_INVITE,
|
|
184
|
+
{ inviteId: invitationId }
|
|
185
|
+
);
|
|
186
|
+
return jsonResult(data.rejectOrganizationInvite);
|
|
187
|
+
} catch (error) {
|
|
188
|
+
ctx.logger.error("organizations_invites_decline failed", { error: String(error) });
|
|
189
|
+
return errorResult(
|
|
190
|
+
`Failed to decline invite: ${error instanceof Error ? error.message : String(error)}`
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// src/modules/organizations/index.ts
|
|
198
|
+
var organizationsModule = {
|
|
199
|
+
id: "organizations",
|
|
200
|
+
version: "0.0.1",
|
|
201
|
+
displayName: "Organizations",
|
|
202
|
+
dependsOn: ["auth"],
|
|
203
|
+
capabilities: { tools: {} },
|
|
204
|
+
register(server, ctx) {
|
|
205
|
+
const tools = [];
|
|
206
|
+
const track = (n) => {
|
|
207
|
+
tools.push(n);
|
|
208
|
+
return n;
|
|
209
|
+
};
|
|
210
|
+
registerOrganizationsTools(server, ctx, track);
|
|
211
|
+
return { tools, resources: [], prompts: [] };
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
var organizations_default = organizationsModule;
|
|
215
|
+
|
|
216
|
+
export { organizations_default as default };
|
|
217
|
+
//# sourceMappingURL=index.js.map
|
|
218
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/organizations/operations.ts","../../../src/modules/organizations/tools.ts","../../../src/modules/organizations/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const MY_ORGANIZATIONS = `\n query MyOrganizations($limit: Int, $offset: Int) {\n myOrganizations(limit: $limit, offset: $offset) {\n items {\n id\n name\n slug\n tenantId\n description\n status\n createdAt\n updatedAt\n }\n total\n hasMore\n }\n }\n`;\n\nexport const MY_ORGANIZATION_INVITES = `\n query MyOrganizationInvites($status: InviteStatus, $limit: Int, $offset: Int) {\n myOrganizationInvites(status: $status, limit: $limit, offset: $offset) {\n items {\n id\n organizationId\n email\n role\n status\n expiresAt\n message\n createdAt\n }\n total\n hasMore\n }\n }\n`;\n\nexport const ACCEPT_ORG_INVITE = `\n mutation AcceptOrganizationInvite($inviteId: ID!) {\n acceptOrganizationInvite(inviteId: $inviteId) {\n id\n userId\n organizationId\n role\n joinedAt\n }\n }\n`;\n\nexport const REJECT_ORG_INVITE = `\n mutation RejectOrganizationInvite($inviteId: ID!) {\n rejectOrganizationInvite(inviteId: $inviteId) {\n id\n status\n respondedAt\n }\n }\n`;\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport {\n MY_ORGANIZATIONS,\n MY_ORGANIZATION_INVITES,\n ACCEPT_ORG_INVITE,\n REJECT_ORG_INVITE,\n} from './operations.js';\n\nconst InviteStatusEnum = z.enum(['PENDING', 'ACCEPTED', 'REJECTED', 'EXPIRED', 'REVOKED']);\n\nexport function registerOrganizationsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'organizations_list')),\n {\n title: 'List Organizations',\n description: 'List organizations the current user is a member of.',\n inputSchema: {\n limit: z.number().optional().describe('Page size'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ limit, offset }) => {\n try {\n const data = await ctx.gql.global.request<{ myOrganizations: unknown }>(MY_ORGANIZATIONS, {\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.myOrganizations);\n } catch (error) {\n ctx.logger.error('organizations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list organizations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'organizations_current')),\n {\n title: 'Current Organization',\n description: 'Return the current organization context from the auth store.',\n inputSchema: {},\n },\n async () => {\n try {\n const auth = ctx.auth.read();\n if (!auth?.organizationId) {\n return errorResult(\n 'No active organization context. Run the auth login flow to bind a tenant.',\n );\n }\n return jsonResult({\n organizationId: auth.organizationId,\n workspaceId: auth.workspaceId ?? null,\n });\n } catch (error) {\n ctx.logger.error('organizations_current failed', { error: String(error) });\n return errorResult(\n `Failed to read current organization: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'organizations_invites_list')),\n {\n title: 'List Organization Invites',\n description: 'List organization invites for the current user.',\n inputSchema: {\n status: InviteStatusEnum.optional().describe('Filter by invite status (default: PENDING)'),\n limit: z.number().optional().describe('Page size'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ status, limit, offset }) => {\n try {\n const data = await ctx.gql.global.request<{ myOrganizationInvites: unknown }>(\n MY_ORGANIZATION_INVITES,\n {\n status: status ?? 'PENDING',\n limit: limit ?? 50,\n offset: offset ?? 0,\n },\n );\n return jsonResult(data.myOrganizationInvites);\n } catch (error) {\n ctx.logger.error('organizations_invites_list failed', { error: String(error) });\n return errorResult(\n `Failed to list organization invites: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'organizations_invites_accept')),\n {\n title: 'Accept Organization Invite',\n description: 'Accept a pending organization invite.',\n inputSchema: {\n invitationId: z.string().describe('Invite ID'),\n },\n },\n async ({ invitationId }) => {\n try {\n const data = await ctx.gql.global.request<{ acceptOrganizationInvite: unknown }>(\n ACCEPT_ORG_INVITE,\n { inviteId: invitationId },\n );\n return jsonResult(data.acceptOrganizationInvite);\n } catch (error) {\n ctx.logger.error('organizations_invites_accept failed', { error: String(error) });\n return errorResult(\n `Failed to accept invite: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'organizations_invites_decline')),\n {\n title: 'Decline Organization Invite',\n description: 'Decline a pending organization invite.',\n inputSchema: {\n invitationId: z.string().describe('Invite ID'),\n },\n },\n async ({ invitationId }) => {\n try {\n const data = await ctx.gql.global.request<{ rejectOrganizationInvite: unknown }>(\n REJECT_ORG_INVITE,\n { inviteId: invitationId },\n );\n return jsonResult(data.rejectOrganizationInvite);\n } catch (error) {\n ctx.logger.error('organizations_invites_decline failed', { error: String(error) });\n return errorResult(\n `Failed to decline invite: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Organizations module — multi-tenant org membership + invite acceptance.\n *\n * Tools:\n * <product>_organizations_{list,current}\n * <product>_organizations_invites_{list,accept,decline}\n *\n * Backend: ~/products/global/tenant/global-tenant-svc/.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerOrganizationsTools } from './tools.js';\n\nconst organizationsModule: McpModule = {\n id: 'organizations',\n version: '0.0.1',\n displayName: 'Organizations',\n dependsOn: ['auth'],\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerOrganizationsTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default organizationsModule;\n"]}
|