@basicbit/vrchat-mcp 0.1.5 → 0.1.7
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/CHANGELOG.md +11 -0
- package/LICENSE +21 -21
- package/README.md +39 -9
- package/assets/logo.svg +58 -39
- package/dist/package.json +10 -4
- package/dist/src/auth/index.js +65 -3
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/config/defaults.json +4 -2
- package/dist/src/config/index.js +23 -12
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/core/client.js +27 -4
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/generatedOperations.js +133 -0
- package/dist/src/core/generatedOperations.js.map +1 -0
- package/dist/src/core/generatedToolDescriptions.js +26 -0
- package/dist/src/core/generatedToolDescriptions.js.map +1 -0
- package/dist/src/core/generatedToolOverrides.js +19 -61
- package/dist/src/core/generatedToolOverrides.js.map +1 -1
- package/dist/src/core/generatedToolSkips.js +6 -23
- package/dist/src/core/generatedToolSkips.js.map +1 -1
- package/dist/src/core/operationDetails.js +96 -0
- package/dist/src/core/operationDetails.js.map +1 -0
- package/dist/src/core/operationPolicy.js +32 -0
- package/dist/src/core/operationPolicy.js.map +1 -0
- package/dist/src/core/readToolRegistry.js +35 -81
- package/dist/src/core/readToolRegistry.js.map +1 -1
- package/dist/src/core/writeToolRegistry.js +59 -101
- package/dist/src/core/writeToolRegistry.js.map +1 -1
- package/dist/src/models/avatars.js +2 -1
- package/dist/src/models/avatars.js.map +1 -1
- package/dist/src/models/common.js +4 -0
- package/dist/src/models/common.js.map +1 -0
- package/dist/src/models/events.js +8 -4
- package/dist/src/models/events.js.map +1 -1
- package/dist/src/models/favorites.js +120 -0
- package/dist/src/models/favorites.js.map +1 -0
- package/dist/src/models/friends.js +7 -6
- package/dist/src/models/friends.js.map +1 -1
- package/dist/src/models/groups.js +91 -5
- package/dist/src/models/groups.js.map +1 -1
- package/dist/src/models/invites.js +81 -3
- package/dist/src/models/invites.js.map +1 -1
- package/dist/src/models/statusPage.js +9 -0
- package/dist/src/models/statusPage.js.map +1 -1
- package/dist/src/models/users.js +3 -2
- package/dist/src/models/users.js.map +1 -1
- package/dist/src/models/worlds.js +2 -1
- package/dist/src/models/worlds.js.map +1 -1
- package/dist/src/schemas/read.js +22 -9
- package/dist/src/schemas/read.js.map +1 -1
- package/dist/src/schemas/write.js +17 -3
- package/dist/src/schemas/write.js.map +1 -1
- package/dist/src/services/api/client.js +20 -0
- package/dist/src/services/api/client.js.map +1 -1
- package/dist/src/services/events/curated.js +37 -3
- package/dist/src/services/events/curated.js.map +1 -1
- package/dist/src/services/favorites/index.js +106 -0
- package/dist/src/services/favorites/index.js.map +1 -0
- package/dist/src/services/groups/index.js +1 -0
- package/dist/src/services/groups/index.js.map +1 -1
- package/dist/src/services/groups/roles.js +75 -0
- package/dist/src/services/groups/roles.js.map +1 -0
- package/dist/src/services/invites/bulk.js +310 -0
- package/dist/src/services/invites/bulk.js.map +1 -0
- package/dist/src/services/invites/curated.js +203 -5
- package/dist/src/services/invites/curated.js.map +1 -1
- package/dist/src/services/invites/messages.js +65 -0
- package/dist/src/services/invites/messages.js.map +1 -0
- package/dist/src/services/statusPage/curated.js +42 -5
- package/dist/src/services/statusPage/curated.js.map +1 -1
- package/dist/src/tools/auth.js +4 -4
- package/dist/src/tools/auth.js.map +1 -1
- package/dist/src/tools/curated/events.js +4 -3
- package/dist/src/tools/curated/events.js.map +1 -1
- package/dist/src/tools/curated/favorites.js +79 -0
- package/dist/src/tools/curated/favorites.js.map +1 -0
- package/dist/src/tools/curated/groups.js +88 -3
- package/dist/src/tools/curated/groups.js.map +1 -1
- package/dist/src/tools/curated/invites.js +78 -2
- package/dist/src/tools/curated/invites.js.map +1 -1
- package/dist/src/tools/generated.js +4 -4
- package/dist/src/tools/generated.js.map +1 -1
- package/dist/src/tools/raw.js +4 -7
- package/dist/src/tools/raw.js.map +1 -1
- package/dist/src/tools/read/system.js +98 -0
- package/dist/src/tools/read/system.js.map +1 -1
- package/dist/src/tools/registerAllTools.js +2 -0
- package/dist/src/tools/registerAllTools.js.map +1 -1
- package/dist/src/utils/toolNames.js +0 -6
- package/dist/src/utils/toolNames.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/curated-tools.md +28 -5
- package/docs/privacy.md +23 -0
- package/docs/robust-notes.md +29 -0
- package/docs/tools-guide.md +9 -3
- package/docs/tools.md +3641 -8201
- package/docs/vrcx.md +1 -1
- package/package.json +10 -4
- package/server.json +3 -3
- package/skills/vrchat-mcp/SKILL.md +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/tools/curated/invites.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/tools/curated/invites.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { registerGeneratedReadTools } from '../core/readToolRegistry.js';
|
|
2
2
|
import { registerGeneratedWriteTools } from '../core/writeToolRegistry.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { GeneratedReadToolOutputSchema, ReadOptionsSchema } from '../schemas/read.js';
|
|
4
|
+
import { GeneratedWriteToolOutputSchema, WriteOptionsSchema } from '../schemas/write.js';
|
|
5
5
|
import { readToolResponse } from './read/common.js';
|
|
6
6
|
import { writeToolResponse } from './write/common.js';
|
|
7
7
|
export async function registerGeneratedTools(server) {
|
|
8
8
|
await registerGeneratedReadTools(server, {
|
|
9
9
|
readOptionsSchema: ReadOptionsSchema,
|
|
10
|
-
readOutputSchema:
|
|
10
|
+
readOutputSchema: GeneratedReadToolOutputSchema,
|
|
11
11
|
respond: readToolResponse,
|
|
12
12
|
});
|
|
13
13
|
await registerGeneratedWriteTools(server, {
|
|
14
14
|
writeOptionsSchema: WriteOptionsSchema,
|
|
15
|
-
writeOutputSchema:
|
|
15
|
+
writeOutputSchema: GeneratedWriteToolOutputSchema,
|
|
16
16
|
respond: writeToolResponse,
|
|
17
17
|
});
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../../src/tools/generated.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../../src/tools/generated.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAiB;IAC5D,MAAM,0BAA0B,CAAC,MAAM,EAAE;QACvC,iBAAiB,EAAE,iBAAiB;QACpC,gBAAgB,EAAE,6BAA6B;QAC/C,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IACH,MAAM,2BAA2B,CAAC,MAAM,EAAE;QACxC,kBAAkB,EAAE,kBAAkB;QACtC,iBAAiB,EAAE,8BAA8B;QACjD,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/tools/raw.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { callOperation, CallError } from '../core/client.js';
|
|
3
|
+
import { getBlockedOperationReason } from '../core/operationPolicy.js';
|
|
3
4
|
import { CallInputSchema } from '../schemas/call.js';
|
|
4
5
|
import { writeToolAnnotations } from '../utils/toolAnnotations.js';
|
|
5
6
|
import { toolName } from '../utils/toolNames.js';
|
|
6
7
|
import { toolError } from '../utils/toolResponses.js';
|
|
7
|
-
const RAW_BLOCKED_OPERATION_IDS = new Set([
|
|
8
|
-
'getGroupAnnouncements',
|
|
9
|
-
'createGroupAnnouncement',
|
|
10
|
-
'deleteGroupAnnouncement',
|
|
11
|
-
]);
|
|
12
8
|
export function registerRawTools(server) {
|
|
13
9
|
server.registerTool(toolName('vrchat.call'), {
|
|
14
10
|
description: 'Call a VRChat OpenAPI operation by operationId.',
|
|
@@ -22,8 +18,9 @@ export function registerRawTools(server) {
|
|
|
22
18
|
}),
|
|
23
19
|
annotations: writeToolAnnotations,
|
|
24
20
|
}, async (args) => {
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
const blockedReason = getBlockedOperationReason(args.operationId);
|
|
22
|
+
if (blockedReason) {
|
|
23
|
+
return toolError(`Operation ${args.operationId} is disabled: ${blockedReason}`);
|
|
27
24
|
}
|
|
28
25
|
try {
|
|
29
26
|
const result = await callOperation(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw.js","sourceRoot":"","sources":["../../../src/tools/raw.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAkB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,
|
|
1
|
+
{"version":3,"file":"raw.js","sourceRoot":"","sources":["../../../src/tools/raw.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAkB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,aAAa,CAAC,EACvB;QACE,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YACpD,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC;QACF,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAe,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,SAAS,CACd,aAAa,IAAI,CAAC,WAAW,iBAAiB,aAAa,EAAE,CAC9D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;gBACD,iBAAiB,EAAE,MAA4C;aAChE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACrE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,65 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { generatedToolStatusValues, listGeneratedOperations, } from '../../core/generatedOperations.js';
|
|
3
|
+
import { getOperationDetails } from '../../core/operationDetails.js';
|
|
1
4
|
import { ReadOptionsSchema } from '../../schemas/read.js';
|
|
5
|
+
import { readOnlyToolAnnotations } from '../../utils/toolAnnotations.js';
|
|
6
|
+
import { toolName } from '../../utils/toolNames.js';
|
|
7
|
+
import { textContent, toolError } from '../../utils/toolResponses.js';
|
|
2
8
|
import { registerReadTool } from './common.js';
|
|
9
|
+
const OperationDetailsInputSchema = z.object({
|
|
10
|
+
operationId: z.string().describe('VRChat OpenAPI operationId.'),
|
|
11
|
+
});
|
|
12
|
+
const OperationsInputSchema = z.object({
|
|
13
|
+
kind: z.enum(['read', 'write', 'delete']).describe('Operation kind.').optional(),
|
|
14
|
+
view: z.enum(['available', 'all']).describe('Show available generated ops or all ops.').optional(),
|
|
15
|
+
query: z.string().describe('Filter operationId, path, summary, or description.').optional(),
|
|
16
|
+
limit: z.number().int().min(1).max(500).describe('Max operations.').optional(),
|
|
17
|
+
});
|
|
18
|
+
const OperationSummarySchema = z.object({
|
|
19
|
+
operationId: z.string(),
|
|
20
|
+
kind: z.enum(['read', 'write', 'delete']),
|
|
21
|
+
method: z.string(),
|
|
22
|
+
path: z.string(),
|
|
23
|
+
summary: z.string().optional(),
|
|
24
|
+
description: z.string().optional(),
|
|
25
|
+
generatedToolStatus: z.enum(generatedToolStatusValues),
|
|
26
|
+
generatedToolName: z.string().optional(),
|
|
27
|
+
curatedToolName: z.string().optional(),
|
|
28
|
+
blockedReason: z.string().optional(),
|
|
29
|
+
});
|
|
30
|
+
const OperationsOutputSchema = z.object({
|
|
31
|
+
total: z.number().int().min(0),
|
|
32
|
+
truncated: z.boolean(),
|
|
33
|
+
operations: z.array(OperationSummarySchema),
|
|
34
|
+
});
|
|
35
|
+
const OperationDetailsOutputSchema = z.object({
|
|
36
|
+
operationId: z.string(),
|
|
37
|
+
method: z.string(),
|
|
38
|
+
path: z.string(),
|
|
39
|
+
summary: z.string().optional(),
|
|
40
|
+
description: z.string().optional(),
|
|
41
|
+
generatedToolStatus: z.enum(generatedToolStatusValues),
|
|
42
|
+
generatedToolName: z.string().optional(),
|
|
43
|
+
curatedToolName: z.string().optional(),
|
|
44
|
+
blockedReason: z.string().optional(),
|
|
45
|
+
parameters: z.array(z.object({
|
|
46
|
+
name: z.string(),
|
|
47
|
+
in: z.enum(['path', 'query', 'header', 'cookie']),
|
|
48
|
+
required: z.boolean(),
|
|
49
|
+
description: z.string().optional(),
|
|
50
|
+
schemaRef: z.string().optional(),
|
|
51
|
+
schema: z.unknown().optional(),
|
|
52
|
+
})),
|
|
53
|
+
requestBody: z
|
|
54
|
+
.object({
|
|
55
|
+
required: z.boolean(),
|
|
56
|
+
description: z.string().optional(),
|
|
57
|
+
contentTypes: z.array(z.string()).optional(),
|
|
58
|
+
schemaRef: z.string().optional(),
|
|
59
|
+
schema: z.unknown().optional(),
|
|
60
|
+
})
|
|
61
|
+
.optional(),
|
|
62
|
+
});
|
|
3
63
|
export function registerSystemReadTools(server) {
|
|
4
64
|
registerReadTool({
|
|
5
65
|
server,
|
|
@@ -15,5 +75,43 @@ export function registerSystemReadTools(server) {
|
|
|
15
75
|
operationId: 'getSystemTime',
|
|
16
76
|
inputSchema: ReadOptionsSchema,
|
|
17
77
|
});
|
|
78
|
+
server.registerTool(toolName('vrchat.operations'), {
|
|
79
|
+
description: 'List VRChat OpenAPI operationIds and generated-tool availability for vrchat_read/vrchat_write/vrchat_delete.',
|
|
80
|
+
inputSchema: OperationsInputSchema,
|
|
81
|
+
outputSchema: OperationsOutputSchema,
|
|
82
|
+
annotations: readOnlyToolAnnotations,
|
|
83
|
+
}, async (args) => {
|
|
84
|
+
try {
|
|
85
|
+
const input = OperationsInputSchema.parse(args ?? {});
|
|
86
|
+
const result = await listGeneratedOperations(input);
|
|
87
|
+
return {
|
|
88
|
+
content: textContent(JSON.stringify(result, null, 2)),
|
|
89
|
+
structuredContent: result,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
94
|
+
return toolError(message);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
server.registerTool(toolName('vrchat.operation_details'), {
|
|
98
|
+
description: 'Look up exact OpenAPI params and request body schema for a VRChat operationId.',
|
|
99
|
+
inputSchema: OperationDetailsInputSchema,
|
|
100
|
+
outputSchema: OperationDetailsOutputSchema,
|
|
101
|
+
annotations: readOnlyToolAnnotations,
|
|
102
|
+
}, async (args) => {
|
|
103
|
+
try {
|
|
104
|
+
const { operationId } = OperationDetailsInputSchema.parse(args ?? {});
|
|
105
|
+
const details = await getOperationDetails(operationId);
|
|
106
|
+
return {
|
|
107
|
+
content: textContent(JSON.stringify(details, null, 2)),
|
|
108
|
+
structuredContent: details,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
113
|
+
return toolError(message);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
18
116
|
}
|
|
19
117
|
//# sourceMappingURL=system.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../../../src/tools/read/system.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,gBAAgB,CAAC;QACf,MAAM;QACN,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAC;IAEH,gBAAgB,CAAC;QACf,MAAM;QACN,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../../../src/tools/read/system.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { registerAuthTools } from './auth.js';
|
|
|
2
2
|
import { registerCacheTools } from './cache.js';
|
|
3
3
|
import { registerCuratedAvatarTools } from './curated/avatars.js';
|
|
4
4
|
import { registerCuratedEventTools } from './curated/events.js';
|
|
5
|
+
import { registerCuratedFavoriteTools } from './curated/favorites.js';
|
|
5
6
|
import { registerCuratedFriendTools } from './curated/friends.js';
|
|
6
7
|
import { registerCuratedGroupTools } from './curated/groups.js';
|
|
7
8
|
import { registerCuratedInstanceTools } from './curated/instances.js';
|
|
@@ -24,6 +25,7 @@ export async function registerAllTools(server) {
|
|
|
24
25
|
registerCuratedFriendTools(server);
|
|
25
26
|
registerCuratedAvatarTools(server);
|
|
26
27
|
registerCuratedEventTools(server);
|
|
28
|
+
registerCuratedFavoriteTools(server);
|
|
27
29
|
registerCuratedGroupTools(server);
|
|
28
30
|
registerCuratedInstanceTools(server);
|
|
29
31
|
registerCuratedInviteTools(server);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerAllTools.js","sourceRoot":"","sources":["../../../src/tools/registerAllTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5B,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"registerAllTools.js","sourceRoot":"","sources":["../../../src/tools/registerAllTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5B,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -4,10 +4,4 @@ function sanitize(name) {
|
|
|
4
4
|
export function toolName(name) {
|
|
5
5
|
return sanitize(name.replace(/\./g, '_'));
|
|
6
6
|
}
|
|
7
|
-
export function readToolName(operationId) {
|
|
8
|
-
return sanitize(`vrchat_read_${operationId}`);
|
|
9
|
-
}
|
|
10
|
-
export function writeToolName(operationId) {
|
|
11
|
-
return sanitize(`vrchat_write_${operationId}`);
|
|
12
|
-
}
|
|
13
7
|
//# sourceMappingURL=toolNames.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolNames.js","sourceRoot":"","sources":["../../../src/utils/toolNames.ts"],"names":[],"mappings":"AAAA,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC
|
|
1
|
+
{"version":3,"file":"toolNames.js","sourceRoot":"","sources":["../../../src/utils/toolNames.ts"],"names":[],"mappings":"AAAA,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
package/docs/architecture.md
CHANGED
|
@@ -12,7 +12,7 @@ This server is organized by responsibility so each file stays small and focused.
|
|
|
12
12
|
- `client.ts` executes API operations with auth + headers and enforces write gating.
|
|
13
13
|
- `readTools.ts` provides read-only helpers (pagination, field selection, shaping).
|
|
14
14
|
- `readToolRegistry.ts` registers auto-generated GET tools from the spec.
|
|
15
|
-
- `writeToolRegistry.ts` registers auto-generated
|
|
15
|
+
- `writeToolRegistry.ts` registers auto-generated POST/PUT/PATCH and DELETE routers from the spec.
|
|
16
16
|
|
|
17
17
|
## Tool registration (`src/tools/`)
|
|
18
18
|
|
package/docs/curated-tools.md
CHANGED
|
@@ -9,12 +9,13 @@ without wading through hundreds of low-level endpoints.
|
|
|
9
9
|
- Small and explicit: each tool has a single, obvious purpose.
|
|
10
10
|
- Human-input friendly: accept names or natural inputs where reasonable.
|
|
11
11
|
- Composable: outputs include IDs and metadata for follow-ups.
|
|
12
|
-
-
|
|
12
|
+
- Local full capability by default: curated write tools are enabled, with account-changing approval expected from the MCP client or agent harness. Group allowlists can further restrict group-scoped writes.
|
|
13
13
|
|
|
14
14
|
## Write controls
|
|
15
15
|
|
|
16
16
|
- Read-only tools are always enabled.
|
|
17
|
-
-
|
|
17
|
+
- Curated write tools are enabled by default through `writes.allow = true`.
|
|
18
|
+
- Set `writes.allow = false` or `VRCHAT_MCP_ALLOW_WRITES=false` for read-only mode.
|
|
18
19
|
- Group-scoped writes additionally honor `groups.allowlist`.
|
|
19
20
|
|
|
20
21
|
## Current curated tools (implemented)
|
|
@@ -93,7 +94,15 @@ Events and calendar (write):
|
|
|
93
94
|
Instances and invites (write):
|
|
94
95
|
|
|
95
96
|
- `vrchat_instance_create`
|
|
97
|
+
- `vrchat_invite`
|
|
96
98
|
- `vrchat_invite_user`
|
|
99
|
+
- `vrchat_invite_user_to_me`
|
|
100
|
+
|
|
101
|
+
Groups and social writes:
|
|
102
|
+
|
|
103
|
+
- `vrchat_group_invite`
|
|
104
|
+
- `vrchat_friend_request`
|
|
105
|
+
- `vrchat_boop`
|
|
97
106
|
|
|
98
107
|
Invites (write, low-risk):
|
|
99
108
|
|
|
@@ -121,12 +130,26 @@ Automation hooks:
|
|
|
121
130
|
|
|
122
131
|
- `vrchat_status_guard` (periodic check + corrective update)
|
|
123
132
|
|
|
124
|
-
## Toolset toggles
|
|
133
|
+
## Toolset toggles
|
|
125
134
|
|
|
126
|
-
|
|
127
|
-
Auto-generated write tools are enabled by default (`vrchat_write_<operationId>`) unless disabled by `writes.allow`.
|
|
135
|
+
The default toolset is curated plus generated read/write/delete routers for API gaps. `vrchat_read` handles available generated GET operations by `operationId`; `vrchat_write` handles available generated POST/PUT/PATCH operations by `operationId`; `vrchat_delete` handles available generated DELETE operations by `operationId`. Use `vrchat_operations` to list availability and `vrchat_operation_details` for exact params/body schemas. The generated routers can be narrowed with `generatedReadTools.operationIds` / `generatedWriteTools.operationIds` or disabled with `generatedReadTools.enabled = false` / `generatedWriteTools.enabled = false`. Generated routers do not expose hard-skipped operations or operations with curated replacements, even if those operation IDs appear in an `operationIds` narrowing list.
|
|
128
136
|
The raw tool (`vrchat_call`) is disabled by default and can be enabled via config/environment flags.
|
|
129
137
|
|
|
138
|
+
## Output schema budget
|
|
139
|
+
|
|
140
|
+
Curated tool output schemas should document stable top-level fields and keep nested raw VRChat API objects opaque. This preserves useful MCP metadata without embedding large generated `User`, `Group`, `World`, `CalendarEvent`, or similar object schemas in every tool. If an agent needs specific nested fields before calling a tool, add a compact curated summary field rather than reintroducing a full generated API object schema.
|
|
141
|
+
|
|
142
|
+
## Consolidation candidates
|
|
143
|
+
|
|
144
|
+
Prefer fewer, higher-confidence curated tools when multiple endpoint-shaped tools represent one user intent. A combined tool should keep the target and side effect explicit, expose IDs in outputs for follow-ups, and preserve confirmation/risk controls.
|
|
145
|
+
|
|
146
|
+
Near-term candidates:
|
|
147
|
+
|
|
148
|
+
- Keep `vrchat_invite` as the primary invite entry point for self-invites, user invites, and invite-to-current-instance flows; keep narrow invite tools only when they avoid ambiguity for agents.
|
|
149
|
+
- Keep social write tools batch-capable where safe (`vrchat_boop`, `vrchat_friend_request`, `vrchat_group_invite`) instead of exposing one generated endpoint per target.
|
|
150
|
+
- Consider a single event management surface only if create/update/delete/follow can stay explicit enough to avoid accidental destructive calls.
|
|
151
|
+
- Keep profile/status writes separate unless the combined tool can make status changes, profile edits, and preserved fields obvious to the caller.
|
|
152
|
+
|
|
130
153
|
## Group allowlist guard
|
|
131
154
|
|
|
132
155
|
Use `groups.allowlist` in the config file to limit group write operations to specific group IDs.
|
package/docs/privacy.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
VRChat MCP runs locally on your machine as a stdio MCP server. The project does not operate a hosted service for your VRChat session.
|
|
4
|
+
|
|
5
|
+
## Data Access
|
|
6
|
+
|
|
7
|
+
Depending on which tools you call, VRChat MCP can retrieve VRChat account, friend, world, group, event, notification, invite, avatar, status, and local VRCX history data. Tool results are returned to the MCP client that launched the server.
|
|
8
|
+
|
|
9
|
+
## Authentication Storage
|
|
10
|
+
|
|
11
|
+
By default, VRChat auth cookies are stored in the operating system keychain. If keychain storage is unavailable, the server falls back to a local cookie file on your machine. You can opt into file storage explicitly with `VRCHAT_MCP_COOKIE_STORE=file`.
|
|
12
|
+
|
|
13
|
+
VRChat's Creator Guidelines caution third-party API applications not to request or store login credentials, auth tokens, or session data. This project currently relies on local user-managed cookies because VRChat does not provide OAuth for this use case. Treat that as a policy-sensitive personal-use boundary: do not collect anyone else's login information, do not host this service for other users, and clear cookies with `vrchat_auth_logout` when you no longer need the session.
|
|
14
|
+
|
|
15
|
+
## Network Requests
|
|
16
|
+
|
|
17
|
+
The server makes requests to VRChat APIs, VRChat pipeline services, and VRChat status endpoints as needed for the tools you call. VRCX features read local VRCX database files on your machine when VRCX data is present.
|
|
18
|
+
|
|
19
|
+
Curated write tools, generated write tools for API gaps, generated read tools, and read-only VRCX local-history tools are enabled by default for local full-capability use. Use your MCP client or agent harness to control account-changing tool calls, or set `VRCHAT_MCP_ALLOW_WRITES=false` for read-only mode. VRCX tools stay read-only and avoid known cookie/credential storage.
|
|
20
|
+
|
|
21
|
+
## Hosted Integrations
|
|
22
|
+
|
|
23
|
+
Do not send VRChat MCP cookies or session tokens to hosted third-party services. Public HTTP or hosted connector variants should only be used if a future VRChat OAuth or public-data-only design exists.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Robust Notes
|
|
2
|
+
|
|
3
|
+
Durable product and security-review notes for future agents.
|
|
4
|
+
|
|
5
|
+
## Security Review Product Boundary
|
|
6
|
+
|
|
7
|
+
VRChat MCP is intended to be a local, full-capability MCP server. Do not reduce the default tool surface to read-only as a security-review reflex. The expected permission boundary for account-changing actions is the user's MCP client or agent harness, which should decide whether to allow, deny, or ask before executing tool calls.
|
|
8
|
+
|
|
9
|
+
Default posture:
|
|
10
|
+
|
|
11
|
+
- Curated write tools are enabled by default through `writes.allow = true`.
|
|
12
|
+
- VRCX local-history tools are enabled by default and remain read-only, bounded, and curated.
|
|
13
|
+
- Generated read tools are enabled by default for API exploration, excluding hard-skipped operations and operations with curated replacements.
|
|
14
|
+
- Generated write tools are enabled by default for usable API-gap coverage, excluding hard-skipped operations and operations with curated replacements.
|
|
15
|
+
- Read-only mode remains available with `writes.allow = false` or `VRCHAT_MCP_ALLOW_WRITES=false` for test, demo, or constrained deployments.
|
|
16
|
+
|
|
17
|
+
Generated tool `operationIds` lists are narrowing controls, not required allowlists, and they do not re-enable generated operations covered by curated tools. Keep generated tools default-on for broad VRChat API capability and rely on the local MCP client or agent harness to approve or deny account-changing tool calls. Do not propose disabling generated read/write/delete routers by default as a context-budget optimization unless the user explicitly reopens that product boundary. Prefer solving context cost with schema deduplication, smaller repeated metadata, on-demand operation details, and curated consolidation of common multi-endpoint workflows. If a generated write becomes common or needs better ergonomics, add a curated write tool with clear inputs, bounded behavior, IDs in outputs, rate/backoff behavior where appropriate, and tests; the generated duplicate should then disappear from the default surface.
|
|
18
|
+
|
|
19
|
+
Do not omit generated `outputSchema` only to save context: some MCP clients may use output schemas for validation or UX, and the field is optional context for clients rather than guaranteed model prompt text. Treat output schema removal as a client-compatibility decision, not a default budget trick.
|
|
20
|
+
|
|
21
|
+
When consolidating tools, preserve harness permission granularity. Avoid combining read-only and write operations in one curated tool, and avoid combining destructive and non-destructive writes unless the resulting tool is correctly annotated/described as the highest-risk operation it can perform. Prefer explicit `action` enums over natural-language routing, and keep code focused on validation/execution rather than fuzzy intent inference.
|
|
22
|
+
|
|
23
|
+
When future audits flag write/VRCX/generated-tool exposure, treat the preferred remediation as better docs, curated coverage, tool annotations, tests, and harness guidance, not disabling the feature by default.
|
|
24
|
+
|
|
25
|
+
The separate unresolved policy-sensitive boundary remains VRChat authentication: this project uses local user-managed cookies because there is no OAuth flow for this use case. Do not host this service for other users or collect other users' credentials/session data.
|
|
26
|
+
|
|
27
|
+
## API Content Upload Boundary
|
|
28
|
+
|
|
29
|
+
VRChat Creator Guidelines (API Usage / Bots, checked 2026-05-26) say not to create or use software, scripts, or applications that upload content such as worlds, avatars, or similar asset types on a user's behalf. Treat generated operations for uploading or managing uploaded asset content as policy-sensitive, not merely high-risk writes. Default policy blocks explicit avatar/world content-management operations (`createAvatar`, `updateAvatar`, `deleteAvatar`, `createWorld`, `updateWorld`, `deleteWorld`, `publishWorld`, `unpublishWorld`) in central operation validation and hides their generated write tools. Do not assume all image-like uploads are prohibited: icons, prints, gallery images, file upload pipeline operations, and similar user image/file operations remain separate policy decisions. Selecting or viewing avatars is a different class from uploading avatar content; do not over-block ordinary user account actions without mapping them to the guideline text.
|
package/docs/tools-guide.md
CHANGED
|
@@ -5,9 +5,15 @@ This is the human-oriented overview for how to use the tool surface. The full, g
|
|
|
5
5
|
## How to use tools
|
|
6
6
|
|
|
7
7
|
- Prefer **curated tools** first. They include search and summary flows for common VRChat tasks.
|
|
8
|
-
-
|
|
9
|
-
-
|
|
8
|
+
- Auto-generated API-gap coverage is exposed through `vrchat_read`, `vrchat_write`, and `vrchat_delete`. Pass an OpenAPI `operationId`; use `vrchat_operations` to list available operation IDs and `vrchat_operation_details` for exact params/body schemas. Generated routers omit hard-skipped operations and operations already covered by curated tools. Use `generatedReadTools.operationIds` or `generatedWriteTools.operationIds` only when you want to narrow the remaining generated surface.
|
|
9
|
+
- Curated write tools are enabled by default for local full-capability use. Set `writes.allow = false` (or `VRCHAT_MCP_ALLOW_WRITES=false`) for read-only mode.
|
|
10
|
+
- The MCP client or agent harness is expected to control approval/denial for account-changing tool calls.
|
|
10
11
|
- Group write actions are restricted by `groups.allowlist` when set.
|
|
12
|
+
- Do not expose this server as a hosted/public MCP service with VRChat cookies. Keep it local and user-controlled.
|
|
13
|
+
|
|
14
|
+
## Metadata budget
|
|
15
|
+
|
|
16
|
+
Tool names, tool descriptions, argument names, argument descriptions, and schema structure consume model context. Run `npm run metrics:tool-budget` to report the estimated default tool metadata token budget, category breakdown, initial tool-list cost, full schema cost, repeated argument-description hotspots, blank tool-description coverage, argument-description coverage, and the largest tools by metadata size. CI includes this in `npm run metrics`; keep the budget from drifting upward unless the extra guidance is worth the context cost.
|
|
11
17
|
|
|
12
18
|
## MCP resources
|
|
13
19
|
|
|
@@ -23,5 +29,5 @@ This is the human-oriented overview for how to use the tool surface. The full, g
|
|
|
23
29
|
|
|
24
30
|
## Where the truth lives
|
|
25
31
|
|
|
26
|
-
- `docs/tools.md` is generated from code + the OpenAPI spec and
|
|
32
|
+
- `docs/tools.md` is generated from code + the OpenAPI spec and includes curated tools plus the generated catalog.
|
|
27
33
|
- `docs/curated-tools.md` describes the curated tool charter and risk tiers.
|