[AGENT]
Changes
- Add curated
vrchat_avatar_updatefor avatar metadata:name,description,releaseStatus, and content tags. Content tags previously had no write path at all. - Keep avatar asset fields unreachable.
assetUrl,unityPackageUrl,unityVersion, andversioncan repoint an avatar at the wrong build with no undo, soupdateAvataris curated-only: the raw call tool and the generated write registry both still refuse it, andcreateAvatar/deleteAvatarstay blocked outright. - Merge avatar tags against a freshly-read list instead of replacing them, since
updateAvataroverwrites the whole array and a blind write would drop author tags.addTags/removeTagsare explicit,clearContentTagsstrips everycontent_*tag including ones newer than this build, and concurrent updates to one avatar are serialized so neither loses the other's addition. - Target an avatar by
avtr_ID or by the exact name of one of your own avatars, paging through every owned avatar before deciding and refusing with the candidate IDs rather than guessing when a name is ambiguous. - Fix login being impossible from any browser: the auth page sent
Referrer-Policy: no-referrer, which makes a non-CORS form POST serializeOriginasnull, and the page's own loopback origin check then rejected it. - Fix
getGroupthrowing for any group with no pending ownership transfer, wheretransferTargetIdcomes backnullagainst a strict string schema. - Fix
vrchat_status_setmappingcolor: "blue"toactive. Blue is Join Me in the VRChat client; green is Active. - Fix user invites sending a stripped instance ID.
POST /invite/{userId}requires the fullworldId:instanceIdlocation and answers400: Invalid locationotherwise, which affectedvrchat_invite_user_to_me,here=true, andworldId + instanceIdcalls. - Fix
vrchat_group_roles_manageadvertising a schema with no properties, so typed fields such aspermissionsnever reached the wire contract and arrived as strings. Every argument now carries a description, including which action requires it. - Refresh the
GroupPermissionsenum: the live API returns 27 permissions and the vendored spec listed 25, so role updates usinggroup-instance-announcement-createorgroup-instance-bypass-avatar-performancefailed validation before reaching VRChat. - Add
docs/spec-drift.md, a log of observed divergences between the community OpenAPI spec and the live API, with the standing rule that the live API is the source of truth and entries must be re-verified before being relied on. - Breaking: a bare instance ID is no longer accepted as an invite destination. VRChat rejects it, so
vrchat_inviteandvrchat_invite_usernow requirehere=true, a fullwrld_:instancelocation, orworldId+instanceId.