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

# Tool 블록

> Agent에게 API 호출, 코드 실행, 데이터베이스 조회 능력을 줍니다

**Tool 블록**은 실행 중 Agent가 고를 수 있는 기능입니다. 도구는 런타임이 두 종류입니다.

* **HTTP** 외부 API를 부릅니다.
* **Inline** JavaScript, Python, SQL 조각을 우리 런타임의 샌드박스에서 돌립니다.

## Tool마다 필요한 네 가지

1. **이름(name)** Agent가 부르는 방법. 짧고 동사형으로(`refund_charge`, `lookup_order`).
2. **설명(description)** 부를지 말지 정할 때 Agent가 읽는 한 줄. **가장 중요한 필드입니다.** 이해 못 하는 도구를 Agent는 부르지 않습니다.
3. **파라미터(parameters)** 종류가 정해진 입력들. 각각 이름, 타입, 필수/선택, 자기 설명.
4. **구현(implementation)** 실제 호출. HTTP는 URL + method, Inline은 코드 본문.

<Frame>
  <img src="https://mintcdn.com/conscience-technology/Jo24V8Wx9hATIxJq/images/docs/workflow-tool-inspector.png?fit=max&auto=format&n=Jo24V8Wx9hATIxJq&q=85&s=da1888b91d07abd8aed5a6aad4bdda96" width="400" alt="Tool 인스펙터 — 이름, 설명, 실행 방식, 코드 본문, 파라미터가 차례로 놓여 있다" data-path="images/docs/workflow-tool-inspector.png" />
</Frame>

## HTTP 도구

이렇게 정합니다.

* **Method** `GET`, `POST`, `PATCH`, `PUT`, `DELETE`.
* **URL** path 조각에 `{param}` 템플릿을 씁니다.
* **Headers** 시크릿을 넣을 수 있습니다(아래 참고).
* **Body 템플릿** `POST`/`PATCH`/`PUT` 용. `{param}`로 채웁니다.

응답은 JSON으로 Agent에게 전달됩니다. API가 JSON이 아닌 걸 돌려주면 Tool 안에 작은 후처리기를 더할 수 있습니다.

## Inline 도구

JavaScript, Python, SQL로 함수 본문을 씁니다. 파라미터는 이름 있는 변수로 알아서 들어옵니다. 반환값이 Agent가 보는 것입니다.

예를 들면 이렇습니다(JavaScript).

```javascript theme={null}
// Parameters: order_id (string)
const order = await db.query('SELECT * FROM orders WHERE id = $1', [order_id]);
return { total: order.total_cents / 100, status: order.status };
```

Inline은 적당한 CPU·메모리 예산의 샌드박스에서 돌고, 기본으로 파일시스템과 네트워크에 못 닿습니다. 필요하면 Tool 설정에서 나가는 호스트를 허용 목록에 넣으세요.

## 파라미터

파라미터마다 이런 걸 가집니다.

* **Type** `string`, `number`, `boolean`, `enum`, `object`, `array`.
* **Description** 한 줄. 값을 고를 때 Agent가 읽습니다.
* **Required / optional** 필수는 늘 채워지고, 선택은 Agent가 쓸모 있다고 볼 때만 채웁니다.
* **Default** Agent가 선택 파라미터를 빼면 이 값을 씁니다.
* **Enum values** `enum` 타입에 허용되는 리터럴 목록.

드래그 핸들로 파라미터 순서를 바꿉니다. 순서는 표현에만 영향을 주고 뜻은 안 바뀝니다.

## 시크릿과 헤더

어떤 헤더나 바디 값이든 **secret**으로 표시할 수 있습니다. 시크릿은 이렇습니다.

* 저장한 뒤 UI에 절대 안 보입니다(`••••`로 뜹니다).
* 내보낸 Flow JSON에 절대 안 들어갑니다.
* 부를 때 암호화된 워크스페이스 저장소에서 들어옵니다.

Tool 인스펙터에서 시크릿을 로테이션할 수 있습니다. 이전 실행은 그대로 되고, 새 실행은 새 값을 씁니다.

## 승인

위험이 큰 도구(자금 이동, 파괴적 DB 작업, 알림)는 **Require approval before call**을 켭니다. 멈춘 호출은 Agent가 고른 정확한 인자와 함께 Approvals 큐에 뜹니다.

## Tool 테스트

Tool마다 **Test** 패널이 있습니다. 파라미터를 채우고 Run을 누르면 원본 응답을 봅니다. Draft 자격증명을 쓰므로 마음 놓고 여러 번 시험할 수 있습니다.
