> ## Documentation Index
> Fetch the complete documentation index at: https://docs.semicola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# White-label ChatGPT app

> What Semicola provides today for a customer-branded ChatGPT app: the Listing page ChatGPT destination, the public listing domain and the OpenAI domain-ownership token. The submission itself happens in OpenAI.

A white-label ChatGPT app puts a seller's own brand in ChatGPT, backed by their Semicola storefront.
Registering and submitting the app is done by the seller in OpenAI's developer portal, under their own
OpenAI account; Semicola never submits for you. This page says what Semicola already provides for that
submission and what it doesn't yet.

<Warning>
  Part of this workflow isn't available yet. Semicola does not issue a customer-branded MCP URL, a
  reviewer login, app icons, or an OpenAI submission package. Until it does, you can prepare the
  listing domain and the domain-ownership token, and rehearse in ChatGPT's developer mode, but you
  can't complete a white-label submission from Semicola alone.
</Warning>

## What's available now

| Step                              | Where                                      | Status                                                                                                   |
| --------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
| What OpenAI will see              | **Listing** page → **ChatGPT** destination | Available. Name, subtitle, website and category come from your listing; edit the listing to change them. |
| Public listing domain (one CNAME) | **Listing** page → **Public distribution** | Available with the Distribution package. Semicola verifies the CNAME and re-checks it periodically.      |
| OpenAI domain-ownership token     | **Listing** page → **ChatGPT** destination | Available once Public distribution is live. Semicola publishes the token and checks the address.         |
| Customer-branded MCP URL          | —                                          | Not available yet.                                                                                       |
| Reviewer access                   | —                                          | Not available yet.                                                                                       |
| Submission package and icons      | —                                          | Not available yet.                                                                                       |

An agent can walk the available steps with the
[Publish an OpenAI app](/skills/publish-an-openai-app) skill.

## 1. Make Public distribution live

On the **Listing** page (or with the tools named in brackets):

1. List the storefront on the marketplace (`publish_discovery` with `visibility: "marketplace"`).
2. Save a hostname on your own domain as the public listing domain (`save_discovery_hostname`). The
   result gives the one CNAME record to add at your DNS provider.
3. After the record is in place, verify it (`activate_discovery_hostname`). Only the `active` status
   counts; a pending or failed check shows what to fix.
4. Make the listing public on that domain (`publish_discovery` with `visibility: "public"`).

Only an account admin can change the public listing domain, publish the token, or change
visibility.

## 2. Prove domain ownership to OpenAI

When OpenAI's portal gives you a domain-ownership token, paste it in the **ChatGPT** destination
(`update_discovery_openai_challenge`). Semicola serves it at the address OpenAI checks on your public
listing domain. Replacing or removing a saved token asks you to confirm, because the old token stops
working at once.

Semicola then checks (`probe_discovery_openai_challenge`) that the address returns exactly your token:

| Status shown                   | Meaning                                            |
| ------------------------------ | -------------------------------------------------- |
| Not checked yet                | The token is saved; no check has run.              |
| Address returns the token      | The address serves your exact token.               |
| Address returns something else | The address answers, but not with the saved token. |
| Couldn't reach the address     | The public listing domain didn't answer.           |

This only confirms the address. OpenAI verifies the domain separately, on its own timeline.

## 3. Rehearse in ChatGPT developer mode

You can try prompts and record a practice session in ChatGPT's developer mode with the shared
endpoint, `https://api.semicola.com/mcp/v3`, as described in [MCP client setup](/v3/client-setup).
That connection carries the Semicola name and signs in to your own Semicola account; it is a
rehearsal, not the URL to submit for a white-label app.

When you rehearse:

* start with `get_status` and confirm it names the account you mean to demonstrate;
* try one read, one write that shows its confirmation before it runs, one follow-up that reuses an id
  from the previous answer, and one unsupported request;
* use a sandbox advertiser or a demo storefront for writes, and stop before real spend; and
* keep credentials, tokens and personal data out of any recording.

## 4. Complete the submission in OpenAI

Everything in OpenAI's form is entered by you in OpenAI's portal: publisher identity and contact,
app name and descriptions, website, support, privacy and terms URLs, logos, screenshots, starter
prompts, locales and countries, the MCP URL, reviewer access, tool justifications and tests, policy
answers, release notes and the review video. Semicola doesn't see the portal and can't tell you
whether a draft is complete or approved.

## Related

* [Listing](/sell/listing)
* [Publish an OpenAI app](/skills/publish-an-openai-app)
* [MCP client setup](/v3/client-setup)
* [Authentication](/v3/authentication)
