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

# get_note

> Fetch a note with optional summary, transcript, and/or documents in a single call

## Overview

`get_note` fetches detailed metadata for a specific note and optionally includes summary, transcript, and/or generated documents in a **single parallel call**. Use the `include` parameter to request additional content; all requested resources are fetched concurrently, so one failure does not block the rest of the response.

This is the consolidated content fetcher that replaced the removed `list_note_summaries`, `get_note_summary`, `list_note_documents`, and `get_note_document` tools as of 2026-05-06.

**Primary Use Cases:**

* Fetch metadata only when you just need note basics (participants, dates, duration).
* Include `summary` to get the AI-generated summary's full content.
* Include `transcript` to get the full conversation text (timestamped paragraphs joined as one string).
* Include `documents` to retrieve every generated document on the note (one-pager, custom, etc.) with full content inline.

**Key Features:**

* Parallel fetch using `Promise.allSettled` — if one resource fails, others still return.
* `include` is an optional array enum: `["summary"]`, `["transcript"]`, `["documents"]`, or any combination.
* The `documents` option returns **full content** for every document on the note (unlike `search_notes` which caps at 5KB).
* Empty/omitted `include` returns metadata only.

<Warning>
  **Note:** `get_note` returns full document content by design — heavier than `search_notes` which caps at 5KB per document. For a content preview, use `search_notes` instead.
</Warning>

## Parameters

| Parameter  | Type   | Required | Description                                                                                                                                      |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `noteGuid` | string | **Yes**  | Unique note identifier — typically from `list_notes` or `search_notes`.                                                                          |
| `include`  | array  | Optional | Array of content options: `"summary"`, `"transcript"`, `"documents"`. All are optional and additive. Omit or pass empty array for metadata only. |

### noteGuid (required)

The unique identifier of the note.

**Example:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def"
}
```

### include (optional)

Array of content types to fetch in parallel. Valid options:

* `"summary"` — Fetch the note's first available AI-generated summary (full content).
* `"transcript"` — Fetch the full conversation transcript (paragraphs joined with `\n\n`).
* `"documents"` — Fetch all generated documents on the note (one-pager, custom, etc.) with complete content.

**Examples:**

```json theme={"system"}
// Metadata only
{}

// With summary
{ "include": ["summary"] }

// With transcript and documents
{ "include": ["transcript", "documents"] }

// All three
{ "include": ["summary", "transcript", "documents"] }
```

## Response Format

### Success Response

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "guid": "abc-123-def",
  "title": "Q2 OKR Planning",
  "webUrl": "https://platform.tiro.ooo/notes/abc-123-def",
  "participants": [
    { "name": "Alice Kim", "email": "alice@example.com" },
    { "name": "Bob Park", "email": null }
  ],
  "createdAt": "2026-04-15T10:00:00Z",
  "updatedAt": "2026-04-15T11:30:00Z",
  "recordingDurationSeconds": 3625,
  "sourceType": "live-voice",
  "summary": {
    "content": "## Key Decisions\n- Q2 roadmap prioritizes...\n## Action Items\n- Alice: finalize spec by...",
    "format": "MARKDOWN",
    "summaryId": "summary-id-123"
  },
  "transcript": "[10:00:05] Alice: Let's start with Q2 planning.\n[10:00:18] Bob: Sure, here's what...",
  "documents": [
    {
      "documentId": 42,
      "templateId": 1,
      "templateTitle": "One Pager",
      "locale": "en",
      "sections": [
        {
          "content": "## OKR Goals\nGoal 1: ...",
          "format": "MARKDOWN"
        }
      ],
      "createdAt": "2026-04-15T11:30:00Z"
    }
  ]
}
```

**Field Descriptions:**

| Field                            | Type   | Description                                                                                                                              |
| -------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `noteGuid` / `guid`              | string | Note identifier (both fields present for backward compatibility).                                                                        |
| `title`                          | string | Note title.                                                                                                                              |
| `webUrl`                         | string | Direct link to the note in the Tiro web app.                                                                                             |
| `createdAt`                      | string | ISO 8601 creation timestamp.                                                                                                             |
| `updatedAt`                      | string | ISO 8601 last-update timestamp.                                                                                                          |
| `recordingDurationSeconds`       | number | Recording length in seconds.                                                                                                             |
| `sourceType`                     | string | One of `live-voice`, `recording`, `text`, `video`, `webpage`, `offline-mode`, `onboarding`.                                              |
| `participants[]`                 | array  | `{ name, email }` per participant. Either may be `null`.                                                                                 |
| `summary` (when included)        | object | `{ content, format, summaryId }` if a summary exists, or `null` if none.                                                                 |
| `summary.content`                | string | Summary text (HTML-stripped, markdown-friendly).                                                                                         |
| `summary.format`                 | string | `MARKDOWN` or `PLAIN_TEXT`.                                                                                                              |
| `summary.summaryId`              | string | Identifier of the summary.                                                                                                               |
| `transcript` (when included)     | string | Full transcript with `[HH:MM:SS]` prefixed lines, joined with `\n\n`. `null` if no transcript available.                                 |
| `documents` (when included)      | array  | Array of document objects, or `null` if none. Empty array `[]` when `include: ["documents"]` is requested but the note has no documents. |
| `documents[].documentId`         | number | Stable document identifier.                                                                                                              |
| `documents[].templateId`         | number | Numeric template id (use this for discrimination, not `templateTitle`).                                                                  |
| `documents[].templateTitle`      | string | Display label (locale-sensitive, user-editable for custom templates).                                                                    |
| `documents[].locale`             | string | Locale of the document (e.g., `"en"`, `"ko"`).                                                                                           |
| `documents[].sections[]`         | array  | Array of `{ content, format }` sections.                                                                                                 |
| `documents[].sections[].content` | string | Section text (HTML-stripped).                                                                                                            |
| `documents[].sections[].format`  | string | Content format (`MARKDOWN`, `PLAIN_TEXT`, etc.).                                                                                         |
| `documents[].createdAt`          | string | ISO 8601 document creation timestamp.                                                                                                    |

