# Set up a GradientArt GPT

This is a setup kit, not a published GPT or an automatic installation.
Publishing requires the operator's ChatGPT account and permissions.
The universal prompt at https://gra.dient.art/docs/use-with-ai works without it.

For an existing **ChatGPT plugin** that needs an executable server-side tool,
use the [remote MCP connection guide](https://gra.dient.art/agents/mcp.md).
Connect `https://gra.dient.art/api/mcp` using Streamable HTTP with no
authentication and discover `prepare_design`. Keep the existing plugin identity
and private visibility; there is no need to create a legacy GPT for that workflow.

## Check availability first

As of October 2026, OpenAI's documentation says new GPT creation and publishing
are unavailable on personal accounts. Eligible Business, Enterprise, and Edu
workspaces may still create GPTs when their settings permit it. OpenAI has also
announced a transition toward plugins; check the account's notices before
investing in publication. Existing GPTs may still be editable.

Verify current requirements:
https://help.openai.com/en/articles/8554397-creating-a-gpt

If your account cannot create a GPT, use the plugin MCP connection above, the
universal prompt with JSON import, or a terminal-capable agent. The configuration
steps below are specifically for legacy GPT Actions, not plugins.

## Prerequisites

Deploy the preparation API, schemas, and these public files on
https://gra.dient.art first. Confirm the API's temporary storage is configured.
Localhost URLs cannot be used by a hosted ChatGPT Action.

Review the site's privacy policy before publication. It must accurately cover
the full design sent to GradientArt, temporary storage, one-hour access expiry,
bearer-link access, and infrastructure retention. The authoring guide documents
the implementation; it is not a substitute for an operator-approved policy.
Do not publish until the policy and required ownership verification are ready.

## Configure

Open https://chatgpt.com/gpts/editor in an eligible account.

- **Name:** GradientArt
- **Description:** Turn ideas into editable CSS artwork. Open a temporary
  GradientArt editor link, refine the layers, and save only when you choose.
- **Instructions:** Paste the full contents of
  https://gra.dient.art/agents/chatgpt-instructions.md.
- **Knowledge:** Download and upload these files:
  - https://gra.dient.art/agents/designs.md
  - https://gra.dient.art/schemas/gradient-art-v1.schema.json
  - https://gra.dient.art/examples/minimal.gradient-art.json
  - https://gra.dient.art/examples/clones-and-variables.gradient-art.json
- **Capabilities:** Enable web search to read the current guide and code/data
  tools if available for file downloads. Image generation is not required.
- **Action authentication:** None. Do not supply GradientArt cookies or secrets.
- **Action schema:** Import
  https://gra.dient.art/agents/chatgpt-openapi.json, or paste its contents.
  It exposes only `prepareDesign`, with bundled local schema references.
- **Privacy policy URL:** Use the deployed site's reviewed policy URL.

Conversation starters:

- Create a sunset gradient with a warm horizon on a 1200 by 800 canvas.
- Design a geometric wallpaper with editable colors.
- Make a blue-and-gold abstract composition using layered gradients.

The Action explicitly requires confirmation because it transmits and
temporarily stores the design. Do not disable that confirmation to imply
there is no storage or data sharing.

## Preview before publishing

1. Check that the Action schema imports without errors and lists only
   `prepareDesign`. Schema acceptance and model support must be checked in the
   target account; a local schema check does not establish hosted compatibility.
2. Ask for a simple design. Approve the Action, inspect its successful response,
   and open the returned editor URL. Confirm the design is editable and unsaved.
3. Try layered artwork, then a design with variables and clones. Confirm the
   GPT uses the format correctly and repairs structured validation failures.
4. Confirm the answer includes the exact response expiration and the reminder
   that opening does not save. Check a link again after expiry; request a new one.
5. Test the file fallback with Actions disabled. Import that file in GradientArt.
6. Check publication permissions and the reviewed privacy URL, publish to the
   intended audience, then test the share URL from an account in that audience.
   Only then add that real URL as "Open in ChatGPT" on the Use with AI page.

Do not show a generic ChatGPT URL as if it opens a configured GradientArt GPT.
The repository cannot publish or verify a GPT in your account on your behalf.

## Limits and maintenance

Actions currently require request and response payloads below 100,000 characters
and have a 45-second timeout. The preparation API's 4 MiB ceiling is not the
effective limit for this client. Large designs should use JSON download/import
or the direct API from a terminal-capable agent.

See https://developers.openai.com/api/docs/actions/production for current limits.
Shared ChatGPT egress IPs may share the service's per-IP quota; honor 429 and
Retry-After rather than increasing retries.

After changing the project schema or API contract, run:

```sh
npm run schema:project
node scripts/chatgpt-action-schema.mjs
node --test tests/ai-integration.test.mjs
```

Commit the generated Action schema, re-import it into the GPT, refresh its
knowledge files and instructions, and repeat Preview checks before publishing.
