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

# goody_collections_list

> List a workspace's curated gift collections — and get the product_id to send one.

**Permission:** `Read` · **Workspace:** required (from `goody_workspaces_list`)

Lists the curated gift collections in a workspace — each a pre-built, themed gift the recipient picks from. Returns up to **25**. Each published collection includes a **`product_id`** you can send like any other product: the recipient chooses from the collection before accepting, the same way a Gift of Choice works.

<Note>
  Collections are **read-only** through the MCP server — there's no tool to **create** one (build collections in Goody for Business). You can, however, **send** a published collection: use its `product_id` (not the collection `id`).
</Note>

## Parameters

<ParamField body="workspace_id" type="string" required>
  Workspace UUID, from [`goody_workspaces_list`](/mcp-reference/tools/workspaces-list).
</ParamField>

<ParamField body="published_only" type="boolean" default="false">
  When true, returns only published collections, skipping drafts. Set true when the user is ready to send — only published collections have a `product_id`.
</ParamField>

## Returns

<ResponseField name="collections" type="object[]">
  Up to 25 collections in the workspace.

  <Expandable title="collection">
    <ResponseField name="id" type="string">Collection UUID. Identifies the collection itself — **not** what you send. To send, use `product_id`.</ResponseField>
    <ResponseField name="workspace_id" type="string">UUID of the owning workspace.</ResponseField>
    <ResponseField name="name" type="string | null">Collection name.</ResponseField>
    <ResponseField name="is_published" type="boolean">True when the collection has a published version.</ResponseField>
    <ResponseField name="price_cents" type="integer | null">Published price in cents; `null` when there's no published version.</ResponseField>
    <ResponseField name="product_id" type="string | null">The product to **send** this collection through — pass it as `product_id` to [`goody_order_batches_preview`](/mcp-reference/tools/order-batches-preview) / [`goody_order_batches_create`](/mcp-reference/tools/order-batches-create). `null` for unpublished collections (nothing to send yet).</ResponseField>
  </Expandable>
</ResponseField>

## Example

<CodeGroup>
  ```text 💬 Prompt theme={null}
  "Send our Welcome Aboard collection to the new hire, jordan@acme.com."
  ```

  ```json 🔧 Tool call theme={null}
  {
    "name": "goody_collections_list",
    "arguments": { "workspace_id": "0f3c…", "published_only": true }
  }
  ```

  ```json ↩️ Result theme={null}
  {
    "collections": [
      {
        "id": "7b22…",
        "workspace_id": "0f3c…",
        "name": "Welcome Aboard Bundle",
        "is_published": true,
        "price_cents": 8500,
        "product_id": "e91d…"
      }
    ]
  }
  ```
</CodeGroup>

To send it, hand that `product_id` to the normal flow — preview, confirm, send:

```json 🔧 goody_order_batches_preview theme={null}
{
  "name": "goody_order_batches_preview",
  "arguments": {
    "workspace_id": "0f3c…",
    "card_id": "a7f9…",
    "product_id": "e91d…",
    "recipients": [{ "name": "Jordan Lee", "email": "jordan@acme.com" }]
  }
}
```

<Tip>
  The collection's price is in `price_cents`; for the full breakdown, run [`goody_order_batches_preview`](/mcp-reference/tools/order-batches-preview) with the `product_id`. (Collection products aren't in the searchable catalog, so [`goody_products_get`](/mcp-reference/tools/products-get) won't find them.) For an open-ended "let them pick" gift that isn't a saved collection, use [`goody_gift_of_choice_list`](/mcp-reference/tools/gift-of-choice-list).
</Tip>
