publ betaReference (MCP guide)
Open publ console

publ Reference

Migration map.

channels_list — read the account's channel directory

Read one page of channels belonging to the connected account. Use the returned channelCode to select a target and its revision when preparing an archive change. This is an account data read; screens_list instead searches static workflow inventory.

Current response compatibility follows the source channel-code fallback, including explicit null legacy fields. It does not change inputs, normalized revisions or task recovery.

Input

Field Type Required Default and constraints
page integer No 1; from 1 through 9,007,199,254,740,991.
limit integer No 15; from 1 through 100.
markChannelAs enum string No RUNNING; choose RUNNING or NO_INTEREST.
installedPAppCodes string array No At most 50 distinct feature codes, each matching ^[A-Za-z0-9_]+$. Omitted or empty means no feature filter.

The object is strict: it accepts no title search, sort, account ID, or channel selector. null is invalid.

{"page":1,"limit":15,"markChannelAs":"RUNNING"}

Use only feature codes established by the relevant source/options. The response lists channels, not all installed features on each channel.

Inputs

Field Required here Contract
page No integer; maximum 10000; greater than 0; default 1
limit No 15 or 30 or 50 or 100; default 15
markChannelAs No RUNNING, NO_INTEREST; default RUNNING; RUNNING lists channels in use, NO_INTEREST archived channels.

Result

A verified page returns status:success, code:CHANNEL_DIRECTORY, taskType:channel-directory, and the following fields through the common MCP wrapper:

Field Meaning
channels Current page of normalized channel rows; see below.
pagination page, limit, and filtered total.
nextPage The next page number, or null when this filtered list has no later page.
filters Applied markChannelAs and installedPAppCodes (an empty array when omitted).
environment Adapter environment label.
verification confirmed:true, method:account_channel_list, channelAuthenticationVerified:false.
consoleUrl Exact supported list selection, or an explicitly broader parent list in non-demo results; see below.
nextStep, note Target selection and credential limitations.

Each channel has id, channelCode, title, baseCurrency (KRW or USD), currentPlan, markChannelAs, status, isDeactivated, credentialPresent, and revision. Legacy primitiveInvitationCode is normalized into channelCode if the latter is absent or empty. The legacy field is not returned separately.

RUNNING and NO_INTEREST describe directory classification. A channel can appear without that credential.

The 64-character revision hashes the normalized directory fields excluding credentialPresent. Copy it without recomputing it. A separate credential change does not change this directory revision.

Pagination and verification

Follow nextPage with the same limit and filters. The expected page size is min(limit, max(0, total - (page - 1) * limit)). Wrong pagination, a wrong archive classification, duplicate IDs/codes, or an unexpected short/empty/oversized page produces CHANNEL_DIRECTORY_UNVERIFIED. A genuine zero total or page beyond the total can return an empty list successfully.

Pages from separate calls are not an atomic account snapshot. Do not report an incomplete or unverified page as proof that a channel is absent. The archive workflow performs its own full-directory reads and revision checks.

Access, effects, and failures

The HTTP adapter uses the account bearer for GET /seller/api/v2/channels, with page, limit, classification, and optional comma-separated feature codes. It does not require a channel token for each row. It performs no directory write, credential refresh, shared current-channel switch, analytics event, or job creation. channel-directory classifies this read result and is not an accepted recovery task type.

Authentication, credential permissions/environment, connection locking, HTTP failures, and malformed data can stop the read. Follow the actual failure and repair the relevant connection before reading again; AUTH_REQUIRED is a human-action result. Do not collect credentials in conversation.

In hosted mode this tool belongs to an account resource. The subsequent channel context read requires a separately authorized selected-channel resource; the list result's generic nextStep does not grant that access. Consult scoped discovery on the actual connection.

Implementation: src/channel-directory.ts, src/publ-http.ts::readChannelDirectory, and registration in src/server.ts.

Exact channel-list destination

The response's selection preserves the normalized API request; filters and pagination keep their existing meanings. consoleView contains exactMatch, page, limit, markChannelAs and omitted. It describes the browser destination, not a replacement for the API selection.

The original AllChannels screen accepts page sizes 15, 30, 50 and 100 and reads page, limit and markChannelAs. Without installed-feature filters, the single URL preserves that exact selection, using the central console origin. If the API request uses another valid size or nonempty installedPAppCodes, the URL opens the same archive classification at page 1 with 15 rows. consoleView.exactMatch is false, omitted identifies installedPAppCodes where applicable and pagination, and navigation labels this as a broader parent list. The API result still contains the originally requested page/filter. The bridge never fabricates an unsupported UI filter query or claims that this broader list is the same result.

An empty out-of-range API page retains the existing successful-read contract and its requested page when representable; it is not evidence the account is empty.