Create an Action

IMPORTANT
Adobe LLM Apps is currently in Beta.
Features, workflows, and UI shown here do not necessarily represent the final state of the product. To join the Beta, send an email to llm-apps-beta@adobe.com.

This guide walks you through defining an action in the LLM Apps UI. For background on what actions are and how they work, see Core Concepts.

Open the Actions page

Navigate to Actions in the left sidebar, or click Go to Actions on the App Detail page. If no actions exist yet, the page shows an empty state.

Actions page — no actions yet

Click + Create Action to open the fullscreen dialog.

Action cards

Each action appears as a card that shows:

  • The action name and description
  • A widget preview image — auto-generated from the widget, showing what the action output looks like inside the LLM platform
  • Badges: widget type (EDS), deployment status (Not deployed, Deployed to staging, Deployed to production), Changes not deployed when the action has been modified since the last deploy, and parameter count
  • A Visibility toggle — enables or disables the action on the live endpoint without redeploying
  • A Review link in the top-right corner to open the action editor

Actions page — action cards

When one or more actions have been modified since the last deployment, a Deployment needed banner appears at the top of the Actions page. Redeploy the app to apply the changes.

Action tab

The dialog has two tabs: Action and Widget Metadata.

Basic information

Create Action — basic information

  • Action name (required) — the identifier for your action (for example, Search Products).

  • Description (required) — a clear explanation of what the action does. The LLM platform uses this to decide when to invoke your action. For example: Search the product catalog by keyword. Returns matching products with name, category, image, and price.

  • Annotations — optional hints that describe the action’s behavior:

    table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2
    Annotation Description
    Destructive hint The action modifies or deletes data
    Idempotent Calling the action multiple times with the same arguments produces the same result
    Open world hint The action interacts with external systems
    Read only hint The action only reads data, never writes

    See Reference: Metadata Fields for details.

OpenAI metadata

  • Invoking status text — the message shown in the LLM platform while the action runs (maximum 64 characters). Example: Loading products …
  • Invoked status text — the message shown after the action completes (maximum 64 characters). Example: Products loaded.

Visibility and input parameters

Visibility controls where the action is available:

  • Expose to AI model — the action can be invoked by the AI model.
  • Show as widget in app surface — the action renders a visual widget.

Input parameters are the values the LLM platform sends to your handler. The model extracts them from the user’s message automatically. For Search Products we define:

  • category (String, optional) — category filter for narrowing results (for example, a product type or department).
  • query (String, optional) — free-text search term.

Each parameter has a Name, Type (String, Number, Integer, Boolean), Description, and a Required checkbox. Click + Add to add more parameters.

For more details, see Reference: Action Parameters.

Analytics

Create Action — analytics user intent

  • User intent — when enabled, ChatGPT is asked to summarize the conversation that led to calling this action. That summary is collected and surfaced in analytics, giving you insight into what users were trying to accomplish when the action was triggered.

Widget Metadata tab

This tab configures how the action’s visual response is rendered in the LLM platform. For a full explanation of how widgets work, see Guide: Set Up the Widget (EDS).

Create Action — widget metadata

Widget information

  • Type — the widget technology (currently EDS).
  • Widget domain (sandbox origin) — the origin where your widget is hosted. Required for app submission to OpenAI; must be unique per app.
  • Prefers border — renders the widget inside a bordered card.

Template URLs

  • Script URL — the entry point that bootstraps the widget, shared across all actions:
    https://main--<repo>--<owner>.aem.live/scripts/aem-embed.js
  • Widget embed URL — the EDS page for this specific action:
    https://main--<repo>--<owner>.aem.live/eds-widgets/<action-name>

Permissions

Hardware and browser APIs the widget can access:

Permission
Description
Camera
Access the device camera
Microphone
Access the device microphone
Geolocation
Access the user’s location
Clipboard
Read from or write to the clipboard

CSP Configuration

Create Action — permissions and CSP

Controls which external domains the widget iframe may contact. Every external domain must be explicitly allowlisted.

Directive
Description
Resource domains
Domains for static assets — images, fonts, scripts, styles
Connect domains
Domains the widget may contact via fetch, XHR, or WebSocket
Frame domains
Origins allowed for nested iframes; adding entries triggers stricter app review from OpenAI
Redirect domains
Trusted targets for openExternal redirect links (ChatGPT-specific)
Base URI domains
The base-uri CSP directive (MCP Apps SDK only, not supported by ChatGPT)

Click Create new action to save.

After creating an action

Your action appears as a card on the Actions page:

Actions page — action created

Each card shows the action name, description, type badge (EDS), deployment status (Not deployed), and parameter count. You can click to edit or delete, or click Review to inspect the configuration.

App Detail — not deployed

The action metadata is saved, but no code has been deployed yet. To make the action functional, you need to:

  1. Set up the EDS widget — see Guide: Set Up the Widget (EDS).
  2. Write the handler — see Guide: Write the Action Handler.
  3. Deploy — see Guide: Deploy Your App.

Next steps

recommendation-more-help
llm-apps-help-main-toc