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

# Didit MCP 예제: 프롬프트 및 에이전트 대화

> Didit MCP로 KYC 워크플로와 세션을 만들고, KYB 법인 등기부를 검색하고, 검토 대기열을 관리하고, 규칙 백테스트와 webhook을 설정하는 예제 프롬프트와 에이전트 대화를 소개합니다.

A few patterns that show what the Didit MCP is good at. Describe what you need in plain language, and the agent picks the tools. Every tool named below exists in the [도구 참조](https://docs.didit.me/ko/integration/mcp/tools.md).

***

## 빠른 프롬프트

**운영 및 모니터링(앱 간)**

* *"모든 앱에서 최근 검토 중인 세션 5개를 보여 주세요."* → `didit_session_search`를 `status: "In Review"`, `limit: 5`와 함께 호출
* *"지난 15일 동안 전화번호 인증을 시도했지만 이탈한 사람은 몇 명인가요?"* → `didit_analytics`를 `last_n_days: 15`와 함께 호출(호출 한 번으로 기능 퍼널을 조회)
* *"vendor\_data가 `user_8842`인 고객을 찾아서 어느 앱에서 어떤 상태인지 알려 주세요."* → `didit_vendor_user_search`
* *"제 크레딧 잔액과 이번 달 전환율은 얼마인가요?"* → `didit_org_get_balance` + `didit_analytics`

**구성**

* *"ID 스캔과 라이브니스 감지를 포함한 KYC 워크플로를 만들고 인증 링크를 주세요."* → `didit_workflow_create` → `didit_session_create`
* *"여권만 허용하는 신분증 인증 워크플로를 만든 다음 셀피 라이브니스 감지를 추가해 주세요."* → `didit_workflow_create`. `documents_allowed: ["PASSPORT"]`라고만 지정하면 됩니다. MCP가 모든 국가에 대해 여권 전용으로 확장합니다(자세한 내용은 [고급 → 기능 구성](https://docs.didit.me/ko/integration/mcp/advanced.md#기능-구성과-허용-목록) 참고).
* *"새 워크플로입니다. 여권을 스캔하세요. 신분증이 거부되면 세션을 거부하세요. 입력된 직업이 ≈ 'Software Engineer'(≥60%)이면 라이브니스 감지를 실행하세요. 그렇지 않으면 스페인어로 주소 증명을 요청하세요. 그다음 자동으로 결정하세요."* → `didit_workflow_get_field_definitions` → `didit_workflow_validate_graph` → `didit_workflow_set_graph`
* *"워크플로 `26d33c04…`에서 신분증 인증 후 거부되면 세션을 거부하세요. 직업이 'Software Engineer'와 80% 이상 유사하면 자금 증명 Document AI 단계를 추가하세요. 그다음 계속 진행하세요."* → `didit_workflow_search` → `didit_workflow_get_graph` → `didit_workflow_edit_graph`(작은 작업은 검토 가능한 초안으로 저장됩니다)
* *"문서 스캔 대신 BankID 또는 MitID 로그인을 제공할 수 있는 국가는 어디인가요?"* → `didit_workflow_get_id_verification_methods_catalog`
* *"`https://myapp.com/webhooks/didit`에서 상태 업데이트를 받을 webhook 대상을 등록해 주세요."* → `didit_webhook_create`

**컴플라이언스**

* *"이 지갑을 AML 스크리닝하고, 걸리면 차단 목록에 추가해 주세요."* → `didit_transaction_screen_wallet` → `didit_blocklist_add`
* *"세션 `…`에 대한 케이스를 열고 저에게 배정해 주세요."* → `didit_case_create` → `didit_case_manage`
* *"Acme Ltd는 영국에 등록된 회사인가요? 주주는 누구인가요?"* → `didit_verify_kyb_search` → `didit_verify_kyb_select`

***

## 1. 인증 설정하기

> **사용자:** "제 앱에 ID 스캔과 라이브니스 감지를 포함한 Didit 신원 인증을 설정하고, 직접 시도해 볼 수 있는 링크를 주세요."
>
> **에이전트:** 먼저 워크플로를 만들겠습니다. *(`didit_workflow_create`를 `workflow_label: "Standard KYC"`, `features: [{ "feature": "OCR" }, { "feature": "LIVENESS" }]`와 함께 호출)* **"Standard KYC"**가 게시되었습니다. `workflow_id = 6f2c…`입니다. 이제 시험해 볼 세션을 만들겠습니다. *(`didit_session_create`를 `workflow_id: "6f2c…"`, `vendor_data: "test-user-1"`과 함께 호출)* 인증 링크는 다음과 같습니다: `https://verify.didit.me/session/…`. 휴대폰에서 열면 흐름을 진행할 수 있습니다. 운영 환경에서는 백엔드가 REST API로 세션을 생성합니다:
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/ \
>   -H "x-api-key: $DIDIT_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{ "workflow_id": "6f2c...", "vendor_data": "internal-user-id", "callback": "https://myapp.com/done" }'
> ```
>
> 이 `x-api-key`는 백엔드용 애플리케이션의 **REST API 키**입니다. 이 MCP에 로그인하는 방식인 *Didit로 로그인*과는 별개입니다. webhook 대상도 함께 등록해 드릴까요?
>
> **사용자:** "네, 제 엔드포인트는 `https://myapp.com/webhooks/didit`입니다."
>
> **에이전트:** *(`didit_webhook_create`를 `label: "Production"`, `url: "https://myapp.com/webhooks/didit"`, `webhook_version: "v3"`, `subscribed_events: ["status.updated"]`와 함께 호출)* 완료되었습니다. 반환되는 정보에서 서명 비밀 값은 가려져 있으므로 콘솔의 **Webhooks**에서 복사해 `DIDIT_WEBHOOK_SECRET`으로 저장하세요. 각 전송을 신뢰하기 전에 `X-Signature-V2` 헤더를 검증하세요.

***

## 2. KYB: 법인 등기부에서 회사 확인하기

> **사용자:** "Acme Trading Ltd가 실제 영국 회사인가요? 등록 번호는 12345678입니다."
>
> **에이전트:** *(`didit_verify_kyb_search`를 `country_code: "GB"`, `name: "Acme Trading Ltd"`, `registration_number: "12345678"`과 함께 호출)* 후보는 하나입니다: **ACME TRADING LTD**, 2019년 설립, 상태 *active*, 등록 사무소는 맨체스터입니다. 임원과 주주가 포함된 전체 기록을 보시겠습니까?
>
> **사용자:** "네, 그리고 실소유자가 누구인지도 알려 주세요."
>
> **에이전트:** *(후보의 `kyb_response_id`와 함께 `didit_verify_kyb_select`를 호출)* 전체 기록을 가져왔습니다. 이사 두 명, 그리고 주식 및 의결권의 75% 이상을 보유한 지배권자 한 명이 있습니다. 기록에는 제출 이력과 등록 주소도 포함되어 있습니다. 이 작업은 과금되는 등기부 조회였습니다(크레딧을 소비하는 호출 두 번). 모든 기업 고객에 대해 이 과정을 자동으로 실행하길 원하시면 `didit_workflow_create`로 KYB 워크플로에 `KYB_REGISTRY`를 추가할 수 있습니다. `didit_workflow_get_kyb_registry_catalog`는 영국 등기부가 판매하는 데이터 등급을 알려 줍니다.

***

## 3. 검토 대기열 처리

> **사용자:** "검토를 기다리는 건이 무엇이고, 각각 무엇이 문제인가요?"
>
> **에이전트:** *(`didit_session_search`를 `status: "In Review"`, `limit: 10`으로 호출)* — 두 앱에서 검토 중인 세션이 4개 있습니다. 각 결정을 읽고 있습니다. *(각 `session_id`에 대해 `didit_session_get_decision` 호출)*
>
> | 세션 | 앱 | 중단된 이유 |
> | - | - | - |
> | `a1f3…` | 온보딩 | 얼굴 대조 점수 71(임계값 80), 라이브니스 통과 |
> | `b7c2…` | 온보딩 | 문서가 2개월 전에 만료됨 |
> | `c904…` | 마켓플레이스 | AML: PEP 1건 일치, 이름 일치율 92%, 생년월일 불일치 |
> | `d215…` | 마켓플레이스 | 주소 증명이 90일보다 오래됨 |
>
> **사용자:** "`a1f3` 승인해 주세요. 셀피를 확인했는데 동일 인물입니다. `b7c2`는 거부해 주세요. 문서 만료입니다."
>
> **에이전트:** *(`session_id: "a1f3…"`, `new_status: "Approved"`로 `didit_session_update_status`를 호출한 다음, `session_id: "b7c2…"`, `new_status: "Declined"`, `comment: "Expired document"`로 호출)* — 두 건을 모두 업데이트했습니다. *(`a1f3…`에 대해 메모 "Manual selfie review: same person"과 함께 `didit_session_add_review` 호출)* — 감사 로그에 점수를 재정의한 이유가 남도록 검토 메모를 추가했습니다. AML 건과 주소 증명 건은 아직 열려 있습니다. 말씀만 하시면 `didit_case_create`로 PEP 일치 건에 대한 케이스를 열겠습니다.

***

## 4. 프로덕션에 적용하기 전 거래 규칙 백테스트

> **사용자:** "1시간 안에 \$1,000 이상의 송금을 3건 넘게 하는 사람을 표시하고 싶습니다. 그러면 알림이 얼마나 많이 발생할까요?"
>
> **에이전트:** *(`conditions`에 `amount > 1000`, 1시간 창의 `aggregation`으로 count ≥ 3, `period_days: 90`을 지정해 `didit_transaction_rule_backtest` 호출)* — 최근 90일 동안 이 규칙은 대상 6명의 거래 14건에서 작동했을 것입니다. 그중 2명은 이미 표시되어 있습니다. 작업을 실행하지 않고 일치 항목만 기록하는 `TEST` 모드로 만들어 드릴까요?
>
> **사용자:** "네, TEST 모드로 해 주세요."
>
> **에이전트:** *(`title: "Velocity: 3+ transfers over $1,000 per hour"`, `category: "aml_ctf"`, `mode: "TEST"`, 동일한 `conditions`와 `aggregation`, 그리고 대상을 표시하는 `actions` 목록으로 `didit_transaction_rule_create` 호출)* — 생성했습니다. 며칠 후 `didit_transaction_rule_get`으로 확인하세요. 결과가 만족스러우면 `didit_transaction_rule_update`로 `mode`를 `ACTIVE`로 바꿀 수 있습니다. 직접 설치하고 싶다면 `didit_transaction_rule_library_list`에 Didit의 사전 설정된 거래 빈도 규칙도 있습니다.

***

## 세션 결과는 비동기로 전달됩니다

`didit_session_create`는 `session_id`, `session_token`, 호스팅 `url`을 반환하지만, 인증은 아직 이루어지지 않은 상태입니다. 사용자가 `url`을 열고 절차를 완료합니다. 최종 결정은 다음 방식으로 전달됩니다:

1. `status.updated` **webhook**(권장), 또는
2. `didit_session_get_decision`(폴링, 대체 방법).

두 방식 모두 같은 형식을 사용합니다. 항목마다 `node_id`가 있는 **항상 복수형 배열**입니다:

```json theme={null}
{
  "session_id": "uuid",
  "status": "Approved",
  "session_kind": "user",
  "id_verifications":  [ { "node_id": "first_id", "status": "Approved", "first_name": "Jane" } ],
  "liveness_checks":   [ { "node_id": "first_liveness", "status": "Approved", "score": 95.4 } ],
  "face_matches":      [ { "node_id": "first_face_match", "status": "Approved", "score": 96.1 } ],
  "aml_screenings":    [ { "node_id": "first_aml", "status": "Approved", "total_hits": 0, "hits": [] } ],
  "reviews": []
}
```

단수형 V2 키(`id_verification`, `liveness`)는 절대 읽지 마세요. 해당 대상이 `webhook_version: "V2"`로 명시적으로 고정된 경우에만 전달됩니다. 기능별 필드 참조는 [데이터 모델](https://docs.didit.me/ko/reference/data-models.md)을, 검증 및 재시도 규칙은 [고급 → webhook](https://docs.didit.me/ko/integration/mcp/advanced.md#webhook-처리)을 참고하세요.

***

## 원프롬프트 통합과 함께 사용하기

MCP는 Didit을 *실행*하는 데 매우 유용합니다. 에이전트가 전체 통합(백엔드 라우트 + 프론트엔드 SDK + webhook 핸들러 + DB 스키마)을 *작성*하게 하려면 [통합 프롬프트](https://docs.didit.me/ko/integration/integration-prompt.md)를 전달하세요. 이 프롬프트는 7단계를 따라 진행하며, MCP 도구를 호출해 워크플로, 세션, webhook을 프로덕션 환경에서 생성합니다.

***

> [card] [도구 참조](https://docs.didit.me/ko/integration/mcp/tools.md)
>
> 에이전트가 호출할 수 있는 모든 항목.

> [card] [고급 및 문제 해결](https://docs.didit.me/ko/integration/mcp/advanced.md)
>
> 역할, 앱 간 동작, webhook, 셀프 호스팅.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.