@basicbit/vrchat-mcp 0.1.8 → 0.1.10
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 +29 -0
- package/README.md +1 -1
- package/dist/package.json +4 -3
- package/dist/src/auth/index.js +4 -1
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/core/generatedToolOverrides.js +4 -0
- package/dist/src/core/generatedToolOverrides.js.map +1 -1
- package/dist/src/core/operationPolicy.js +19 -1
- package/dist/src/core/operationPolicy.js.map +1 -1
- package/dist/src/generated/vrchat-schemas.js +3 -1
- package/dist/src/generated/vrchat-schemas.js.map +1 -1
- package/dist/src/models/avatars.js +85 -0
- package/dist/src/models/avatars.js.map +1 -1
- package/dist/src/models/groups.js +92 -0
- package/dist/src/models/groups.js.map +1 -1
- package/dist/src/models/invites.js +31 -2
- package/dist/src/models/invites.js.map +1 -1
- package/dist/src/models/status.js +4 -2
- package/dist/src/models/status.js.map +1 -1
- package/dist/src/services/api/client.js +5 -0
- package/dist/src/services/api/client.js.map +1 -1
- package/dist/src/services/avatars/index.js +166 -1
- package/dist/src/services/avatars/index.js.map +1 -1
- package/dist/src/services/groups/index.js +1 -0
- package/dist/src/services/groups/index.js.map +1 -1
- package/dist/src/services/groups/posts.js +0 -0
- package/dist/src/services/groups/posts.js.map +1 -0
- package/dist/src/services/invites/curated.js +35 -16
- package/dist/src/services/invites/curated.js.map +1 -1
- package/dist/src/tools/curated/avatars.js +41 -3
- package/dist/src/tools/curated/avatars.js.map +1 -1
- package/dist/src/tools/curated/groupPosts.js +173 -0
- package/dist/src/tools/curated/groupPosts.js.map +1 -0
- package/dist/src/tools/curated/groups.js +3 -42
- package/dist/src/tools/curated/groups.js.map +1 -1
- package/dist/src/tools/curated/invites.js +1 -1
- package/dist/src/tools/curated/invites.js.map +1 -1
- package/dist/src/tools/raw.js +5 -1
- package/dist/src/tools/raw.js.map +1 -1
- package/dist/src/tools/registerAllTools.js +2 -0
- package/dist/src/tools/registerAllTools.js.map +1 -1
- package/docs/curated-tools.md +18 -0
- package/docs/robust-notes.md +9 -1
- package/docs/spec-drift.md +71 -0
- package/docs/tools.md +664 -239
- package/package.json +4 -3
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/tools/curated/invites.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,eAAe,CAAC,EACzB;QACE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/tools/curated/invites.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,eAAe,CAAC,EACzB;QACE,WAAW,EACT,oRAAoR;QACtR,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAA6C;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,qBAAqB,CAAC,EAC/B;QACE,WAAW,EACT,kNAAkN;QACpN,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,uBAAuB;QACrC,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAA6C;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,uBAAuB,CAAC,EACjC;QACE,WAAW,EACT,0FAA0F;QAC5F,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAA6C;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,aAAa,CAAC,EACvB;QACE,WAAW,EAAE,gFAAgF;QAC7F,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAA6C;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,oBAAoB,CAAC,EAC9B;QACE,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE,gBAAgB;QAC7B,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,MAAM;gBACd,YAAY;aACb,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAAkC;aACtD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,oBAAoB,CAAC,EAC9B;QACE,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE,gBAAgB;QAC7B,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG;gBACd,MAAM,EAAE,MAAM;gBACd,YAAY;aACb,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAAkC;aACtD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,0BAA0B,CAAC,EACpC;QACE,WAAW,EACT,wMAAwM;QAC1M,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE,oBAAoB;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO;gBACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,iBAAiB,EAAE,OAAkC;aACtD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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"}
|
package/dist/src/tools/raw.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { callOperation, CallError } from '../core/client.js';
|
|
3
|
-
import { getBlockedOperationReason } from '../core/operationPolicy.js';
|
|
3
|
+
import { getBlockedOperationReason, getCuratedOnlyReason } from '../core/operationPolicy.js';
|
|
4
4
|
import { CallInputSchema } from '../schemas/call.js';
|
|
5
5
|
import { writeToolAnnotations } from '../utils/toolAnnotations.js';
|
|
6
6
|
import { toolName } from '../utils/toolNames.js';
|
|
@@ -22,6 +22,10 @@ export function registerRawTools(server) {
|
|
|
22
22
|
if (blockedReason) {
|
|
23
23
|
return toolError(`Operation ${args.operationId} is disabled: ${blockedReason}`);
|
|
24
24
|
}
|
|
25
|
+
const curatedOnlyReason = getCuratedOnlyReason(args.operationId);
|
|
26
|
+
if (curatedOnlyReason) {
|
|
27
|
+
return toolError(curatedOnlyReason);
|
|
28
|
+
}
|
|
25
29
|
try {
|
|
26
30
|
const result = await callOperation(args);
|
|
27
31
|
return {
|
|
@@ -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,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;
|
|
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,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,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,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACtC,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"}
|
|
@@ -4,6 +4,7 @@ import { registerCuratedAvatarTools } from './curated/avatars.js';
|
|
|
4
4
|
import { registerCuratedEventTools } from './curated/events.js';
|
|
5
5
|
import { registerCuratedFavoriteTools } from './curated/favorites.js';
|
|
6
6
|
import { registerCuratedFriendTools } from './curated/friends.js';
|
|
7
|
+
import { registerCuratedGroupPostTools } from './curated/groupPosts.js';
|
|
7
8
|
import { registerCuratedGroupTools } from './curated/groups.js';
|
|
8
9
|
import { registerCuratedInstanceTools } from './curated/instances.js';
|
|
9
10
|
import { registerCuratedInviteTools } from './curated/invites.js';
|
|
@@ -27,6 +28,7 @@ export async function registerAllTools(server) {
|
|
|
27
28
|
registerCuratedEventTools(server);
|
|
28
29
|
registerCuratedFavoriteTools(server);
|
|
29
30
|
registerCuratedGroupTools(server);
|
|
31
|
+
registerCuratedGroupPostTools(server);
|
|
30
32
|
registerCuratedInstanceTools(server);
|
|
31
33
|
registerCuratedInviteTools(server);
|
|
32
34
|
registerCuratedStatusTools(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,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"}
|
|
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,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,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,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,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"}
|
package/docs/curated-tools.md
CHANGED
|
@@ -104,6 +104,24 @@ Groups and social writes:
|
|
|
104
104
|
- `vrchat_friend_request`
|
|
105
105
|
- `vrchat_boop`
|
|
106
106
|
|
|
107
|
+
Group posts (write):
|
|
108
|
+
|
|
109
|
+
- `vrchat_group_post_create`
|
|
110
|
+
- `vrchat_group_post_update`
|
|
111
|
+
- `vrchat_group_post_delete`
|
|
112
|
+
|
|
113
|
+
Neither create nor update notifies group members unless `sendNotification` is explicitly set, because a single post can ping the whole group.
|
|
114
|
+
|
|
115
|
+
All three accept `groupId` or `shortCode`, and the `groups.allowlist` guard always runs against the resolved ID so a short code cannot route around it.
|
|
116
|
+
|
|
117
|
+
VRChat replaces the entire post on edit, and its API has no single-post read. `vrchat_group_post_update` therefore always looks the post up first, scanning the most recent 300 posts fresh from the API rather than from the cached list, and fills in whatever fields the caller omitted. Omitting `roleIds` keeps the current role restrictions; pass `roleIds: []` to clear them. Omitting `imageId` keeps the current image; pass `imageId: null` to remove it. An update whose supplied values all match the post is rejected, since re-sending identical content only bumps the timestamp and can re-notify members.
|
|
118
|
+
|
|
119
|
+
If the post is older than that lookup window, supplying `title`, `text`, and `visibility` together still lets the edit land as an outright replace. That path cannot recover `roleIds` or `imageId`, so it clears them and reports `mergedFromExisting: false`. Skipping the lookup is deliberately not offered as an optimization: a replace that silently drops `roleIds` would widen a role-restricted post to the whole group.
|
|
120
|
+
|
|
121
|
+
Creates and updates report success even when the write lands but VRChat's response cannot be parsed, returning `post: null`. Neither call is idempotent, so reporting a failure there would invite a retry that posts twice and, with `sendNotification`, notifies twice.
|
|
122
|
+
|
|
123
|
+
All three tools invalidate cached group reads after the write, including when the response fails to parse. One gap worth knowing: a `vrchat_group_posts_recent` load already in flight when the write happens can still store its pre-write result afterwards, because `invalidateByTag` cannot see a request whose entry has not been written yet. Reads can then serve the old list for the remainder of the group cache TTL. This affects every cached area equally, not just posts, and fixing it needs generation-checking in `CacheManager` rather than anything post-specific.
|
|
124
|
+
|
|
107
125
|
Invites (write, low-risk):
|
|
108
126
|
|
|
109
127
|
- `vrchat_invite_self`
|
package/docs/robust-notes.md
CHANGED
|
@@ -26,4 +26,12 @@ The separate unresolved policy-sensitive boundary remains VRChat authentication:
|
|
|
26
26
|
|
|
27
27
|
## API Content Upload Boundary
|
|
28
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`, `
|
|
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`, `deleteAvatar`, `createWorld`, `updateWorld`, `deleteWorld`, `publishWorld`, `unpublishWorld`) in central operation validation and hides their generated write tools.
|
|
30
|
+
|
|
31
|
+
`updateAvatar` is the one exception, and the boundary moved rather than disappeared. It is no longer in central operation validation, because the curated `vrchat_avatar_update` tool has to reach it; it is listed as curated-only instead, so the raw call tool and the generated write registry both still refuse it. That tool writes `name`, `description`, `releaseStatus` and content tags, and never `assetUrl`, `unityPackageUrl`, `unityVersion` or `version`. The reasoning: editing metadata on already-uploaded content is a different act from uploading content on a user's behalf, which is what the guideline text addresses.
|
|
32
|
+
|
|
33
|
+
**Avatar `releaseStatus` is deliberately allowed** (decided 2026-08-03). It looks like the avatar analogue of `publishWorld` / `unpublishWorld`, but those are blocked for a reason avatars do not share: unpublishing a world sends it back through Community Labs, so toggling world publication has a real and costly consequence an agent should not be able to trigger. Avatars have no equivalent gate. The avatar act this reasoning permits is metadata editing and nothing more: `createAvatar` and `deleteAvatar` both remain hard-blocked, creation because it is upload and deletion because it is destructive and irreversible. Changing an existing avatar's publication state is metadata management, not upload or republication.
|
|
34
|
+
|
|
35
|
+
This does not make `releaseStatus` casual — it can still expose a creator's work against their terms, leak an avatar meant to stay private, or breach content policy depending on what the avatar contains, which is why the tool description tells callers to confirm intent first.
|
|
36
|
+
|
|
37
|
+
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.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Spec Drift
|
|
2
|
+
|
|
3
|
+
`specs/vrchat-openapi.yaml` is the **community** OpenAPI description
|
|
4
|
+
([vrchatapi/specification](https://github.com/vrchatapi/specification)), not one VRChat
|
|
5
|
+
publishes. It is reverse-engineered and maintained by volunteers, so it drifts from the live API
|
|
6
|
+
continuously and permanently. That is expected, not a bug in the spec.
|
|
7
|
+
|
|
8
|
+
**The live API is the source of truth — not the spec, and not this file.** This is a log of
|
|
9
|
+
divergences we have actually observed, with dates and evidence, so nobody re-investigates the same
|
|
10
|
+
thing from scratch.
|
|
11
|
+
|
|
12
|
+
Every entry is a point-in-time observation and can go stale. VRChat may change behavior, the
|
|
13
|
+
community spec may catch up, and a workaround recorded here may become unnecessary or actively
|
|
14
|
+
wrong. **Before making a substantive change that depends on an entry, re-verify it against the
|
|
15
|
+
live API and update the entry with what you found.** An old date is a reason for suspicion, not
|
|
16
|
+
confidence.
|
|
17
|
+
|
|
18
|
+
Add an entry whenever you find a new divergence, including ones you decide not to work around.
|
|
19
|
+
Where a fix is needed, prefer `scripts/postprocess-schemas.ts` over editing the spec:
|
|
20
|
+
`specs/vrchat-openapi.yaml` is gitignored, so spec edits are local-only and vanish on a fresh
|
|
21
|
+
clone.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Confirmed divergences
|
|
26
|
+
|
|
27
|
+
### `GroupPermissions` enum is incomplete
|
|
28
|
+
*Observed 2026-08-02, not re-verified since · patched in `postprocess-schemas.ts`*
|
|
29
|
+
|
|
30
|
+
Spec lists 25 values. `GET /groups/{groupId}/permissions` returns **27**, the extras being
|
|
31
|
+
`group-instance-announcement-create` and `group-instance-bypass-avatar-performance`. Any role
|
|
32
|
+
update using them failed zod validation before reaching VRChat.
|
|
33
|
+
|
|
34
|
+
### `Group.transferTargetId` is nullable
|
|
35
|
+
*Observed 2026-08-02, not re-verified since · patched in `postprocess-schemas.ts`*
|
|
36
|
+
|
|
37
|
+
Spec types it as a non-null `UserID`. Groups with no pending ownership transfer return `null`,
|
|
38
|
+
which failed the whole `getGroup` parse and took `vrchat_group_profile` down with it.
|
|
39
|
+
|
|
40
|
+
### `InviteRequest.instanceId` needs the worldId prefix
|
|
41
|
+
*Observed 2026-08-02, not re-verified since · handled in `services/invites/curated.ts`*
|
|
42
|
+
|
|
43
|
+
The spec describes `InstanceID` as the bare instance part
|
|
44
|
+
(`12345~hidden(usr_…)~region(eu)`). `POST /invite/{userId}` rejects that form with
|
|
45
|
+
`400: Invalid location` and requires the **full** `worldId:instanceId~…` string.
|
|
46
|
+
|
|
47
|
+
Verified live: full string → `200`, worldId stripped → `400`.
|
|
48
|
+
|
|
49
|
+
### Role permissions have undocumented prerequisites
|
|
50
|
+
*Observed 2026-08-02, not re-verified since*
|
|
51
|
+
|
|
52
|
+
Not a schema issue — the API enforces dependencies the spec never mentions.
|
|
53
|
+
`group-members-remove` and `group-bans-manage` both require `group-members-manage` on the same
|
|
54
|
+
role, otherwise `PUT /groups/{groupId}/roles/{roleId}` returns
|
|
55
|
+
`400: Role missing required permissions: group-members-manage`.
|
|
56
|
+
|
|
57
|
+
### `UserStatus` has no color mapping
|
|
58
|
+
*Observed 2026-08-02, not re-verified since*
|
|
59
|
+
|
|
60
|
+
The spec defines the enum but says nothing about colors, because they are a client-UI concept.
|
|
61
|
+
For reference: **Join Me = blue, Active = green, Ask Me = orange, Busy = red.**
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Suspected, not yet verified
|
|
66
|
+
|
|
67
|
+
### `UpdateAvatarRequest.description` minLength
|
|
68
|
+
Spec declares `minLength: 1`, which would make an empty description an invalid request and leave
|
|
69
|
+
no way to clear one. BASIC reports descriptions are effectively optional in practice, so
|
|
70
|
+
`vrchat_avatar_update` deliberately does **not** enforce a minimum and lets VRChat decide. If a
|
|
71
|
+
`description: ""` write is ever seen failing, record the result here and add the constraint.
|