<Note>
  When a requested resource is not available (e.g., no summary exists), the field is set to `null` rather than omitted. This allows callers to distinguish "not included in request" from "included but unavailable".
</Note>

## Usage Examples

### Example 1: Metadata only

**Request:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def"
}
```

**Response:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "title": "Q2 Planning",
  "participants": [{ "name": "Alice Kim", "email": "alice@example.com" }],
  "createdAt": "2026-04-15T10:00:00Z",
  "recordingDurationSeconds": 3625,
  "sourceType": "live-voice"
}
```

### Example 2: With summary only

**Request:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "include": ["summary"]
}
```

**Response:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "title": "Q2 Planning",
  "participants": [{ "name": "Alice Kim", "email": "alice@example.com" }],
  "createdAt": "2026-04-15T10:00:00Z",
  "recordingDurationSeconds": 3625,
  "sourceType": "live-voice",
  "summary": {
    "content": "## Key Decisions\n- OKR prioritizes feature X...\n## Action Items\n- Alice: finalize spec",
    "format": "MARKDOWN",
    "summaryId": "summary-id-123"
  }
}
```

### Example 3: With transcript and documents

**Request:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "include": ["transcript", "documents"]
}
```

**Response:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "title": "Q2 Planning",
  "participants": [{ "name": "Alice Kim", "email": "alice@example.com" }],
  "createdAt": "2026-04-15T10:00:00Z",
  "recordingDurationSeconds": 3625,
  "sourceType": "live-voice",
  "transcript": "[10:00:05] Alice: Let's start with Q2 planning...\n[10:00:18] Bob: Sure...",
  "documents": [
    {
      "documentId": 42,
      "templateId": 1,
      "templateTitle": "One Pager",
      "locale": "en",
      "sections": [
        { "content": "## OKR Goals\n...", "format": "MARKDOWN" }
      ],
      "createdAt": "2026-04-15T11:30:00Z"
    }
  ]
}
```

### Example 4: All content in one call

**Request:**

```json theme={"system"}
{
  "noteGuid": "abc-123-def",
  "include": ["summary", "transcript", "documents"]
}
```

Returns metadata, summary, full transcript, and all documents in parallel. If any one fails (e.g., no summary exists), the field is `null` but the others still populate.

## Best Practices

<AccordionGroup>
  <Accordion title="Use include selectively">
    Only request the content you need. Metadata is \~50 tokens; adding summary adds \~200 tokens; transcript adds \~3,000–5,000 tokens per hour; documents vary by size.

    Start with metadata, switch to `get_note(include: ["summary"])` if you need a quick overview, or `get_note(include: ["documents"])` for action items / key takeaways.
  </Accordion>

  <Accordion title="Use search_notes for content preview">
    For a quick peek at what's in a note, use [`search_notes`](./search-notes) first — it returns matched notes with documents capped at 5KB. Use `get_note(include: ["documents"])` only when you need the **full** document content.
  </Accordion>

  <Accordion title="Handle null gracefully">
    When `include: ["summary"]` is set but no summary exists, `summary` will be `null`. Your code should handle this — don't assume the field is always populated just because it was requested.
  </Accordion>

  <Accordion title="Combining discovery and content">
    Progressive disclosure pattern: `list_notes` → `search_notes` → `get_note(include: [...])`. Most workflows stop at step 2; only use step 3 when you need full content or when earlier tools don't give you enough.
  </Accordion>
</AccordionGroup>

## Common Errors

### Note not found

<Error>
  ```json theme={"system"}
  {
    "error": "Note not found",
    "code": "NOT_FOUND",
    "statusCode": 404
  }
  ```
</Error>

**Solution:** Verify the `noteGuid` is correct. Use `list_notes` or `search_notes` to find valid note identifiers.

### Insufficient scope

<Error>
  ```json theme={"system"}
  {
    "error": "Insufficient scope: mcp:notes:read required",
    "code": "FORBIDDEN",
    "statusCode": 403
  }
  ```
</Error>

**Solution:** Ensure your API key has `mcp:notes:read` scope. See [Setup](/en/developers/mcp/setup) to configure scopes.

## Token Usage

| Mode                  | Tokens                                  |
| --------------------- | --------------------------------------- |
| Metadata only         | \~50                                    |
| Metadata + summary    | \~250                                   |
| Metadata + transcript | \~3,000–5,000 per hour                  |
| Metadata + documents  | \~1,000–5,000 (varies by document size) |
| All three             | \~4,000–10,000 (varies)                 |

<Tip>
  **Consolidation savings:** The old `list_note_summaries` + `get_note_summary` chain now fits into a single `get_note(include: ["summary"])` call. Same for `list_note_documents` + `get_note_document` → `get_note(include: ["documents"])`.
</Tip>

## Related Tools

* **[`search_notes`](./search-notes)** — When you need to find notes by keyword AND read their documents. Returns up to 10 matched notes with document content capped at 5KB per document.
* **[`list_notes`](./list-notes)** — When you just need to know which notes exist. Lightest tier; metadata only.
* **[`get_note_transcript`](./get-transcript)** — For raw transcript with timestamps (fallback; use `include: ["transcript"]` on this tool instead for parallel fetch).
* **[`list_document_templates`](./overview)** — Discover available document template types before requesting documents.
