> ## 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

> 한 번의 호출로 노트를 요약, transcript, 문서와 함께 선택적으로 가져오기

## 개요

`get_note`는 특정 노트의 상세 메타데이터를 가져오고, 선택적으로 요약, transcript, 생성된 문서를 **한 번의 병렬 호출**로 함께 포함시켜요. 추가 콘텐츠를 요청하려면 `include` 파라미터를 사용하세요. 요청된 모든 리소스가 동시에 가져와지므로 하나가 실패해도 나머지 응답이 막히지 않아요.

이 도구는 2026-05-06 기준으로 제거된 `list_note_summaries`, `get_note_summary`, `list_note_documents`, `get_note_document` 도구를 대체한 통합 콘텐츠 페처예요.

**주요 사용 사례:**

* 노트의 기본 정보(참가자, 날짜, 길이)만 필요하면 메타데이터만 가져와요.
* AI가 생성한 요약의 전체 내용을 얻으려면 `summary`를 포함하세요.
* 전체 대화 텍스트(타임스탬프가 붙은 단락이 하나의 문자열로 연결됨)를 얻으려면 `transcript`를 포함하세요.
* 노트의 모든 생성 문서(one-pager, custom 등)를 전체 내용과 함께 가져오려면 `documents`를 포함하세요.

**핵심 기능:**

* `Promise.allSettled`를 사용한 병렬 가져오기. 한 리소스가 실패해도 나머지는 그대로 반환돼요.
* `include`는 선택적 배열 enum이에요: `["summary"]`, `["transcript"]`, `["documents"]` 또는 이들의 조합.
* `documents` 옵션은 노트의 모든 문서에 대해 **전체 내용**을 반환해요(5KB로 제한하는 `search_notes`와 달리).
* `include`가 비었거나 생략되면 메타데이터만 반환해요.

<Warning>
  **참고:** `get_note`는 설계상 전체 문서 내용을 반환해요. 문서당 5KB로 제한하는 `search_notes`보다 무거워요. 내용 미리보기가 필요하면 대신 `search_notes`를 사용하세요.
</Warning>

## 파라미터

| Parameter  | Type   | Required | Description                                                                                            |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ |
| `noteGuid` | string | **Yes**  | 고유 노트 식별자. 보통 `list_notes`나 `search_notes`에서 얻어요.                                                      |
| `include`  | array  | Optional | 콘텐츠 옵션 배열: `"summary"`, `"transcript"`, `"documents"`. 모두 선택이며 추가 방식이에요. 생략하거나 빈 배열을 전달하면 메타데이터만 반환해요. |

### noteGuid (필수)

노트의 고유 식별자예요.

**예시:**

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

### include (선택)

병렬로 가져올 콘텐츠 유형의 배열이에요. 유효한 옵션:

* `"summary"` — 노트에서 처음으로 사용 가능한 AI 생성 요약을 가져와요(전체 내용).
* `"transcript"` — 전체 대화 transcript를 가져와요(단락이 `\n\n`로 연결됨).
* `"documents"` — 노트의 모든 생성 문서(one-pager, custom 등)를 전체 내용과 함께 가져와요.

**예시:**

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

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

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

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

## 응답 형식

### 성공 응답

