ic_admin_approve_tier_request
ActiveTool of Immersive Commons
Approve a pending tier request and set the user's tier. Two-step: omit `confirm` (or pass false) for a dry-run preview that returns what the call would do without mutating state. Pass `confirm: true` to actually apply. If `tier` is omitted, the user is approved to the tier they requested; pass `tier` to override (e.g. they asked for ic-member but you approve ai-floor). Rate-limited to 20 approve+deny mutations per token per UTC day; dry-run calls do NOT count. Args: { user_id, tier?: 'ft-member'|'ai-floor'|'ic-member'|'operator', reason?, confirm? }. Returns: dry-run shape on confirm=false; { ok, user_id, from, to, action: 'approve' } on confirm=true. Required scope: admin:tier_review.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"tier": {
"enum": [
"ft-member",
"ai-floor",
"ic-member",
"operator"
],
"type": "string",
"description": "Optional override. If omitted, approves the user to the tier they requested. 'operator' is approvable here even though it isn't self-requestable."
},
"reason": {
"type": "string",
"maxLength": 400,
"description": "Optional note recorded in the audit trail."
},
"confirm": {
"type": "boolean",
"description": "Set to true to actually mutate. When false / omitted, returns a dry-run preview that does NOT change state and does NOT count against the daily rate limit."
},
"user_id": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Clerk user_id of the pending requester."
}
}
}No endpoints wrapped at confidence ≥ 0.70.
Parent server
Immersive Commons
https://github.com/immersive-commons/ic-skills
1/7 registries