publ betaReference (MCP guide)
Open publ console

screen_describe — read a workflow contract

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

# screen_describe — read a workflow contract

Read a workflow's purpose, tools, input rules, examples, and implementation limits before preparing a call. This returns local catalog information; it does not inspect a live channel or select a target on the user's behalf.

## Input

| Field | Type | Required | Constraint |
| --- | --- | --- | --- |
| `screenId` | enum string | Yes | One of the 24 IDs below, preferably obtained from `screens_list.implementedWorkflows[].id`. |

- `account.channel-create`
- `design.theme`
- `design.menu-layout`
- `design.custom-code`
- `design.access-control`
- `design.iframe-pages`
- `design.menu-tree`
- `channel.settings`
- `channel.papps`
- `channel.signup-form`
- `design.menu-items`
- `design.default-entry`
- `account.channels`
- `design.menu-options`
- `channel.members`
- `channel.terms`
- `channel.member-moderation`
- `channel.managers`
- `account.domains`
- `account.profile`
- `account.seller-contact`
- `account.seller-information`
- `channel.monetization`
- `channel.memberships`

Omission, `null`, unknown IDs, and inventory source paths are invalid.

```json
{"screenId":"account.profile"}
```

## Inputs

| Field | Required here | Contract |
| --- | --- | --- |
| `screenId` | Yes | `channel.ticket-management`, `channel.ticket-schedules`, `channel.ticket-operations`, `channel.ticket-discount-settings`, `channel.ticket-refund-settings`, `channel.ticket-pricing`, `channel.legacy-ticket-policy`, `channel.messenger-create`, `channel.messenger-media`, `channel.messenger-lists`, `channel.messenger-settings`, `channel.messenger-notifications`, `channel.messenger-welcome`, `channel.web-messages`, `channel.web-delivery`, `channel.web-schedule-activation`, `channel.email-settings`, `channel.email-drafts`, `channel.email-labels`, `channel.email-draft-labels`, `channel.email-duplicate`, `channel.email-audience`, `channel.email-image-upload`, `channel.email-recipients-upload`, `channel.email-image-delete`, `channel.email-sender-verification`, `channel.email-delivery`, `channel.messaging-audience`, `channel.messaging-usage`, `channel.messenger-room-settings`, `channel.messenger-room-operators`, `channel.messenger-paid-pricing`, `channel.messenger-participants`, `channel.messenger-quiet`, `channel.messenger-read-marker`, `channel.messenger-reply-tasks`, `channel.messenger-reply-bulk`, `channel.messenger-direct-room-candidates`, `channel.messenger-direct-room-create`, `channel.messenger-room-memberships`, `channel.messenger-room-pricing`, `channel.messenger-delivery`, `channel.messenger-media-delivery`, `channel.messenger-promotion`, `channel.messenger-message-hide`, `channel.messenger-gift-reactions`, `channel.messenger-room-product`, `channel.messenger-app-products`, `channel.messenger-autonomous-rooms`, `channel.messenger-gift-products`, `channel.commerce-products`, `channel.reservations`, `channel.voice-call-tickets`, `channel.media`, `channel.content`, `channel.admin-app`, `account.channel-create`, `design.theme`, `design.menu-layout`, `design.custom-code`, `design.access-control`, `design.iframe-pages`, `design.menu-tree`, `channel.settings`, `channel.papps`, `channel.signup-form`, `design.menu-items`, `design.default-entry`, `account.channels`, `design.menu-options`, `channel.members`, `channel.terms`, `channel.member-moderation`, `channel.managers`, `account.domains`, `account.profile`, `account.seller-contact`, `account.seller-information`, `channel.monetization`, `channel.memberships`, `channel.points`, `channel.membership-displays`, `channel.seo`, `channel.sitemap`, `channel.analytics-tools`, `channel.marketing-banner`, `channel.marketing-popup`, `channel.questionnaires`, `channel.questionnaire-answers`, `channel.conversion-links`, `channel.legacy-promotion-links`, `channel.promotions`, `channel.promotion-notifications`, `channel.notification-settings`, `channel.profile`, `channel.branded-app`, `channel.monitoring-accounts`, `channel.export`, `channel.discounts`, `channel.segments`, `channel.statistics`, `channel.insight`, `channel.settlement`, `channel.sales-overview`, `channel.orders`, `channel.refunds` |

## Result

The stdio result is a workflow description, with no application `status` or `code`. The common identity fields are `id`, `title`, `description`, and `tools`. Workflow-specific fields can include `rules`, `limitations`, `source`, `sourceRevision`, `guideUri`, `useWhen`, `workflow`, `steps`, `example`, and `verification`; not every description contains all of them. Hosted results vary as described below.

- `tools` contains registered tool names associated with the workflow. On hosted connections, check the endpoint's available tools and resource permissions as well.
- `rules` and `limitations` describe the workflow's supported behavior. They do not query current templates, account rights, revisions, or plan gates.
- `example` is illustrative input, not a completed operation. Replace target IDs and revisions using the relevant current read result.
- `steps` or `workflow` explain the business sequence. They are not separate Next/Previous button tools and need not each become an agent call.
- `verification` describes recorded implementation evidence. Reading the description does not verify the current account, channel, or requested change.
- `guideUri`, when present, points to `publ://guide`. The guide is optional context rather than a prerequisite to every known call.

For example, after describing `account.profile`, call `account_profile_get` for the current profile and revision, then prepare `account_profile_apply` if a nickname change is requested. A channel-creation description is similarly followed by current options, not immediate use of invented template or app IDs.

## Hosted description results

All 24 screen IDs remain valid description inputs, but a valid ID does not grant access to its tools. Results include `resourceScope` and one of these `availability` values:

| Availability | Payload and behavior |
| --- | --- |
| `available` | The original description with all its tools retained. |
| `partial` | Only callable tools, identity, optional source/guide metadata, `excludedToolCount`, and scoped description/rules/note. Global examples, action sequences, conditions, and other workflow-specific guidance are omitted. |
| `unavailable` | `status:action_required`, `code:SCREEN_OUTSIDE_SCOPE`, `id`, `title`, `tools:[]`, and a message directing the person to authorize the appropriate resource. No callable workflow guidance is supplied. |

A workflow is unavailable when it has no business tool in the resource, even if shared discovery/recovery tools would otherwise remain. For a mixed screen such as `account.channels` or `account.domains`, use only its returned tool subset and those tools' schemas. General content in `publ://guide` may describe other resources. Selected-channel calls must use the bound code; shared status/resume calls must use a task type admitted to that resource.

The out-of-scope result requires a different authorized resource, not a retry through the same connection or a guessed raw API request. [Scoped discovery](publ_screens_list.md#hosted-resource-scope) explains inventory versus executable associations.

## Effects and limits

Repeated description reads do not create a job or change publ state. Stdio returns a local catalog object without publ API calls. Required authentication, current permissions, and the target's state are established by the relevant business read, not this description. Static catalog availability must not be treated as a hosted authorization decision.

Implementation: `src/server.ts` dispatch, the corresponding exported screen definitions in `src/catalog.ts`, and `src/hosted/scope.ts`.

## Current screen choices after naming migration

Screen IDs keep their spelling; public tool references use the unprefixed names. Input shape and existing choices remain compatible; this note does not redate the original actual checks.

## Orders and refunds catalog extension

Their operations are orders_get and refunds_get. [the workflow guide](../guides/orders-refunds.md) supplies constraints and known core-response limits. Recovery remains 34 types.