publ betaReference (MCP guide)
Open publ console

channel_creation_options — read site creation choices

[Migration map](../reference/tool-name-migration.md).

# channel_creation_options — read site creation choices

Read current template and app candidates plus the account's platform currency before preparing a new site. Use [channel_create](publ_channel_create.md) for a dry-run plan or execution. Static screen descriptions do not supply current account choices.

## Input

| Field | Type | Required | Values |
| --- | --- | --- | --- |
| `category` | enum string | Yes | `HOMEPAGE`, `LECTURE`, `CONTENTS`, `EVENT`, `COUNSEL`, `COMMUNITY`, or `CUSTOM_SERVICE`. |

There is no default category. Omission, `null`, and unknown category values are invalid. The supported input contains no account/channel selector, credentials, currency override, or pagination controls.

```json
{"category":"HOMEPAGE"}
```

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `category` | Yes | `HOMEPAGE`, `LECTURE`, `CONTENTS`, `EVENT`, `COUNSEL`, `COMMUNITY`, `CUSTOM_SERVICE` |

## Result and identifier mapping

A successful payload uses the [common MCP wrapper](../reference/results.md) and contains:

| Field | Meaning |
| --- | --- |
| `status` | `success`. There is no application success `code`, task ID, or `verification` field in this options result. |
| `environment` | Adapter label: `configured-server` or `demo-no-publ-requests`. |
| `category` | The requested category. |
| `platform` | `null`, or an object with optional `baseCurrency`. |
| `templates` | Returned catalog entries filtered to `status:CURRENT`. Each has `channelTemplateCode`, `status`, `installedPAppCodes`, and optional `title`/`titleGlobal`. |
| `apps` | Candidate objects with `code` and optional `name`/`nameGlobal`. Pricing models are not included. |

Pass `templates[].channelTemplateCode` as `design.templateCode` in a catalog creation. Pass `apps[].code` as an `appCodes` element for a blank design. Template titles, app names, template codes, and app codes are different values; do not substitute one for another. Use the code when a display name is absent.

## Currency and app rules

An app must be released and visible in the store. Codes beginning with `3RD_` or `Z`, plus `X00003` and `X00005`, are excluded. Inclusion here establishes only those candidate filters. Creation separately requires a default `FREE` model with matching app code and explicitly zero installation, monthly, and metered fees in the selected currency. Missing/paid/unverifiable pricing can still block a plan.

Catalog templates have fixed installed apps. Normally omit `appCodes` for a catalog design; an explicit array must match its available template configuration. A template containing an app outside the candidate policy can be listed here but creation returns `CHANNEL_CREATION_PAYMENT_REVIEW_REQUIRED` instead of proceeding. The options read does not reserve candidates or promise that a later plan will succeed.

## Reads and completeness

The HTTP adapter makes these account-authenticated GET requests against the configured general API origin:

| Path | Purpose |
| --- | --- |
| `/seller/api/v1/platform-management/information` | Platform information and currency. |
| `/seller/api/v2/p-app-store/p-apps` | App store candidates and pricing data used internally. |
| `/seller/api/v2/template-store/channel-template-catalogs` | Template catalog for the requested category. |

The catalog query is `channel_category_str=<category>`, `page=1`, `limit=100`, `sortBy=order_in_category`, and `order=ASC`. Only the first requested page is read, then the `CURRENT` filter is applied. No next-page token or full-catalog completeness proof is returned. An absent template in this response is not proof that it does not exist elsewhere. The three reads are not an atomic snapshot.

No site is created, feature installed, asset uploaded, payment submitted, credential refreshed, or job saved. A local connection lock can be used during the read.

## Failures and next action

`AUTH_REQUIRED` is a human-action result. Credential permissions/environment, `CONNECTION_BUSY`, `PERMISSION_DENIED`, `OPTIONS_CONTRACT_UNVERIFIED`, and upstream failures require attention to the actual cause. Do not invent candidates or continue creation after an unverified options result. Read again after the connection or service issue is resolved.

For hosted use, this tool belongs to the account resource, not a selected-channel resource. Local operators use the [runtime connection flow](../runtime.md); hosted users use the configured [connection guide](../hosted-mcp-console/connection-guide.md). Connection readiness alone is not live authorization. The next step is a dry run with [channel_create](publ_channel_create.md).

Implementation: registration in `src/server.ts`, `src/publ-http.ts::options`, `src/contracts.ts::availableApps` and `planChannel`, and `src/papp-pricing.ts`.