channel_points_handoff — Prepare an original-console point action
Use this to select a human action after observing its current channel context and attempting the applicable prerequisites. An owner or delegate with MANAGE_MONETIZATION must be connected to the channel. The source hosted selected-channel allowlist requires the exact channelCode; account scope excludes this tool.
Inputs are strict: channelCode follows the point reader, and action is a discriminated object. No amount, ratio, price, bank number, provision HTML, credentials, raw URL, requestId, dryRun or task identity is accepted.
| action.kind | Additional fields | Prerequisite observation / console destination |
|---|---|---|
| setup | None | Stable setup preset; Channel Point home/onboarding container. |
| policy | None | Branding/context; policy settings. Does not read the settings form. |
| provisions | None | Branding/context; provision edit screen. Does not read provision contents. |
| create-product | None | Branding/context; charge-product list/modal. |
| edit-product, activate-product, deactivate-product, delete-product | action.publProductId, action.page, action.limit | Stable selected WEB product and parent page; product-list editor. |
| request-withdrawal | None | Attempt stable WEB ledger and source screen gate; a bounded source failure can still return the withdrawal request screen after access revalidation. |
| revise-withdrawal | action.ticketId, action.page, action.limit | Stable selected ticket and repeated parent; exact withdrawal detail screen. |
Identifiers are 1–256 characters with the reader's path/control exclusions. Page defaults to 1 and is a positive safe integer up to 1,000,000. Limit is 15/30/50/100 and defaults to 15.
{"channelCode":"selected-channel-code","action":{"kind":"setup"}}
{"channelCode":"selected-channel-code","action":{"kind":"policy"}}
{"channelCode":"selected-channel-code","action":{"kind":"provisions"}}
{"channelCode":"selected-channel-code","action":{"kind":"create-product"}}
{"channelCode":"selected-channel-code","action":{"kind":"edit-product","publProductId":"observed-product-id","page":1,"limit":15}}
{"channelCode":"selected-channel-code","action":{"kind":"activate-product","publProductId":"observed-product-id"}}
{"channelCode":"selected-channel-code","action":{"kind":"deactivate-product","publProductId":"observed-product-id"}}
{"channelCode":"selected-channel-code","action":{"kind":"delete-product","publProductId":"observed-product-id"}}
{"channelCode":"selected-channel-code","action":{"kind":"request-withdrawal"}}
Select the ticket from the explicit observed parent page:
{"channelCode":"selected-channel-code","action":{"kind":"revise-withdrawal","ticketId":"observed-ticket-id","page":1,"limit":15}}
Successful preparation returns action_required / POINT_HUMAN_ACTION_REQUIRED, action, observed data, writesPerformed:false, humanAction.submitted:false and verification.confirmed:false / prerequisitesObserved:true / financialActionCompleted:false. It rechecks branding except for setup and checks selected context. This is human guidance, not a promise that the console permits the requested action. The source offers bank edits for REQUESTED tickets; the bridge does not execute or reserve them. Demo omits real console links.
For request-withdrawal, setup, create-product, policy or provisions, a bounded prerequisite failure can return action_required / POINT_WITHDRAWAL_CONSOLE_REQUIRED (withdrawal) or POINT_CONSOLE_REQUIRED (the other four actions) after a fresh channel/actor/permission/credential context comparison. Eligible error codes are UPSTREAM_HTTP_404, UPSTREAM_HTTP_5xx, UPSTREAM_UNREACHABLE, POINT_RESPONSE_UNVERIFIED and POINT_RESPONSE_TOO_LARGE. This covers applicable setup-preset, branding or ledger observations without requiring a verified financial state. The result contains the exact selected destination (home/onboarding, charge products, policy settings, provision edit or withdrawal request), action, prerequisiteError.code, eligibility:not-observed, writesPerformed:false, humanAction.submitted:false and verification.confirmed:false / prerequisitesObserved:false / channelAccessObserved:true / financialActionCompleted:false. No partial observed balance or invented financial data is returned.
Initial or repeated authentication/permission/context failures still reject. Currency, channel and identity mismatches are not part of this fallback. Selected-product actions and revise-withdrawal retain their original prerequisite failures; a selected product or ticket is never accepted through this unselected-screen exception.
Other preparation exceptions return the error envelope with screenId and environment, without channel, consoleUrl, observed, humanAction or the successful verification fields. writesPerformed:false is not an error-envelope guarantee. Resolve the reported failure before retrying.
Reader errors and handoff errors outside the bounded exception remain failures; missing branding never becomes inactive. After the person acts, repeat the corresponding get view. Do not call task_status/task_resume to replay a financial action: this tool creates no job. Issuance, correction, reclaim, waiver, purchase and financial submission remain with the person in the original service.
Finance page and selected-record navigation
Successful finance reads keep the existing string view and additionally return
normalized selection. Successful observed human handoffs return their normalized
action as selection; unavailable-prerequisite fallbacks retain their prior shape.
ledger-history and withdrawals preserve the requested page and limit in the
single console address. Their consoleView reports the destination page, limit
and exactMatch. An empty API page beyond the observed total keeps its original
pagination and records while navigation explicitly opens the first parent list
at page1/limit15 with exactMatch:false. It is not the returned empty API page.
An empty first page remains an exact list destination. No second page is fetched.
Selected product reads and edit/activate/deactivate/delete-product handoffs keep
the verified parent page/limit. Their navigation relation is parent even when
that list page matches exactly: select the observed product row to open its editor.
No product modal deep link or completed financial action is inferred.
withdrawal-detail and revise-withdrawal instead open the exact observed ticket
route with target navigation and no list queries. Bank masking remains in place;
source bank-edit availability still depends on REQUESTED status.
The navigation boundary binds normalized selection, page/count/coverage, row identity, financial currency and the selected product or ticket projection. Mismatched selection, target, page, verification or destination suppresses the address. Unselected human destinations and missing-prerequisite fallbacks retain their existing source screens and financial-action boundaries.
Inputs
| Field | Required here | Contract |
|---|---|---|
action |
Yes | one of: setup, create-product, edit-product, activate-product, deactivate-product, policy, provisions, request-withdrawal, revise-withdrawal (by kind) |
action.publProductId |
Yes | When action.kind is edit-product: string; min length 1; max length 256 |
action.page |
No | When action.kind is edit-product: integer; maximum 1000000; greater than 0; default 1 |
action.limit |
No | When action.kind is edit-product: 15 or 30 or 50 or 100; default 15 |
action.publProductId |
Yes | When action.kind is activate-product: string; min length 1; max length 256 |
action.page |
No | When action.kind is activate-product: integer; maximum 1000000; greater than 0; default 1 |
action.limit |
No | When action.kind is activate-product: 15 or 30 or 50 or 100; default 15 |
action.publProductId |
Yes | When action.kind is deactivate-product: string; min length 1; max length 256 |
action.page |
No | When action.kind is deactivate-product: integer; maximum 1000000; greater than 0; default 1 |
action.limit |
No | When action.kind is deactivate-product: 15 or 30 or 50 or 100; default 15 |
action.ticketId |
Yes | When action.kind is revise-withdrawal: string; min length 1; max length 256 |
action.page |
No | When action.kind is revise-withdrawal: integer; maximum 1000000; greater than 0; default 1 |
action.limit |
No | When action.kind is revise-withdrawal: 15 or 30 or 50 or 100; default 15 |