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

# ChatGPT

> Add the Swoop app to ChatGPT and create presentations from your conversations

Swoop is available as a [ChatGPT app](https://chatgpt.com/apps/swoop/asdk_app_69cbd604693c81918680b5f4c0ec3b63). Once enabled, you can ask ChatGPT to create and edit real, viewable Swoop decks without leaving the conversation — and an interactive Swoop widget renders inline as your deck is generated.

<Note>
  Unlike a generic MCP connector, the Swoop ChatGPT app is a published, OAuth-secured integration. You enable it from the ChatGPT apps directory — no URLs or config files to manage.
</Note>

## Prerequisites

* A Swoop account at [swoop.it](https://swoop.it)
* A ChatGPT account with apps enabled (apps are rolling out across plans and regions; availability varies)

## Enable the Swoop app

<Frame caption="Connecting Swoop to ChatGPT">
  <iframe className="w-full aspect-video rounded-xl" src="https://www.youtube-nocookie.com/embed/8r-bpdyEphI" title="Connect Swoop to ChatGPT" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />
</Frame>

The flow is the same across clients: open the apps directory, enable Swoop, and authenticate with your Swoop account. Platform-specific entry points are below.

<Tabs>
  <Tab title="Web">
    <Steps>
      <Step title="Open the Swoop app listing">
        Go to the [Swoop app in the ChatGPT directory](https://chatgpt.com/apps/swoop/asdk_app_69cbd604693c81918680b5f4c0ec3b63), or in ChatGPT expand the left-side menu → Apps and search for **Swoop**.
      </Step>

      <Step title="Enable the app">
        Click **Connect** (or **Enable**) on the Swoop listing.
      </Step>

      <Step title="Authenticate">
        A window opens to sign in with your Swoop account. After signing in and approving access, the app is connected.
      </Step>

      <Step title="Verify the connection">
        Start a new chat. Open the **+** (apps) menu in the composer — **Swoop** should appear in the list of available apps.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Desktop">
    The ChatGPT desktop app (macOS / Windows) uses the same directory as the web client.

    <Steps>
      <Step title="Open Settings → Apps">
        In the ChatGPT desktop app, open **Settings**, then **Apps**, then **Browse apps** and search for **Swoop**. You can also open the [directory listing](https://chatgpt.com/apps/swoop/asdk_app_69cbd604693c81918680b5f4c0ec3b63) in your browser.
      </Step>

      <Step title="Enable the app">
        Click **Connect** on the Swoop listing.
      </Step>

      <Step title="Authenticate">
        Sign in with your Swoop account and approve access when prompted.
      </Step>

      <Step title="Verify the connection">
        Open a new chat and check the **+** (apps) menu for **Swoop**.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Android">
    <Steps>
      <Step title="Open Settings → Apps">
        In the ChatGPT Android app, tap your profile, open **Apps**, then **Browse apps** and search for **Swoop**.
      </Step>

      <Step title="Enable the app">
        Tap **Connect** on the Swoop listing.
      </Step>

      <Step title="Authenticate">
        Sign in with your Swoop account and approve access.
      </Step>

      <Step title="Verify the connection">
        Open a new chat and tap the **+** menu in the composer — **Swoop** should be listed.
      </Step>
    </Steps>

    <Note>
      App support on mobile clients is still rolling out. If you don't see **Apps** or the Swoop app, update to the latest version of the ChatGPT app, or enable Swoop on web first — connected apps follow your account.
    </Note>
  </Tab>

  <Tab title="iOS">
    <Steps>
      <Step title="Open Settings → Apps">
        In the ChatGPT iOS app, expand the left-side menu (top-left corner of the screen), open **Apps** (If you don't see it, you might need to click **More** first to expand the options), and search for **Swoop**.
      </Step>

      <Step title="Enable the app">
        Tap **Connect** on the Swoop listing.
      </Step>

      <Step title="Authenticate">
        Sign in with your Swoop account and approve access.
      </Step>

      <Step title="Verify the connection">
        Open a new chat and tap the **+** menu in the composer — **Swoop** should be listed.
      </Step>
    </Steps>

    <Note>
      App support on mobile clients is still rolling out. If you don't see **Apps** or the Swoop app, update to the latest version of the ChatGPT app, or enable Swoop on web first — connected apps follow your account.
    </Note>
  </Tab>
</Tabs>

## How Swoop works in ChatGPT

The ChatGPT integration behaves differently from a plain MCP client in a few important ways. Knowing them explains what you'll see during a conversation.

### ChatGPT gathers details before building

Swoop runs **non-interactive** in ChatGPT — there is no in-deck clarification step. So before creating a deck, ChatGPT collects the details Swoop needs directly in chat: your target **audience**, **deck length**, **purpose**, and **time available** to present. If you don't supply these up front, ChatGPT will ask. Provide them in your first message to skip the back-and-forth.

### The Swoop widget renders inline

When you create or edit a deck, ChatGPT shows an interactive **Swoop widget** (an embedded iframe) inside the conversation. It displays slide thumbnails as they render and links through to the full deck in the Swoop dashboard.

### Generation continues in the background

Presentation generation takes longer than a normal chat reply. The `create_presentation` and `edit_presentation` tools return early — within roughly 20 seconds — while the deck keeps rendering in the background. When a response is still in progress (`isInProgress` is true), ChatGPT relays the `dashboardLink` instead of describing slides it hasn't seen yet. Open that link to watch live progress and view the finished deck.

## Usage

Once the app is enabled, ask ChatGPT to use Swoop naturally:

* "@Swoop create a presentation about our Q1 sales results."
* "Make a 10-slide pitch deck for Series A investors about our product. Use @Swoop"
* "Edit my @Swoop deck — refocus the intro on enterprise IT buyers."
* "Show me my recent @Swoop presentations."

<Tip>
  It's important to use `@Swoop` to mention the app for ChatGPT to consistently route requests to Swoop.
</Tip>

<Tip>
  ChatGPT reuses the deck's `threadId` automatically within a conversation, so follow-up edits build on the same presentation. To act on an older deck, ask ChatGPT to search your presentations first.
</Tip>

## Available tools

The Swoop ChatGPT app exposes five tools. ChatGPT routes your request to the right one by intent — you don't call them directly.

### `create_presentation`

Creates a new, viewable, exportable Swoop deck from a natural-language description.

| Property    | Value | Description                                  |
| ----------- | ----- | -------------------------------------------- |
| Read-only   | No    | Creates a new presentation                   |
| Destructive | No    | Always produces a new deck on a fresh thread |
| Idempotent  | No    | Each call creates a new presentation         |

<ParamField body="prompt" type="string" required>
  Natural-language description of the deck — topic, framing, and content angles. Example: "10-slide pitch deck about our Q4 product launch for enterprise IT buyers; emphasize security and integrations."
</ParamField>

<ParamField body="audience" type="string">
  Target audience for the deck (e.g. "Series A investors", "internal engineering team"). ChatGPT asks for this in chat if you don't specify it.
</ParamField>

<ParamField body="slideCount" type="number">
  Number of slides to generate (1–30). Typical: 5–8 for an overview, 10–15 for a pitch, 20+ for a workshop. ChatGPT asks if unspecified.
</ParamField>

<ParamField body="purpose" type="string">
  What the deck is for: pitch, investor update, lesson, internal report, workshop, sales proposal, etc. ChatGPT asks if unspecified.
</ParamField>

<ParamField body="tone" type="string">
  Tone of voice: formal, casual, confident, educational, playful, etc. Optional — defaults to neutral-professional.
</ParamField>

<ParamField body="timeAvailable" type="string">
  How long you have to present (e.g. "5 minutes", "self-paced"). Used to right-size slide density. Optional.
</ParamField>

### `edit_presentation`

Modifies a deck created earlier in the conversation — adding slides, rewording, redesigning, or refocusing on a different audience or angle.

| Property    | Value | Description                                                               |
| ----------- | ----- | ------------------------------------------------------------------------- |
| Read-only   | No    | Modifies an existing presentation                                         |
| Destructive | Yes   | Edits overwrite existing slides, though previous versions can be reverted |
| Idempotent  | No    | Each call applies additional changes                                      |

<ParamField body="prompt" type="string" required>
  Natural-language description of the edit. Be specific. Example: "Replace the third slide with a customer testimonial quoting Acme Corp; keep the rest of the deck unchanged."
</ParamField>

<ParamField body="threadId" type="string" required>
  Thread identifier returned by `create_presentation` or a previous `edit_presentation` call. Identifies the deck to edit.
</ParamField>

<ParamField body="audience" type="string">
  Optionally retarget the deck's audience. Same context fields as `create_presentation` (`slideCount`, `purpose`, `tone`, `timeAvailable`) are also accepted.
</ParamField>

### `search_presentations`

Finds the current user's Swoop presentations by title, or lists the most recently modified decks. Each result includes a `threadId` to pass to `edit_presentation`, `share_presentation`, or `get_presentation`.

| Property    | Value | Description                                |
| ----------- | ----- | ------------------------------------------ |
| Read-only   | Yes   | Only reads existing presentations          |
| Destructive | No    | —                                          |
| Idempotent  | Yes   | Returns current results for the same query |

<ParamField body="query" type="string">
  Partial or full title to search for (case-insensitive). Omit to list your 10 most recently modified presentations ("show me my decks").
</ParamField>

<ParamField body="limit" type="number">
  Maximum number of results to return. Defaults to 10; values above 50 are clamped to 50.
</ParamField>

### `share_presentation`

Generates a public, no-auth share link for the latest presentation on a thread.

| Property    | Value | Description                                     |
| ----------- | ----- | ----------------------------------------------- |
| Read-only   | No    | Creates a public view link if one doesn't exist |
| Destructive | No    | Does not modify deck content                    |
| Idempotent  | Yes   | Returns the same share link on repeat calls     |

<ParamField body="threadId" type="string" required>
  Thread identifier from `create_presentation`, `edit_presentation`, or `search_presentations`.
</ParamField>

The response includes a `shareLink` (public URL — anyone with it can view the deck), a `dashboardLink`, the `threadId`, and the deck `title`.

### `get_presentation`

Reads a lightweight, read-only summary of the latest presentation on a thread — per-slide titles, short text snippets, and an image flag. ChatGPT uses this to ground edits in the deck's current content.

| Property    | Value | Description                         |
| ----------- | ----- | ----------------------------------- |
| Read-only   | Yes   | Direct read; does not run the agent |
| Destructive | No    | —                                   |
| Idempotent  | Yes   | Reflects current deck state         |

<ParamField body="threadId" type="string" required>
  Thread identifier from `create_presentation`, `edit_presentation`, or `search_presentations`.
</ParamField>

The response includes `title`, `slideCount`, and a `slides` array (`slideNumber`, `title`, `textSummary`, `hasImage`, `thumbnailUrl`). The `isInProgress` flag is true while the deck is still generating — clients poll until it turns false.

## Common output fields

`create_presentation` and `edit_presentation` return a structured response:

| Field           | Type               | Description                                                                  |
| --------------- | ------------------ | ---------------------------------------------------------------------------- |
| `response`      | string             | The agent's text response                                                    |
| `threadId`      | string             | Reuse in follow-up requests for conversation continuity                      |
| `projectId`     | string (optional)  | The active presentation project ID                                           |
| `title`         | string (optional)  | The presentation title                                                       |
| `thumbnailUrl`  | string (optional)  | Cover thumbnail (first slide); may 404 until rendered                        |
| `slides`        | array (optional)   | Per-slide thumbnail URLs for progressive rendering in the widget             |
| `dashboardLink` | string (optional)  | URL to view or edit the deck in the Swoop dashboard — always surfaced to you |
| `toolResults`   | array (optional)   | Results from internal tools executed during the request                      |
| `isInProgress`  | boolean (optional) | True when the deck is still rendering in the background                      |
