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

# Meeting Notes

> Meeting notes and action items pushed in from external transcription tools.

## What it is

Meeting notes plus action items, pushed in from external tools (transcription services, notetakers, automations). One row per meeting: title, date, attendees, a condensed summary, the action items, and optionally the full verbatim transcript.

Agents read these like any other view — a meeting pushed here is immediately queryable and citable in chat. The `transcript` column is search-indexed but excluded from default projections, so heavy meetings don't weigh down every query.

## How it gets data

Ingest-enabled — external ingest is the primary write path (see [Ingest API](/for-agents/ingest)):

```http theme={null}
POST /api/ingest/meeting_notes
Authorization: Bearer pk_...
Content-Type: application/json
```

* One JSON record per request; unknown fields are dropped.
* **Idempotent upsert** on `(tenant_id, external_id)` — use the source tool's meeting id as `external_id` so re-delivery updates instead of duplicating.
* `tenant_id` / `workspace_id` come from the API key context, never from the body.

Minimal example payload:

```json theme={null}
{
  "external_id": "fireflies-abc123",
  "title": "Weekly ops sync",
  "meeting_date": "2026-08-12T09:00:00Z",
  "attendees": "Pat, Stefan",
  "summary": "Discussed Q4 replenishment plan and shipment bundling.",
  "action_items": "- Confirm supplier lead times\n- Approve PO-2026-014",
  "source": "fireflies",
  "duration_min": 45
}
```

## Fields

| Field          | Label          | Type     | Writable    | Description                                                                           |
| -------------- | -------------- | -------- | ----------- | ------------------------------------------------------------------------------------- |
| `external_id`  | —              | text     | API only    | Source meeting id — the upsert key. Required on ingest; not surfaced as an app column |
| `title`        | Title          | text     | create-only | Meeting title                                                                         |
| `meeting_date` | Date           | datetime | create-only | When the meeting took place                                                           |
| `attendees`    | Attendees      | text     | create-only | Attendee list (free text)                                                             |
| `summary`      | Summary        | text     | create-only | Condensed summary — what agents cite first                                            |
| `transcript`   | Transcript     | text     | create-only | Full verbatim meeting transcript; `summary` / `action_items` stay the condensed views |
| `action_items` | Action Items   | text     | create-only | Action items agreed in the meeting                                                    |
| `source`       | Source         | text     | create-only | Source tool (e.g. fireflies, otter) — useful for filtering by pipeline                |
| `duration_min` | Duration (min) | number   | create-only | Meeting length in minutes                                                             |

Create-only: settable when the row is created (via ingest or `data_row_create`), not editable afterwards in the app. "API only" = real database column not registered as a visible app column.

<Note>
  Like every workspace table, meeting notes also carry the system columns `id`, `tenant_id`, `workspace_id`, `created_at`, and `updated_at` — set automatically, never sent by integrations.
</Note>

## Query it

```json theme={null}
{
  "method": "tools/call",
  "params": {
    "name": "data_query",
    "arguments": {
      "view_slug": "meeting_notes",
      "search": "replenishment",
      "select_fields": ["title", "meeting_date", "summary", "action_items"],
      "sort_by": "meeting_date",
      "limit": 10
    }
  }
}
```