```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                            | Type   | Description                                                                               |
| -------------------------------- | ------ | ----------------------------------------------------------------------------------------- |
| `noteGuid` / `guid`              | string | 노트 식별자(하위 호환을 위해 두 필드 모두 존재).                                                             |
| `title`                          | string | 노트 제목.                                                                                    |
| `webUrl`                         | string | Tiro 웹 앱에서 노트로 바로 가는 링크.                                                                  |
| `createdAt`                      | string | ISO 8601 생성 타임스탬프.                                                                        |
| `updatedAt`                      | string | ISO 8601 마지막 수정 타임스탬프.                                                                    |
| `recordingDurationSeconds`       | number | 녹음 길이(초).                                                                                 |
| `sourceType`                     | string | `live-voice`, `recording`, `text`, `video`, `webpage`, `offline-mode`, `onboarding` 중 하나. |
| `participants[]`                 | array  | 참가자별 `{ name, email }`. 둘 중 어느 쪽이든 `null`일 수 있어요.                                         |
| `summary` (포함된 경우)               | object | 요약이 있으면 `{ content, format, summaryId }`, 없으면 `null`.                                     |
| `summary.content`                | string | 요약 텍스트(HTML 제거, markdown 친화적).                                                            |
| `summary.format`                 | string | `MARKDOWN` 또는 `PLAIN_TEXT`.                                                               |
| `summary.summaryId`              | string | 요약의 식별자.                                                                                  |
| `transcript` (포함된 경우)            | string | `[HH:MM:SS]`가 앞에 붙은 줄들로 이뤄진 전체 transcript, `\n\n`로 연결돼요. transcript가 없으면 `null`.          |
| `documents` (포함된 경우)             | array  | 문서 객체 배열, 없으면 `null`. `include: ["documents"]`를 요청했지만 노트에 문서가 없으면 빈 배열 `[]`.              |
| `documents[].documentId`         | number | 안정적인 문서 식별자.                                                                              |
| `documents[].templateId`         | number | 숫자 template id(구분에는 `templateTitle`이 아니라 이걸 사용하세요).                                       |
| `documents[].templateTitle`      | string | 표시 라벨(locale에 따라 달라지며 custom 템플릿은 사용자가 편집 가능).                                            |
| `documents[].locale`             | string | 문서의 locale(예: `"en"`, `"ko"`).                                                            |
| `documents[].sections[]`         | array  | `{ content, format }` 섹션 배열.                                                              |
| `documents[].sections[].content` | string | 섹션 텍스트(HTML 제거).                                                                          |
| `documents[].sections[].format`  | string | 콘텐츠 형식(`MARKDOWN`, `PLAIN_TEXT` 등).                                                       |
| `documents[].createdAt`          | string | ISO 8601 문서 생성 타임스탬프.                                                                     |

<Note>
  요청한 리소스를 사용할 수 없을 때(예: 요약이 없을 때) 해당 필드는 생략되지 않고 `null`로 설정돼요. 이를 통해 호출자는 "요청에 포함되지 않음"과 "포함했지만 사용 불가"를 구분할 수 있어요.
</Note>

## 사용 예시

### 예시 1: 메타데이터만

**요청:**

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

**응답:**

```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"
}
```

### 예시 2: 요약만 포함

**요청:**

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

**응답:**

```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"
  }
}
```

### 예시 3: transcript와 문서 포함

**요청:**

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

**응답:**

```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"
    }
  ]
}
```

### 예시 4: 한 번의 호출로 모든 콘텐츠

**요청:**

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

메타데이터, 요약, 전체 transcript, 모든 문서를 병렬로 반환해요. 그중 하나라도 실패하면(예: 요약이 없을 때) 해당 필드는 `null`이지만 나머지는 그대로 채워져요.

## 권장 사례

<AccordionGroup>
  <Accordion title="include를 선택적으로 사용하기">
    필요한 콘텐츠만 요청하세요. 메타데이터는 약 50 토큰이고, 요약을 추가하면 약 200 토큰이, transcript는 시간당 약 3,000\~5,000 토큰이 추가돼요. 문서는 크기에 따라 달라요.

    메타데이터로 시작해서 빠른 개요가 필요하면 `get_note(include: ["summary"])`로, action item이나 핵심 정리가 필요하면 `get_note(include: ["documents"])`로 전환하세요.
  </Accordion>

  <Accordion title="내용 미리보기에는 search_notes 사용하기">
    노트에 무엇이 들어 있는지 빠르게 보려면 먼저 [`search_notes`](./search-notes)를 사용하세요. 5KB로 제한된 문서와 함께 매칭된 노트를 반환해요. 문서의 **전체** 내용이 필요할 때만 `get_note(include: ["documents"])`를 사용하세요.
  </Accordion>

  <Accordion title="null을 우아하게 처리하기">
    `include: ["summary"]`를 설정했지만 요약이 없으면 `summary`는 `null`이 돼요. 코드에서 이를 처리해야 해요. 요청했다는 이유만으로 필드가 항상 채워진다고 가정하지 마세요.
  </Accordion>

  <Accordion title="디스커버리와 콘텐츠 결합하기">
    점진적 공개(progressive disclosure) 패턴: `list_notes` → `search_notes` → `get_note(include: [...])`. 대부분의 워크플로우는 2단계에서 멈춰요. 전체 내용이 필요하거나 앞선 도구로 충분하지 않을 때만 3단계를 사용하세요.
  </Accordion>
</AccordionGroup>

## 자주 발생하는 오류

### 노트를 찾을 수 없음

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

**해결 방법:** `noteGuid`가 올바른지 확인하세요. `list_notes`나 `search_notes`로 유효한 노트 식별자를 찾으세요.

### 권한 scope 부족

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

**해결 방법:** API key에 `mcp:notes:read` scope가 있는지 확인하세요. scope 구성은 [Setup](/ko/developers/mcp/setup)을 참고하세요.

## 토큰 사용량

| Mode               | Tokens                       |
| ------------------ | ---------------------------- |
| 메타데이터만             | \~50                         |
| 메타데이터 + 요약         | \~250                        |
| 메타데이터 + transcript | 시간당 \~3,000–5,000            |
| 메타데이터 + 문서         | \~1,000–5,000 (문서 크기에 따라 다름) |
| 세 가지 모두            | \~4,000–10,000 (가변)          |

<Tip>
  **통합으로 절감:** 예전의 `list_note_summaries` + `get_note_summary` 체인이 이제 한 번의 `get_note(include: ["summary"])` 호출로 처리돼요. `list_note_documents` + `get_note_document` → `get_note(include: ["documents"])`도 마찬가지예요.
</Tip>

## 관련 도구

* **[`search_notes`](./search-notes)** — keyword로 노트를 찾고 그 문서까지 읽어야 할 때. 문서당 5KB로 제한된 문서 내용과 함께 최대 10개의 매칭 노트를 반환해요.
* **[`list_notes`](./list-notes)** — 어떤 노트가 있는지만 알면 될 때. 가장 가벼운 단계로 메타데이터만 반환해요.
* **[`get_note_transcript`](./get-transcript)** — 타임스탬프가 있는 원본 transcript용(대체 수단이며, 병렬 가져오기에는 대신 이 도구에서 `include: ["transcript"]`를 사용하세요).
* **[`list_document_templates`](./overview)** — 문서를 요청하기 전에 사용 가능한 문서 템플릿 유형을 확인하세요.
