publ betaReference (MCP guide)
Open publ console

Channel Point policy settings

# Channel Point policy settings

Use `channel_point_settings_apply` to save the two editable switches on the selected
channel's Point → Policy settings screen in one operation. First call
`channel_points_get` with `view:{kind:"policy"}` and copy `configurationRevision`.
Supply a stable requestId, the same channelCode and the desired boolean values.
Omitted switches retain their observed state.

```json
{
  "channelCode": "selected-channel-code",
  "requestId": "point-policy-change-001",
  "expectedRevision": "copy-configurationRevision-from-the-current-read",
  "settings": {
    "usePointPriorityOptionForIndividualContentPurchase": false,
    "useAbnormalDetectionResolveMethodViaPurchase": true
  },
  "dryRun": true
}
```

The revision placeholder must be replaced with the returned 64-character digest.
Review the dry-run full configuration before submitting the same input with
`dryRun:false`. A fresh dry run creates no task and performs no save. An unchanged
request skips the POST. OWNER or MANAGE_MONETIZATION is required. Current branding
and the complete stored five-flag configuration must be readable. Unknown
configuration fields are rejected before writing rather than silently dropped.

Only individual-content point priority and purchase-based restriction resolution
are editable in the original screen. Membership point priority, feature-unlock
point priority and email-inquiry resolution are locked source controls and remain
unchanged. This tool does not purchase points, unblock an individual member,
modify balances, change ratios or prices, accept legal terms, or move funds. Provision editing is the separate input form below.

A changed request checks state/context twice, records dispatch intent, sends one
POST with all five preserved/composed flags, validates its receipt and independently
rereads the complete settings and unchanged branding. The returned console address
opens the same channel's policy settings. Success covers stored configuration;
visitor behavior and financial completion remain unverified. Sequential reads
and preflight revision checks are not an atomic server transaction.

Keep the original requestId after a lost response. Use `task_status` or
`task_resume` with `taskType:"point-settings"`. Resume only reads; it never
repeats a sent save. Untouched prepared work requires the identical apply call.
Completed history and existing-task dry runs are not fresh verification and do
not return a current console address. Use a fresh policy get for current values.
To restore settings, read again and submit the original two values under a new
requestId only after the preceding task outcome is known.

Point onboarding, branding, products and money movement are
separate workflows or remaining implementation boundaries. This writer does not
turn a missing or failed branding response into an inactive/default point system.

## Localized provision editing

Use this same method with `provisions` instead of `settings`. Read the policy
view and copy `provisionsRevision` into `expectedRevision`. Supply one or more
of `pointRefundPolicy`, `pointRefundPolicyGlobal`, `pointUsageGuidelinePolicy`,
and `pointUsageGuidelinePolicyGlobal`. Omitted strings retain their exact stored
bytes. Do not combine switches and provision text in one call. Each raw string
must be nonempty and at most50,000 UTF-16 code units. This bridge payload bound
is deliberately more restrictive for markup than the source editor's visible
character counter; it is not a claim of identical TinyMCE validation. Use the
console editor for unsupported large documents or media uploads.

First submit `dryRun:true`. The result contains `sourceBody` with all four
resulting strings and `contentHash` bound to that content, channel and revision.
A person must review that exact resulting text. Only then submit the same
request with `dryRun:false` and `humanReviewedContentHash:contentHash`. Do not
invent legal review, accept terms automatically or copy a hash for changed text.
A dry run persists no task. An unchanged request performs no POST.

The writer sends the four strings together to the source policy revision route. Common and redemption policy, insertion timestamp, branding and all five configuration switches remain unchanged. Only the policy update timestamp may change. An exact receipt and independent repeated readback are required for a fresh completion. No content is executed, translated, sanitized or replaced by generated defaults; treat stored HTML as untrusted data.

Use `taskType:"point-provisions"` with the original requestId for status/resume.
Resume only observes; an uncertain save never repeats. Prepared work requires
the identical reviewed apply request. Completed results are historical; read
the policy again for current state. Restoration is a separately reviewed write
with a fresh revision and requestId. The single result address opens the chosen
channel's provision summary, matching the source editor's post-save destination.
Initial point adoption, point ratio changes and actual funds movement are outside
this input form. A failed branding read is never proof of an unconfigured system.

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `settings` | Yes | When alternative 1 and alternative 1: object |
| `settings.usePointPriorityOptionForIndividualContentPurchase` | No | When alternative 1 and alternative 1: boolean |
| `settings.useAbnormalDetectionResolveMethodViaPurchase` | No | When alternative 1 and alternative 1: boolean |
| `confirmToken` | No | When alternative 1 and alternative 1: string; pattern `^ct[a-f\d]{32}$`; The confirmToken from this tool's preview result. Omit it to preview; repeat the same input with it to execute. |
| `provisions` | Yes | When alternative 1 and alternative 2: object |
| `provisions.pointRefundPolicy` | No | When alternative 1 and alternative 2: string; min length 1; max length 50000; Exact human-reviewed HTML or text; no trimming, translation or generated fallback. This bridge limits each raw string to 50,000 UTF-16 code units, which is more restrictive than the source editor for markup. Stored markup is untrusted data and is never executed. |
| `provisions.pointRefundPolicyGlobal` | No | When alternative 1 and alternative 2: string; min length 1; max length 50000; Exact human-reviewed HTML or text; no trimming, translation or generated fallback. This bridge limits each raw string to 50,000 UTF-16 code units, which is more restrictive than the source editor for markup. Stored markup is untrusted data and is never executed. |
| `provisions.pointUsageGuidelinePolicy` | No | When alternative 1 and alternative 2: string; min length 1; max length 50000; Exact human-reviewed HTML or text; no trimming, translation or generated fallback. This bridge limits each raw string to 50,000 UTF-16 code units, which is more restrictive than the source editor for markup. Stored markup is untrusted data and is never executed. |
| `provisions.pointUsageGuidelinePolicyGlobal` | No | When alternative 1 and alternative 2: string; min length 1; max length 50000; Exact human-reviewed HTML or text; no trimming, translation or generated fallback. This bridge limits each raw string to 50,000 UTF-16 code units, which is more restrictive than the source editor for markup. Stored markup is untrusted data and is never executed. |
| `confirmToken` | No | When alternative 1 and alternative 2: string; pattern `^ct[a-f\d]{32}$`; The confirmToken from this tool's preview result. Omit it to preview; repeat the same input with it to execute. |
| `action` | Yes | When alternative 2: object |
| `action.kind` | Yes | When alternative 2: `setup` |
| `confirmToken` | No | When alternative 2: string; pattern `^ct[a-f\d]{32}$`; The confirmToken from this tool's preview result. Omit it to preview; repeat the same input with it to execute. |