---
url: https://docs.ogmabox.com/ko/reference/mcp-tools.md
description: 도구의 용도와 입력, 리소스, 프롬프트, 권한, 페이지 나누기 및 결과 처리를 다루는 전체 Ogma MCP 참조입니다.
---

# MCP 리소스와 도구 {#mcp-resources-and-tools}

Ogma MCP 서버는 Codex, Claude Code, Cursor 및 기타 Model Context Protocol 호스트와 같은 외부 MCP 클라이언트를 위한 서버입니다. 앱 내 AI 도우미와는 별개입니다.

MCP는 다음 네 가지 탐색 수단을 제공합니다:

* **리소스**: MCP 클라이언트가 열 수 있는 이름이 지정된 읽기 대상입니다.
* **리소스 템플릿**: 특정 항목, 발견 사항, 워크플로, 실행, 내보내기 또는 재전송 객체를 읽기 위한 매개변수화된 대상입니다.
* **도구**: 호출할 수 있는 작업입니다. 일부는 읽기 전용이고 일부는 서버 시작 플래그가 필요합니다.
* **프롬프트**: 에이전트가 조사, 재테스트 또는 보고서 작성을 계획하는 데 사용하는 재사용 가능한 지침입니다. 프롬프트를 가져와도 그 안의 도구가 실행되지는 않습니다.

연결 엔드포인트와 클라이언트 설정은 [MCP 설정](../mcp-setup.md)을 참고하세요. 전체 상호작용 순서는 [MCP를 사용한 브라우저 자동화](../guide/mcp-browser.md)를 참고하세요.

이 참조는 현재 구현의 **도구 255개**, 리소스 17개, 리소스 템플릿 9개, 프롬프트 12개를 다룹니다. 모든 도구를 공개하지만 호출 시에는 권한 제한이 적용됩니다. 설치된 버전이 오래되었다면 공개되는 도구가 더 적을 수 있습니다. 도구를 선택하기 전에 실행 중인 서버에서 목록을 조회하세요.

## 프로토콜 메서드 {#protocol-methods}

이 이름들은 별도의 URL 경로가 아니라 JSON-RPC 메서드 이름입니다. MCP 클라이언트는 [HTTP 또는 stdio](../mcp-setup.md#connection-addresses)를 통해 연결 수명 주기를 관리합니다.

| 메서드 | 용도 |
| --- | --- |
| `initialize` | 프로토콜 버전과 서버/클라이언트 기능을 협상합니다. |
| `notifications/initialized` | 초기화가 완료되었음을 서버에 알립니다. 이 알림에는 요청 ID가 없습니다. |
| `tools/list` | `nextCursor`를 따라 도구와 인자 스키마를 조회합니다. |
| `tools/call` | `name`과 `arguments`로 도구를 실행합니다. |
| `resources/list` | 이름이 지정된 읽기 전용 리소스를 나열합니다. |
| `resources/templates/list` | 개별 객체를 읽기 위한 URI 템플릿을 나열합니다. |
| `resources/read` | 전체 `uri`를 사용하여 리소스를 읽습니다. |
| `prompts/list` | 재사용 가능한 프롬프트와 인자를 조회합니다. |
| `prompts/get` | `name`과 선택적 문자열 인자로 프롬프트의 메시지를 가져옵니다. |

## 도구 탐색과 호출 {#discover-and-call-tools}

`ogma_search_http_history`와 같은 이름은 개별 HTTP 경로가 아니라 MCP 도구 식별자입니다. MCP 연결에서 `tools/call`로 호출하세요.

1. MCP 클라이언트로 연결을 초기화합니다.
2. `tools/list`를 호출합니다. Ogma는 **페이지당 최대 도구 40개**를 반환합니다. 반환된 `nextCursor`를 매번 `params.cursor`로 전달하고 커서가 없을 때까지 계속하세요. 그렇지 않으면 대부분의 브라우저 도구가 클라이언트에 표시되지 않습니다.
3. 각 도구의 `inputSchema`에서 필드 유형, 열거형 값, 기본값, 제한 및 중첩 객체 형식을 확인합니다. 도구 이름만 보고 인자를 만들어 내지 마세요.
4. 작업을 수행하기 전에 `ogma://mcp/permissions`와 `ogma://mcp/tool-guide`를 읽습니다.
5. 선택한 도구를 호출할 때 `arguments`에 JSON 객체를 전달합니다.

초기화된 연결에서 보내는 JSON-RPC 요청 예제:

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "ogma_search_http_history",
    "arguments": {
      "q": "req.host.eq:\"example.com\"",
      "limit": 20,
      "offset": 0
    }
  }
}
```

ID를 추측하지 말고 목록/검색 도구가 반환한 ID를 사용하세요. 기록 및 발견 사항 검색은 `limit`/`offset`을 사용하고 브라우저 변경분 도구는 `since_entry_id`를 사용합니다. 어느 쪽도 `tools/list`의 불투명 커서와는 다릅니다.

## 결과 읽기 {#reading-results}

우선 `result.structuredContent`를 사용하세요. 텍스트 결과만 지원하는 클라이언트를 위해 텍스트 콘텐츠 블록에도 같은 JSON 래퍼가 담깁니다. 예외적으로 기본 `ogma_browser_snapshot` 결과에는 구조화된 콘텐츠가 없으며 텍스트 콘텐츠는 읽기 쉬운 트리입니다. 구조화된 요소를 받으려면 `result_detail: "full"`을 사용하세요. 로컬 REST 브리지에서는 대신 `result`의 JSON 문자열을 파싱하세요. 이 브리지는 MCP 전송 계층이 아닙니다.

REST 브리지에서 도구가 실패하면 파싱한 값은 `{ "error": "..." }`이며, 해당 문자열 안에 직렬화된 도구 오류 래퍼가 들어 있습니다. 브리지의 HTTP 성공 상태만으로 도구가 성공했다고 판단할 수는 없습니다.

| 래퍼 필드 | 의미 |
| --- | --- |
| `ok` | 도구 작업의 성공 여부입니다. MCP 결과의 `isError`도 확인하세요. |
| `workflow_stage`, `summary` | 작업 맥락과 짧은 설명입니다. |
| `evidence`, `hypotheses` | 관찰된 증거와 별도로 구분된 미확인 해석입니다. |
| `next_actions`, `use_next_tools` | 권장 후속 작업과 사용할 도구 안내입니다. |
| `artifacts` | 생성된 증거나 파일이 있을 때 그 참조입니다. |
| `raw` | 도구별 데이터입니다. 구조화된 결과 경로에 포함되며 간결한 도구는 `result_detail: "full"`일 때만 포함합니다. 객체, 배열 또는 텍스트일 수 있으므로 하나의 공통 형태라고 가정하지 마세요. |

스크린샷 도구는 MCP 고유의 이미지 블록도 반환합니다. JSON 메타데이터에 base64 이미지 데이터가 있다고 가정하지 말고 이미지 블록을 읽으세요. 브라우저 스냅샷은 기본적으로 간결한 텍스트 트리를 반환합니다. `raw.elements`에 구조화된 요소를 받으려면 `result_detail: "full"`을 전달하세요. 브라우저 네트워크와 콘솔 변경분에는 구조화된 항목이 들어 있습니다.

검증 호출 자체가 성공해도 데이터에 `valid: false`가 반환될 수 있습니다. 도구 실행 실패에는 `isError: true`를 사용하며, 잘못된 프로토콜 요청에는 JSON-RPC 오류를 사용합니다. 재시도 전에 진단 정보를 읽으세요. 백엔드 오류에는 HTTP 상태, 엔드포인트 및 길이가 제한된 진단 텍스트가 포함될 수 있습니다. `[truncated]`는 진단 정보가 잘렸다는 뜻이지 작업이 성공했다는 뜻이 아닙니다.

이 결과 규칙은 MCP의 [도구 결과 형식](https://modelcontextprotocol.io/specification/2025-11-25/server/tools#tool-result)을 따릅니다.

## 리소스 {#resources}

| 리소스 | 반환 내용 |
| --- | --- |
| `ogma://status` | 현재 백엔드의 정상 동작 여부와 상태입니다. |
| `ogma://projects` | 모든 Ogma 프로젝트입니다. |
| `ogma://project/current` | 현재 활성 프로젝트입니다. |
| `ogma://instances` | 프록시 리스너 인스턴스입니다. |
| `ogma://http-history/recent` | 본문을 제외한 최신 HTTP 항목 20개입니다. |
| `ogma://ws-history/recent` | 최신 WebSocket 연결 20개입니다. |
| `ogma://findings` | 최대 50개의 발견 사항입니다. |
| `ogma://workflows` | 설정된 워크플로입니다. |
| `ogma://workflow-runs/recent` | 최신 워크플로 실행 기록 20개입니다. |
| `ogma://migration/workflows` | 워크플로 마이그레이션 호환성 보고서입니다. |
| `ogma://exports/recent` | 최신 내보내기 작업 10개입니다. |
| `ogma://capabilities` | MCP 서버 기능 요약입니다. |
| `ogma://mcp/permissions` | 현재 MCP 권한 플래그입니다. |
| `ogma://mcp/tool-guide` | 에이전트 도구 선택, 출력 규칙 및 권장 브라우저/테스트 순서입니다. |
| `ogma://mcp/report-guide` | 보고서 구성 순서, 증거 요구 사항 및 품질 검사입니다. |
| `ogma://mcp/resume` | 활성 프로젝트의 영속적인 복구 맥락입니다. 저장된 체크포인트와 최근 도구 활동을 포함합니다. |
| `ogma://replay/sessions/recent` | 최신 재전송 세션 20개입니다. |

## 리소스 템플릿 {#resource-templates}

| 템플릿 | 반환 내용 |
| --- | --- |
| `ogma://http-history/{entry_id}` | HTTP 기록 항목 하나입니다. |
| `ogma://ws-history/{connection_id}` | WebSocket 연결 하나입니다. |
| `ogma://findings/{finding_id}` | 발견 사항 하나입니다. |
| `ogma://workflows/{workflow_id}` | 워크플로 하나입니다. |
| `ogma://workflow-runs/{run_id}` | 워크플로 실행 하나입니다. |
| `ogma://exports/{export_id}` | 내보내기 작업 하나입니다. |
| `ogma://replay/sessions/{session_id}` | 재전송 세션 하나입니다. |
| `ogma://replay/attempts/{session_id}/{attempt_id}` | 재전송 시도 하나입니다. |
| `ogma://workflow-safety/{workflow_id}` | 워크플로 안전성 분류와 필요한 권한입니다. |

이 URI는 `ogma://`에 HTTP GET을 보내는 것이 아니라 `resources/read`로 읽습니다. 읽기 전에 리소스 템플릿에 ID를 대입하세요. 리소스는 `contents`에 텍스트를 반환하며 위의 도구 결과 래퍼를 사용하지 않습니다.

## 프롬프트 {#prompts}

`prompts/list`로 조회한 다음 `name`과 `arguments` 객체를 지정하여 `prompts/get`을 사용하세요. 프롬프트 인자 값은 문자열입니다. 아래에서 필수 인자는 굵게 표시합니다.

| 프롬프트 | 인자 | 준비하는 작업 |
| --- | --- | --- |
| `analyze_http_entry` | **`entry_id`** | 캡처한 HTTP 통신 하나에서 증거로 뒷받침되는 보안 문제를 조사합니다. |
| `summarize_project_security_state` | 없음 | 활성 프로젝트의 발견 사항과 수정 우선순위를 요약합니다. |
| `triage_findings` | `severity` | 발견 사항의 우선순위를 정하며, 필요하면 특정 심각도로 한정합니다. |
| `investigate_suspicious_host` | **`host`** | 호스트 이름 또는 IP에 대해 캡처한 트래픽을 검토합니다. |
| `review_workflow_migration_report` | 없음 | 워크플로 호환성 문제와 마이그레이션 절차를 설명합니다. |
| `generate_retest_plan` | **`finding_id`** | 발견 사항의 재현 절차와 통과/실패 기준을 준비합니다. |
| `create_finding_from_http_evidence` | **`entry_id`** | 증거를 분석하고 권한이 있으면 발견 사항 생성을 안내합니다. |
| `prepare_evidence_export` | **`export_kind`** | `http_history`, `findings` 또는 `automate_results` 내보내기를 계획합니다. |
| `retest_http_entry_with_replay` | **`entry_id`** | 재전송의 미리보기와 확인 순서를 안내합니다. |
| `run_workflow_safely` | **`workflow_id`** | 워크플로의 부작용을 점검하고 미리 본 다음 권한이 있으면 실행합니다. |
| `pentest_web_target` | **`target_url`**, `objective` | 허가된 대상에 대한 단계별 증거 중심 평가를 계획합니다. |
| `solve_web_challenge` | **`challenge_url`**, `goal` | 웹 챌린지 조사와 증거 수집을 계획합니다. |

## 도구 권한 {#tool-permissions}

대부분의 조사 도구는 항상 사용할 수 있습니다. 상태를 변경하거나 외부 통신을 수행하는 작업은 `ogma-mcp` 시작 플래그로 제어합니다:

| 권한 플래그 | 허용하는 작업 |
| --- | --- |
| `--allow-write-findings` | 발견 사항 쓰기와 보고서 생성, 환경 변수 및 찾아 바꾸기 수정과 같은 공유 프로젝트 변경도 포함합니다. |
| `--allow-export-data` | 내보내기 작업 생성입니다. 기존 내보내기의 메타데이터와 다운로드 정보를 읽는 데는 이 플래그가 필요하지 않습니다. |
| `--allow-read-secrets` | 마스킹하지 않은 환경 변수 값입니다. 변수를 수정하는 권한과는 별개입니다. |
| `--allow-send-requests` | 재전송/자동화의 전송, 직접/일괄 요청, 브라우저 상호작용, 탐색, 크롤링, 인증 여정, 능동 탐지 요청, WebSocket 및 프로젝트 전환입니다. |
| `--allow-run-workflows` | 워크플로 미리보기, 실행 및 취소 도구입니다. 자동화 실행에는 대신 전송 권한을 사용합니다. |
| `--allow-intercept-control` | 가로채기 상태/대기열 읽기, 대기열 변경 및 가로채기 상태 제어입니다. |

권한은 도구 호출 시 확인합니다. 도구가 목록에 있다고 해서 해당 작업이 허용되는 것은 아닙니다. 브라우저 관찰 도구는 이미 실행 중인 브라우저를 조사할 수 있지만 브라우저 조작과 컨텍스트 관리에는 `allow_send_requests`가 필요합니다. 인증 여정도 목록 조회와 검증 호출을 포함하여 이 권한이 필요합니다. 세션 로컬 메모와 할 일에는 프로젝트 쓰기 권한이 필요하지 않습니다.

분당 또는 세션당 활동 할당량은 없습니다. 개별 도구의 입력 크기, 배치 크기, 시간 제한 및 범위 검사는 계속 적용됩니다. 워크플로 실행에는 해당 작업에 따라 추가 전송 권한이나 발견 사항 쓰기 권한이 필요할 수 있습니다. [설정과 권한](../mcp-setup.md#permissions)을 참고하세요.

권한과 관계없이 모든 도구를 공개합니다. 이전 프로필 플래그로는 더 이상 도구 목록을 필터링하지 않습니다. [도구 탐색과 디스패치](#tool-discovery-and-dispatch)를 참고하세요.

## 도구 목록 {#tool-catalog}

### 컨텍스트 손실 후 복구 {#recovering-after-context-loss}

다시 연결하거나 대화 맥락을 잃은 뒤에는 새 평가를 시작하기 전에 `ogma_resume_session`을 호출하세요. 활성 프로젝트, 마지막 체크포인트 및 최근 도구 결과를 확인하세요. 저장된 핸들을 제한된 범위에서 읽기 전용으로 확인하려면 `check_live: true`를 사용하세요. 작업을 반복 실행하지는 않습니다. 요소 참조를 다시 사용하기 전에 브라우저 스냅샷을 새로 가져오세요.

인계하거나 오래 중단하기 전에 체크포인트를 저장하세요. 도구 활동에는 실행한 내용이 기록되지만 의도한 다음 테스트를 추론할 수는 없습니다. 목표, 결론, 불확실한 점 및 다음 단계를 명시하고, 큰 응답 본문을 체크포인트에 복사하는 대신 ID로 증거를 참조하세요.

```json
{
  "name": "ogma_save_checkpoint",
  "arguments": {
    "assessment_id": "authorization-review",
    "objective": "Compare access to invoices across two test identities",
    "progress": "Captured the owner request; the second identity has not been tested yet",
    "next_steps": ["Resume the saved context", "Verify the active project and both identities before replaying"],
    "uncertainties": ["Whether the server checks invoice ownership"]
  }
}
```

```json
{
  "name": "ogma_resume_session",
  "arguments": {
    "assessment_id": "authorization-review",
    "check_live": true
  }
}
```

인계 또는 컨텍스트 압축 전에 체크포인트를 저장하세요. 목표, 완료한 작업, 불확실한 점, 증거 ID 및 다음 단계를 명시적으로 기록하세요. 자동 활동 로그는 핸들과 결과를 저장하지만 요청 페이로드나 의도는 저장하지 않습니다. 호출을 시작했지만 완료 결과가 없다면 결과는 알 수 없습니다. 전송을 재시도하기 전에 현재 상태를 확인하세요.

복구 기록은 영속적으로 저장되며 프로젝트별로 관리됩니다. `assessment_id`를 지정하면 해당 평가로 읽기 범위를 한정합니다. 복구 조회에서 이를 생략하면 프로젝트 전체 활동을 조사합니다. 기존 세션 로컬 메모/할 일은 용도가 다르므로 영속적인 인계 기록으로 혼동하지 마세요.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_save_checkpoint` | 영속적인 인계 기록을 추가합니다. `next_steps`는 명시적인 작업의 배열이며 `references`는 이름을 저장된 ID에 연결합니다. 계획을 실행하지는 않습니다. | **`objective`**, **`progress`**, **`next_steps`**, `uncertainties`, `references` |
| `ogma_resume_session` | 활성 프로젝트, 최신 체크포인트, 최근 활동 및 복구 지침을 읽습니다. 선택적 실시간 확인은 작업을 반복하지 않고 저장된 핸들을 조사합니다. | `check_live` |
| `ogma_get_session_activity` | 체크포인트와 도구 활동을 최신순으로 읽습니다. 시간은 UTC Unix 밀리초입니다. 다음 페이지를 읽으려면 반환된 커서의 `before_ms`와 `before_id`를 모두 전달하세요. | `kind`, `id`, `since_ms`, `until_ms`, `before_ms`, `before_id`, `search`, `limit` |

각 행은 도구의 기능과 최상위 입력을 설명합니다. **굵게 표시한 입력은 스키마의 필수 항목**이며 나머지는 선택 사항입니다. 일부 도구는 입력 중 하나를 선택해야 합니다. 예를 들어 재전송 원본이나 클릭 대상을 선택합니다. 해당 조합은 설명과 실행 시 검증에서 안내합니다. 중첩 필드와 정확한 유형은 실행 중인 도구의 `inputSchema`를 확인하세요.

모든 도구는 선택적 `assessment_id`도 받습니다. 비어 있지 않은 문자열이며 최대 200자입니다. 같은 값을 재사용하면 한 평가의 복구 맥락을 함께 관리할 수 있습니다. 활성 프로젝트를 변경하거나 권한을 부여하지는 않습니다. 아래 표에서는 이 공통 입력을 반복하지 않습니다.

### 도구 탐색과 디스패치 {#tool-discovery-and-dispatch}

서버는 등록된 모든 도구를 공개합니다. 호출 전에 기능 및 호출 규약 탐색 도구로 작업을 찾고 입력을 확인하세요. 도구를 공개하기 위해 프로필을 바꿀 필요는 없습니다. [MCP 설정](../mcp-setup.md#tool-discovery)을 참고하세요.

내장 브라우저 작업에는 `ogma_browser`를 사용하세요. `snapshot`, `fill_input`, `fill_form`, `console_delta`, `network_delta` 및 나머지 브라우저 도구 계열을 지원합니다. `http_history`, `findings`, `ws_history` 등의 검색 영역에는 `ogma_search`를 사용하세요. 같은 기능의 전용 도구도 계속 사용할 수 있습니다.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_find_tools` | 작업 키워드로 전체 목록을 검색합니다. 도구 이름이 정확히 일치하는 쿼리는 전체 호출 규약을 반환하며, `include_schema`는 키워드 일치 결과의 호출 규약도 요청합니다. 모든 검색어가 일치해야 하며 결과가 잘리거나 비어 있어도 기능이 없다고 단정할 수는 없습니다. 기본 제한은 5, 최대는 10입니다. | **`query`**, `limit`, `include_schema` |
| `ogma_call_tool` | 등록된 Ogma 도구를 이름으로 실행합니다. `tool` 이외의 입력은 지정한 도구에 전달하며 해당 도구의 권한은 계속 적용됩니다. | **`tool`** |
| `ogma_browser` | 작업 이름으로 내장 브라우저를 조작합니다. 다른 모든 `ogma_browser_*` 도구는 이름의 접미사로 호출할 수 있습니다. 예를 들어 `ogma_browser_snapshot`에는 `action: "snapshot"`을 사용합니다. | **`action`**, `selector`, `tab_id`, `url`, `js`, `text`, `value`, `key`, `cookie`, `timeout_ms` |
| `ogma_search` | 하나의 진입점에서 Ogma 데이터 영역을 검색합니다. 다른 모든 `ogma_search_*` 도구는 이름의 접미사로 호출할 수 있습니다. | **`domain`**, `q`, `limit`, `offset` |

### HTTP 기록과 쿼리 {#http-history-and-querying}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_search_http_history` | HTTPQL로 HTTP 기록을 검색하고 요청/응답 메타데이터를 반환합니다. | `q`, `limit`, `offset`, `result_detail` |
| `ogma_get_http_entry` | ID로 HTTP 항목 하나를 가져오며 선택적으로 본문 미리보기를 포함합니다. | **`entry_id`**, `include_body_preview`, `result_detail` |
| `ogma_get_http_entry_body` | HTTP 항목의 요청 및/또는 응답 본문 전체를 가져옵니다. | **`entry_id`**, **`part`**, `search_pattern`, `result_detail` |
| `ogma_validate_httpql` | HTTPQL 표현식을 검증합니다. | **`query`** |
| `ogma_analyze_http_entry_security` | HTTP 항목 하나의 보안 관련 동작과 증거를 검토합니다. | **`entry_id`** |
| `ogma_search_by_vulnerability_pattern` | 캡처한 트래픽에서 취약점 관련 패턴을 검색합니다. | **`pattern_type`**, `limit` |

### WebSocket과 SSE {#websocket-and-sse}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_search_ws_history` | StreamQL로 WebSocket 연결 기록을 검색합니다. | `q`, `limit`, `offset` |
| `ogma_get_ws_messages` | WebSocket 연결 하나에 저장된 메시지를 가져옵니다. | **`connection_id`**, `limit`, `offset` |
| `ogma_get_ws_message` | 목록 미리보기처럼 잘리지 않은 전체 메시지 하나를 읽습니다. 텍스트는 UTF-8, 바이너리/제어 페이로드는 base64입니다. | **`message_id`** |
| `ogma_validate_streamql` | StreamQL 표현식을 검증합니다. | **`query`** |
| `ogma_get_ws_messages_live` | 브라우저 계측으로 캡처한 실시간 WebSocket 메시지를 가져옵니다. | `host`, `limit` |
| `ogma_create_ws_replay_session` | WebSocket 재전송 세션을 생성합니다. | **`ws_connection_id`** |
| `ogma_connect_ws_replay` | WebSocket 재전송 세션을 연결합니다. | **`ws_session_id`** |
| `ogma_send_ws_replay_message` | WebSocket 재전송 세션을 통해 메시지를 보냅니다. | **`ws_session_id`**, **`payload`**, `message_type` |
| `ogma_list_ws_replay_sessions` | WebSocket 재전송 세션을 나열합니다. | `result_detail` |
| `ogma_get_ws_replay_messages` | 캡처 기록이 아니라 WebSocket 재전송 세션의 대화 기록을 읽습니다. 처음에는 `cursor`를 생략하고, 반환된 `next_cursor`를 전달하며 `has_more`인 동안 끝까지 읽습니다. | **`ws_session_id`**, `cursor`, `limit`, `result_detail` |
| `ogma_get_ws_replay_message` | 페이로드 미리보기처럼 잘리지 않은 WebSocket 재전송 메시지 하나를 읽습니다. `payload_base64`는 base64로 인코딩된 바이트를 나타냅니다. | **`message_id`**, `result_detail` |
| `ogma_disconnect_ws_replay` | 세션과 대화 기록을 유지하면서 WebSocket 재전송 세션의 연결을 끊습니다. 대기 중인 연결도 취소합니다. | **`ws_session_id`** |
| `ogma_browser_get_ws_frames` | 내장 브라우저가 캡처한 WebSocket 프레임을 읽습니다. | `limit`, `connection_url`, `direction` |
| `ogma_browser_start_ws_capture` | 브라우저 측 WebSocket 프레임 캡처를 시작합니다. | 없음. |
| `ogma_browser_send_ws_message` | 브라우저 컨텍스트에서 WebSocket 메시지를 보냅니다. | **`payload`**, `connection_url` |

### 발견 사항과 증거 {#findings-and-evidence}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_search_findings` | 심각도, 보고자, 텍스트, 제한 및 오프셋으로 발견 사항을 검색합니다. | `severity`, `reporter`, `q`, `limit`, `offset` |
| `ogma_get_finding` | ID로 발견 사항 하나를 가져옵니다. | **`finding_id`** |
| `ogma_preview_finding_from_evidence` | HTTP 항목에서 발견 사항 초안을 미리 보며 실제로 생성하지는 않습니다. | **`entry_id`**, `reporter` |
| `ogma_create_finding` | 메타데이터, 태그, 신뢰도, 수정 방안 및 선택적 증거 링크를 포함하는 발견 사항을 생성합니다. | **`title`**, `severity`, `status`, `description`, `reporter`, `tags`, `dedupe_key`, `entry_id`, `replay_attempt_id`, `automate_result_id`, `ws_message_id`, `confidence`, `remediation`, `skip_dedup_check` |
| `ogma_update_finding` | 기존 발견 사항을 수정합니다. | **`finding_id`**, **`title`**, `severity`, `status`, `description`, `reporter`, `tags`, `dedupe_key`, `confidence`, `remediation` |
| `ogma_add_finding_tag` | 기존 태그를 대체하지 않고 발견 사항에 태그를 추가합니다. | **`finding_id`**, **`tags`** |
| `ogma_link_finding_evidence` | 발견 사항에 HTTP, 재전송, 자동화, 캡처한 WebSocket 또는 WS 재전송 메시지 증거를 추가합니다. 보조 링크는 주 증거를 대체하지 않습니다. | **`finding_id`**, `entry_id`, `replay_attempt_id`, `automate_result_id`, `ws_message_id`, `ws_replay_message_id` |
| `ogma_delete_finding` | 발견 사항을 삭제합니다. | **`finding_id`** |
| `ogma_create_finding_from_entry` | 캡처한 HTTP 항목에서 발견 사항을 생성합니다. 요청 및 응답 헤더와 본문을 Markdown HTTP 증거로 삽입하며 응답 본문은 3000자로 자릅니다. 제공된 세부 항목으로 계산한 CVSS 점수, CWE, PoC 코드 및 참조를 추가합니다. | **`entry_id`**, **`title`**, **`severity`**, **`vulnerability_type`**, **`description`**, **`impact`**, **`remediation`**, `confidence`, `reporter`, `tags`, `affected_parameter`, `proof_of_concept`, `cvss_breakdown`, `cwe`, `poc_code`, `references`, `skip_dedup_check` |
| `ogma_get_finding_evidence_summary` | 발견 사항에 연결된 증거를 요약합니다. | **`finding_id`** |
| `ogma_record_finding_verification` | 발견 사항의 독립적인 재테스트 판정인 `verified`, `refuted` 또는 `inconclusive`를 기록합니다. 최신 판정을 적용하므로 나중의 반증은 이전 확인을 대체하며, 도구는 저장한 행을 보고합니다. | **`finding_id`**, **`state`**, **`method`**, **`reason`**, `evidence_entry_id`, `control_entry_id`, `canary_id` |
| `ogma_check_canary` | `label`과 `purpose`로 토큰을 생성합니다. 또는 `canary_id`로 기존 토큰을 다시 확인하며, 이 경우 새 토큰은 만들지 않습니다. 캡처한 트래픽에서 일치하는 항목을 검색합니다. 응답 본문의 일치는 다시 읽어 온 증거이며 요청 본문의 일치는 토큰을 보냈다는 사실만 보여 줍니다. | **`canary_id`** 또는 **`label`** 및 **`purpose`**, `finding_id`, `hosted_path`, `limit` |
| `ogma_export_findings_report` | 발견 사항 보고서 내보내기를 생성합니다. | **`format`**, `title`, `summary`, `scope`, `tester`, `include_evidence` |

### 내보내기 {#exports}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_preview_export_plan` | 작업을 생성하지 않고 내보낼 내용과 형식을 미리 봅니다. | **`kind`**, **`format`**, `limit`, `q`, `severity`, `reporter` |
| `ogma_create_export_job` | 기록, 검색 결과, 발견 사항 또는 자동화 결과의 내보내기 작업을 생성합니다. | **`name`**, **`kind`**, **`format`**, `limit`, `offset`, `scope`, `q`, `severity`, `reporter`, `run_id` |
| `ogma_get_export_job` | ID로 내보내기 작업 하나를 가져옵니다. | **`export_id`** |
| `ogma_list_export_jobs` | 내보내기 작업을 나열합니다. | `limit`, `offset` |
| `ogma_get_export_download_info` | 완료된 내보내기의 다운로드 메타데이터를 가져옵니다. | **`export_id`** |

### 재전송과 요청 전송 {#replay-and-request-sending}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_preview_replay_send` | 재전송을 미리 보고 확인 토큰을 반환합니다. | `http_entry_id`, `replay_session_id`, `method`, `path`, `query`, `body`, `result_detail` |
| `ogma_send_replay_request` | 확인 토큰으로 재전송 요청을 보냅니다. | **`confirmation_token`**, **`request_hash`**, `result_detail` |
| `ogma_create_replay_session_from_history` | 캡처한 HTTP 항목에서 재전송 세션을 생성합니다. | **`entry_id`**, `name`, `result_detail` |
| `ogma_create_replay_session_raw` | 원시 요청 정의에서 재전송 세션을 생성합니다. | `name`, **`host`**, **`port`**, `tls`, `method`, `path`, `headers`, `body` |
| `ogma_get_replay_session` | 재전송 세션 메타데이터와 페이지로 나눈 시도 목록을 가져옵니다. | **`session_id`**, `attempts_limit`, `attempts_offset`, `result_detail` |
| `ogma_get_replay_attempt` | 재전송 시도 하나를 가져옵니다. | **`session_id`**, **`attempt_id`**, `result_detail` |
| `ogma_list_replay_sessions` | 재전송 세션을 나열합니다. | `limit`, `offset`, `result_detail` |
| `ogma_create_replay_sequence` | 기존 재전송 세션에서 단계 실행 순서대로 여러 단계의 재전송 시퀀스를 생성합니다. `collection_id`는 실행 중 해당 컬렉션의 변수를 덮어 적용합니다. | **`name`**, **`session_ids`**, `collection_id` |
| `ogma_run_replay_sequence` | 저장된 재전송 시퀀스를 실행하며 실제 외부 트래픽을 보냅니다. `plan`은 실행 순서대로 단계 인덱스를 나열합니다. 단계를 반복하거나 생략하거나 순서를 바꿀 수 있습니다. `plan`을 생략하면 저장된 모든 단계를 순서대로 한 번씩 실행합니다. 빈 `plan`은 거부합니다. | **`sequence_id`**, `plan` |
| `ogma_repeat_request` | 선택적 변경 사항을 적용하여 기존 요청을 반복합니다. | **`request_id`**, `params`, `headers`, `body`, `cookies`, `url`, `method`, `method_override`, `path`, `path_override`, `entry_id`, `headers_add`, `headers_remove`, `body_text`, `body_json`, `body_b64`, `body_base64`, `raw_request_base64`, `result_detail` |
| `ogma_replay_with_modifications` | 캡처한 HTTP 요청에 필드별 덮어쓰기를 적용하여 재전송하고 응답과 차이 요약을 반환합니다. | **`entry_id`**, `method_override`, `path_override`, `headers_add`, `headers_remove`, `body`, `body_text`, `body_json`, `body_b64`, `body_base64`, `raw_request_base64`, `request_id`, `method`, `path`, `headers`, `follow_redirects`, `timeout_secs`, `result_detail` |
| `ogma_http_request` | MCP 도구 인터페이스를 통해 직접 HTTP 요청을 보냅니다. `raw_request_base64`를 사용하면 `max_responses`는 첫 응답에서 멈추는 대신 같은 연결에서 여러 응답 프레임을 읽고, `followup_raw_request_base64`는 첫 응답을 읽은 뒤 해당 연결에 요청을 씁니다. 보낸 바이트가 요청하지 않은 응답을 받는 것이 요청의 동기화 불일치를 추측이 아니라 확인하는 방법입니다. 두 입력은 원시 모드에만 적용됩니다. | **`host`**, `port`, `tls`, `method`, `path`, `headers`, `body_b64`, `method_override`, `path_override`, `headers_add`, `headers_remove`, `body`, `body_text`, `body_json`, `body_base64`, `raw_request_base64`, `max_responses`, `followup_raw_request_base64`, `result_detail` |
| `ogma_bulk_send_requests` | 요청을 일괄 전송합니다. | **`base_session_id`**, **`payloads`**, **`placeholder`**, `max_requests` |
| `ogma_fetch_url` | URL을 가져오고 응답 상태, 헤더 및 본문 미리보기를 반환합니다. | **`url`**, `method`, `headers`, `body_b64`, `max_bytes` |
| `ogma_follow_redirect` | URL을 가져오고 리디렉션 체인을 따라가며 모든 홉을 보고합니다. | **`url`**, `method`, `headers`, `body_b64`, `max_hops`, `timeout_secs` |
| `ogma_fuzz_parameter` | `{{FUZZ}}` 자리표시자를 단어 목록의 값으로 바꾸고 응답을 상태와 크기로 묶습니다. | **`url`**, `method`, `headers`, `body_template`, **`wordlist`**, `timeout_secs`, `stop_on_match` |
| `ogma_multipart_upload` | 업로드 테스트를 위해 텍스트 및 파일 필드가 있는 multipart form-data 요청을 보냅니다. | **`url`**, **`fields`**, `headers`, `timeout_secs` |
| `ogma_test_login` | 제공된 또는 기본 자격 증명 쌍으로 로그인 엔드포인트를 테스트하고 증거를 보고합니다. | **`url`**, `credentials`, `username_field`, `password_field`, `submit_selector`, `success_pattern`, `failure_pattern`, `max_attempts` |

### 워크플로와 자동화 {#workflows-and-automate}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_search_workflows` | 워크플로를 나열하고 필터링합니다. | `workflow_type`, `enabled`, `limit`, `offset` |
| `ogma_get_workflow` | ID로 워크플로 하나를 가져옵니다. | **`workflow_id`** |
| `ogma_get_workflow_run` | 워크플로 실행 기록 하나를 가져옵니다. | **`run_id`** |
| `ogma_validate_workflow_import` | 워크플로 번들의 가져오기 호환성을 검증합니다. | **`bundle_json`** |
| `ogma_get_workflow_safety` | 워크플로의 안전성 및 권한 분류를 가져옵니다. | **`workflow_id`** |
| `ogma_preview_workflow_run` | 워크플로를 실행하기 전에 미리 봅니다. | **`workflow_id`**, `input`, `trigger_entry_id` |
| `ogma_run_workflow` | 워크플로를 실행합니다. | **`confirmation_token`**, **`definition_hash`**, `input_hash`, `input` |
| `ogma_cancel_workflow_run` | 워크플로 실행을 취소합니다. | **`run_id`** |
| `ogma_list_automate_sessions` | 자동화 세션을 나열합니다. | `limit`, `offset` |
| `ogma_get_automate_session` | 자동화 세션 하나를 가져옵니다. | **`session_id`** |
| `ogma_create_automate_session` | 주입 지점 하나가 있는 자동화 세션을 생성합니다. `inject_into`는 `query:<name>`, `header:<name>` 또는 `body`로 지점을 선택합니다. 기본값은 첫 쿼리 매개변수이며 없으면 본문입니다. | **`entry_id`**, `name`, **`payloads`**, `inject_into`, `placeholder_start`, `placeholder_end`, `worker_count`, `delay_ms` |
| `ogma_run_automate_session` | 자동화 세션을 실행합니다. | **`session_id`** |
| `ogma_list_automate_runs` | 자동화 실행을 나열합니다. | **`session_id`**, `limit`, `offset` |
| `ogma_get_automate_run` | 자동화 실행 하나를 가져옵니다. | **`run_id`** |
| `ogma_cancel_automate_run` | 자동화 실행을 취소합니다. | **`run_id`** |
| `ogma_list_automate_results` | 자동화 결과를 나열합니다. | **`run_id`**, `limit`, `offset`, `min_status`, `max_status` |
| `ogma_get_automate_result` | 자동화 결과 하나를 가져옵니다. | **`run_id`**, **`seq`** |
| `ogma_load_skill` | 내장 MCP 스킬 지침을 도우미 컨텍스트에 불러옵니다. | **`skills`** |

### 스캐너 {#scanner}

수동형 또는 능동형 스캔을 시작하려면 발견 사항 쓰기 권한이 필요합니다. 스캔에서 발견 사항을 생성할 수 있기 때문입니다. 스캐너 규칙과 능동형 검사 유형을 나열하는 데는 이 권한이 필요하지 않습니다.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_run_passive_scan` | HTTP 항목 하나에 수동형 스캐너 검사를 실행합니다. | **`entry_id`** |
| `ogma_run_passive_scan_all` | 캡처한 기록 전체에 수동형 스캐너 검사를 실행합니다. | 없음. |
| `ogma_list_scanner_rules` | 스캐너 탐지 규칙을 나열합니다. | 없음. |
| `ogma_list_active_checks` | 능동형 스캐너 검사 유형을 ID 및 설명과 함께 나열하고, 그중 발견 사항을 생성하는 유형의 수를 보고합니다. 미구현 유형도 나열하지만 발견 사항을 생성하지는 않습니다. | 없음. |
| `ogma_scan_active` | 검증 페이로드를 전송하는 능동형 스캐너를 실행하고 응답에서 확인한 취약점 유형에 대해서만 발견 사항을 생성합니다. 항목 하나를 스캔하려면 `entry_id`를 전달하고 최근 기록 전체를 검사하려면 생략하세요. 오래 걸리는 작업이므로 태스크로 제공합니다. 동기 경로는 작업이 최종 상태에 도달할 때까지 폴링하고 `job_id`, 진행 카운터 및 `findings_created`를 보고합니다. 발견 사항 쓰기 권한이 필요합니다. | `entry_id`, `checks`, `concurrency`, `delay_ms`, `scan_headers` |

### 가로채기 {#intercept}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_get_intercept_status` | 현재 가로채기 상태를 가져옵니다. | 없음. |
| `ogma_set_intercept_enabled` | 가로채기를 활성화하거나 비활성화합니다. | `request_enabled`, `response_enabled`, `websocket_enabled` |
| `ogma_list_intercept_queue` | 대기열에 있는 가로챈 항목을 나열합니다. | 없음. |
| `ogma_get_intercept_item` | 대기열의 가로채기 항목 하나를 가져옵니다. | **`id`** |
| `ogma_forward_intercept_item` | 필요하면 수정한 뒤 가로챈 항목을 전달합니다. | **`id`**, `method`, `path`, `headers`, `body`, `status_override` |
| `ogma_drop_intercept_item` | 가로챈 항목을 폐기합니다. | **`id`** |
| `ogma_intercept_and_modify` | 실시간으로 가로챈 요청 또는 응답을 기다린 다음 JSON 패치, 정규 표현식 치환 또는 본문 전체 교체를 적용하고 전달합니다. | **`direction`**, `host_pattern`, `path_pattern`, `wait_secs`, `json_patches`, `regex_replacements`, `body_b64`, `status_override`, `forward_unmatched` |

### 프록시, 점검 범위 및 네트워크 {#proxy-scope-and-network}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_list_proxy_listeners` | 프록시 리스너를 나열합니다. | 없음. |
| `ogma_start_proxy_listener` | 프록시 리스너를 시작합니다. | **`listener_id`** |
| `ogma_stop_proxy_listener` | 프록시 리스너를 중지합니다. | **`listener_id`** |
| `ogma_list_scope_presets` | 점검 범위 프리셋을 나열합니다. | 없음. |
| `ogma_create_scope_preset` | 점검 범위 프리셋을 활성화하지 않고 저장합니다. 전송 권한이 필요합니다. 각 규칙에는 `pattern`과 `include`가 필수이며 선택적 `rule_type`으로 호스트, CIDR, 경로 또는 정규 표현식 일치를 선택합니다. 경로 규칙은 호스트에 `pattern`, 경로에 `path_pattern`을 사용합니다. 반환된 프리셋은 `ogma_set_active_scope`로 별도로 활성화하세요. | **`name`**, **`rules`**, `httpql_expression` |
| `ogma_get_active_scope` | 활성 점검 범위를 가져옵니다. | 없음. |
| `ogma_set_active_scope` | 활성 점검 범위를 설정합니다. | `preset_id` |
| `ogma_local_ips` | 리스너와 콜백에 유용한 로컬 IP 주소를 나열합니다. | 없음. |
| `ogma_get_tls_info` | 대상 또는 캡처한 연결의 TLS 정보를 가져옵니다. | **`host`**, `port` |

### 사이트맵, 엔드포인트 및 OAST {#sitemap-endpoints-and-oast}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_get_sitemap` | 캡처한 사이트맵을 가져옵니다. | `host`, `show_api_only` |
| `ogma_get_sitemap_parameters` | 사이트맵 경로 하나에서 발견한 매개변수를 가져옵니다. | **`host`**, **`port`**, **`path`** |
| `ogma_list_extracted_endpoints` | 트래픽과 프런트엔드 콘텐츠에서 추출한 엔드포인트를 나열합니다. | `limit`, `offset` |
| `ogma_discovery_start` | 점검 범위 내 호스트와 포트를 대상으로 백그라운드 콘텐츠 탐색 작업을 시작하고 작업 ID를 반환합니다. | **`host`**, **`port`**, `tls`, `base_path`, `config` |
| `ogma_discovery_list` | 활성 프로젝트의 탐색 작업과 진행 상황을 나열합니다. | 없음. |
| `ogma_discovery_get` | 탐색 작업의 상태와 발견한 결과를 가져옵니다. | **`job_id`** |
| `ogma_discovery_cancel` | 실행 중인 탐색 작업의 취소를 요청합니다. | **`job_id`** |
| `ogma_import_openapi_spec` | OpenAPI 명세를 가져와 초기 엔드포인트와 요청 구조를 구성합니다. | **`spec_content`**, `base_url`, `collection_name` |
| `ogma_get_oast_config` | OAST 리스너 설정을 가져옵니다. | 없음. |
| `ogma_get_oast_reachability` | 설정된 OAST 콜백 호스트에 대상에서 접근할 수 있는지 보고하고, 접근할 수 없다면 이유와 해결 절차를 안내합니다. 블라인드 페이로드 결과를 신뢰하기 전에 확인하세요. 콜백에 접근할 수 없으면 취약하지 않은 것처럼 보이는 미탐이 발생합니다. | 없음. |
| `ogma_list_oast_interactions` | OAST 상호작용을 나열합니다. 백엔드는 페이지를 나누기 전에 모든 필터를 적용하므로 총수는 페이지 길이가 아니라 모든 일치 항목 수입니다. 토큰 라벨 하나 또는 출발지 주소 하나로 범위를 좁혀도 피드 뒤쪽의 일치하는 콜백이 숨겨지지 않습니다. `token_label`은 토큰을 전달한 주입 지점이며 쿼리 매개변수 이름, 헤더 이름 또는 `body`입니다. 라벨은 토큰과 함께 메모리에 유지되므로 토큰이 만료되어 제거된 라벨은 오래된 행에 일치하는 것이 아니라 아무것에도 일치하지 않습니다. | `limit`, `offset`, `token_id`, `token_label`, `protocol`, `source_ip`, `since` |

### 기록 주석 {#history-annotation}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_set_entry_color` | 기록 항목의 색상 라벨을 설정합니다. | **`entry_id`**, **`color`** |
| `ogma_add_entry_tag` | 기록 항목에 태그를 추가합니다. | **`entry_id`**, **`tag`** |
| `ogma_remove_entry_tag` | 기록 항목에서 태그를 제거합니다. | **`entry_id`**, **`tag`** |

### 브라우저 제어 {#browser-control}

스냅샷, 선택자 및 스크린샷 중 무엇을 사용할지는 [브라우저 가이드](../guide/mcp-browser.md)를 참고하세요. 모든 브라우저 도구가 `tab_id` 또는 `element_ref`를 받는다고 가정하지 말고 해당 도구에 나열된 입력만 사용하세요.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_browser_launch` | Ogma 브라우저를 실행합니다. | `proxy_port` |
| `ogma_browser_navigate` | 브라우저를 URL로 이동합니다. | **`url`**, `tab_id`, `wait_for_load`, `timeout_ms`, `result_detail` |
| `ogma_browser_get_dom` | 페이지로 이동하고 JavaScript 실행 후 렌더링된 DOM과 선택적 선택자 결과를 반환합니다. | **`url`**, `wait_secs`, `selectors`, `js_eval`, `include_full_html` |
| `ogma_browser_screenshot` | 브라우저 페이지 상태를 캡처합니다. | `tab_id`, `result_detail` |
| `ogma_browser_execute_js` | 브라우저에서 JavaScript를 실행합니다. | **`script`**, `tab_id` |
| `ogma_browser_get_source` | 현재 페이지의 DOM 소스를 가져옵니다. | `tab_id`, `format`, `max_chars` |
| `ogma_browser_get_cookies` | 브라우저 쿠키를 가져옵니다. | `tab_id` |
| `ogma_browser_set_cookie` | 브라우저 쿠키를 설정합니다. | **`name`**, **`value`**, `domain`, `path`, `http_only`, `secure` |
| `ogma_browser_new_tab` | 새 브라우저 탭을 엽니다. | `url` |
| `ogma_browser_close_tab` | 브라우저 탭을 닫습니다. | `tab_id` |
| `ogma_browser_get_tabs` | 브라우저 탭을 나열합니다. | `result_detail` |
| `ogma_browser_click` | 스냅샷의 `element_ref` 또는 명시적인 `x`와 `y` 좌표를 클릭합니다. | `element_ref`, `snapshot_id`, `x`, `y`, `button`, `click_count`, `modifiers`, `offset_x`, `offset_y`, `force`, `timeout_ms`, `tab_id`, `expect`, `observation`, `result_detail` |
| `ogma_browser_type_text` | 브라우저에 텍스트를 입력합니다. | **`text`**, `tab_id`, `snapshot_id` |
| `ogma_browser_fill_input` | CSS `selector` 또는 스냅샷 `element_ref` 중 정확히 하나로 입력 필드의 값을 설정합니다. 빈 값은 필드를 비웁니다. 제출하지는 않습니다. | **`selector`**, `value`, `tab_id`, **`element_ref`**, `snapshot_id`, `expect`, `observation`, `result_detail` |
| `ogma_browser_fill_form` | 한 번의 호출에서 제공된 순서대로 여러 입력 필드, textarea 또는 contenteditable 요소의 텍스트를 대체합니다. 각 필드는 `element_ref` 또는 `selector` 중 정확히 하나와 `value`를 사용합니다. 첫 실패에서 멈추며 제출하지는 않습니다. | **`fields`**, `snapshot_id`, `tab_id`, `expect`, `observation`, `result_detail` |
| `ogma_browser_click_selector` | 선택자로 요소를 클릭합니다. | **`selector`**, `tab_id`, `expect`, `observation`, `result_detail` |
| `ogma_browser_submit_form` | 폼을 제출합니다. | `selector`, `tab_id`, `expect`, `observation`, `result_detail` |
| `ogma_browser_get_page_links` | 현재 페이지에서 링크를 추출합니다. | `tab_id` |
| `ogma_browser_get_page_forms` | 현재 페이지에서 폼을 추출합니다. `include_templates`를 `true`로 설정하면(기본값 `false`) 각 폼의 절대 action URL, 메서드, 실제 콘텐츠 유형, 제출 대상 컨트롤과 현재 값, 제출 컨트롤 및 CSRF와 유사한 `token_candidates`를 추가합니다. Multipart 폼은 합성한 본문 대신 `ogma_multipart_upload`를 가리킵니다. `send_requests` 권한이 필요합니다. | `tab_id`, `include_templates` |
| `ogma_browser_form_to_replay` | 실제 페이지의 폼에서 재전송 세션을 생성합니다. 그 시점의 필드 값과 브라우저의 실제 쿠키를 읽고 페이지에서 Origin 및 Referer 헤더를 도출합니다. 요청을 보내지는 않습니다. | **`form_selector`**, `tab_id`, `name` |
| `ogma_browser_scroll` | 현재 페이지를 스크롤합니다. | `selector`, `x`, `y`, `tab_id` |
| `ogma_browser_wait_for_selector` | 요소 선택자가 일치할 때까지 기다립니다. | **`selector`**, `timeout_ms`, `tab_id`, `snapshot_id` |
| `ogma_browser_get_network_log` | 브라우저 네트워크 이벤트를 가져옵니다. | `host`, `since_ms`, `limit` |
| `ogma_browser_go_back` | 브라우저 방문 기록에서 뒤로 이동합니다. | `tab_id`, `snapshot_id` |
| `ogma_browser_go_forward` | 브라우저 방문 기록에서 앞으로 이동합니다. | `tab_id`, `snapshot_id` |
| `ogma_browser_reload` | 페이지를 새로 고칩니다. | `tab_id`, `snapshot_id` |
| `ogma_browser_find_text` | 현재 페이지에서 텍스트를 찾습니다. | **`text`**, `tab_id`, `snapshot_id` |
| `ogma_browser_clear_data` | 브라우저 데이터를 지웁니다. | `types` |
| `ogma_crawl_site` | 활성 점검 범위 안에서 내장 브라우저로 대상을 크롤링하고 검사 범위 데이터를 반환합니다. | **`start_url`**, `max_pages`, `max_depth`, `wait_ms`, `tab_id` |

### 브라우저 요소와 대기 {#browser-elements-and-waits}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_browser_snapshot` | 요소 참조와 상태가 포함된 간결한 의미 기반 페이지 트리를 읽습니다. `result_detail: "full"`은 대신 `raw.elements`에 요소가 들어 있는 구조화된 래퍼를 반환합니다. 이전 스냅샷과의 변경분을 요청할 수 있습니다. | `tab_id`, `previous_snapshot_id`, `changes_only`, `focus_ref`, `text`, `max_elements`, `max_text_length`, `include_hidden`, `max_depth`, `result_detail` |
| `ogma_browser_hover` | 참조한 요소 위에 포인터를 올리고 새로 나타난 메뉴나 도구 설명을 보고합니다. | **`element_ref`**, `snapshot_id`, `offset_x`, `offset_y`, `modifiers`, `timeout_ms`, `tab_id` |
| `ogma_browser_select_option` | 값, 라벨 또는 인덱스로 드롭다운 옵션을 선택하고 선택된 값을 보고합니다. | **`element_ref`**, `snapshot_id`, **`values`**, `match_mode`, `allow_first_match`, `timeout_ms`, `tab_id` |
| `ogma_browser_check` | 체크박스 또는 라디오 버튼을 무조건 토글하는 대신 상태를 명시적으로 설정합니다. | **`element_ref`**, `snapshot_id`, `checked`, `timeout_ms`, `tab_id` |
| `ogma_browser_press_key` | 포커스가 있는 페이지 또는 참조한 요소에 키나 키 조합을 보냅니다. | **`key`**, `element_ref`, `snapshot_id`, `modifiers`, `repeat`, `delay_ms`, `tab_id` |
| `ogma_browser_focus` | 참조한 요소에 포커스를 주고 입력 가능한 기능을 보고합니다. | **`element_ref`**, `snapshot_id`, `tab_id` |
| `ogma_browser_blur` | 현재 포커스가 있는 요소에서 포커스를 제거합니다. | `tab_id`, `snapshot_id` |
| `ogma_browser_drag_and_drop` | 참조한 요소 하나를 다른 요소로 끌어 놓습니다. | **`source_ref`**, **`target_ref`**, `snapshot_id`, `steps`, `tab_id` |
| `ogma_browser_scroll_to` | 요소나 페이지 위치로 스크롤하거나 참조한 스크롤 컨테이너 안에서 스크롤합니다. | `target`, `element_ref`, `snapshot_id`, `container_ref`, `direction`, `amount`, `behavior`, `timeout_ms`, `tab_id` |
| `ogma_browser_wait_for` | 요소/텍스트/URL/페이지 이동/대화상자 조건 또는 페이지 안정화를 기다립니다. 필요하면 명시적인 시간 대기도 지원합니다. | **`condition`**, `target`, `timeout_ms`, `stability_ms`, `tab_id`, `snapshot_id`, `result_detail` |
| `ogma_browser_handle_dialog` | JavaScript 대화상자를 수락하거나 닫습니다. 선택적으로 프롬프트 텍스트와 예상 대화상자 검사를 지정할 수 있습니다. | **`action`**, `prompt_text`, `expected_type`, `expected_message`, `tab_id`, `snapshot_id` |
| `ogma_browser_dialog_status` | 대기 중인 JavaScript 대화상자를 닫지 않고 보고합니다. | 없음. |

### 브라우저 파일, 팝업 및 다운로드 {#browser-files-popups-and-downloads}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_list_hosted_files` | 업로드와 아티팩트 조사를 위해 활성 프로젝트에서 호스팅하는 파일과 ID를 나열합니다. | `limit`, `offset` |
| `ogma_artifact_read_range` | 전체 파일을 반환하는 대신 호스팅 파일의 제한된 바이트 범위를 읽습니다. | **`artifact_id`**, `offset`, `length` |
| `ogma_artifact_search` | UTF-8 호스팅 파일의 제한된 범위에서 리터럴 텍스트를 검색하고 일치하는 바이트 오프셋을 반환합니다. | **`artifact_id`**, **`query`**, `offset`, `max_bytes`, `max_matches` |
| `ogma_browser_file_upload` | 임의의 클라이언트 파일 시스템 경로가 아니라 기존 Ogma 호스팅 파일 ID로 파일 입력을 설정합니다. | **`element_ref`**, `snapshot_id`, **`artifact_ids`**, `tab_id` |
| `ogma_browser_wait_for_popup` | 작업 전에 팝업 감지를 준비하거나 팝업을 기다리거나 감지 상태를 확인합니다. | **`action`**, `timeout_ms`, `switch_to_new_tab` |
| `ogma_browser_download_wait` | 진행 중이거나 완료된 브라우저 다운로드를 감지합니다. ID와 상태를 확인하세요. 감지되었다고 해서 완료되었거나 가장 최근 다운로드인 것은 아닙니다. | `timeout_ms` |
| `ogma_browser_download_get` | 다운로드 하나를 조사하고 완료된 콘텐츠를 사용할 수 있으면 아티팩트로 저장합니다. | **`download_id`** |
| `ogma_browser_download_status` | 브라우저 다운로드와 현재 진행 상황/상태를 나열합니다. | 없음. |

### 브라우저 사용자 식별, 저장소 및 권한 {#browser-identities-storage-and-permissions}

아래 브라우저 권한 도구는 카메라나 위치 정보와 같은 웹사이트 권한을 제어합니다. MCP 서버의 도구 권한을 변경하지는 않습니다.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_browser_context_create` | 격리된 브라우저 사용자 식별 환경과 초기 탭을 생성하고 `context_id`와 `tab_id`를 반환합니다. | `label`, `auth_profile_id`, `initial_url`, `retain_on_close` |
| `ogma_browser_context_clone` | 깨끗한 컨텍스트를 생성하거나 `clone_mode: authenticated`로 원본 컨텍스트의 쿠키를 복사합니다. 전체 저장소 복제는 아닙니다. | **`context_id`**, `clone_mode`, `label` |
| `ogma_browser_context_close` | 컨텍스트와 그 탭을 닫으며 생성 시 보존을 요청하지 않았다면 저장소를 지웁니다. | **`context_id`** |
| `ogma_browser_context_list` | 브라우저 컨텍스트와 상태를 나열합니다. | 없음. |
| `ogma_browser_auth_state_capture` | 쿠키와 웹 저장소를 이름이 지정된 메모리 내 인증 상태로 캡처하고 민감 정보를 가린 메타데이터를 반환합니다. | **`name`**, `tab_id`, `context_id`, `role`, `url` |
| `ogma_browser_auth_state_apply` | 캡처한 인증 상태를 복원합니다. 만료 메타데이터는 서버가 세션을 받아들인다는 증거가 아닙니다. | **`auth_state_id`**, `tab_id`, `context_id`, `url` |
| `ogma_browser_auth_state_list` | 전체 비밀 값을 제외하고 캡처한 인증 상태를 나열합니다. | 없음. |
| `ogma_browser_auth_state_delete` | 캡처한 인증 상태 하나를 삭제합니다. | **`auth_state_id`** |
| `ogma_browser_storage_list` | 짧은 값 미리보기로 쿠키와 웹 저장소 항목을 나열합니다. | `origin`, `storage_type` |
| `ogma_browser_storage_get` | 짧은 값 미리보기로 쿠키 또는 저장소 키 하나를 조사합니다. | **`storage_type`**, **`key`**, `origin` |
| `ogma_browser_storage_set` | 쿠키/저장소 값을 씁니다. Ogma `env:VARIABLE_NAME` 참조를 받을 수 있습니다. | **`storage_type`**, **`key`**, **`value`**, `origin`, `domain`, `path`, `http_only`, `secure`, `expires` |
| `ogma_browser_storage_delete` | 쿠키 또는 웹 저장소 키 하나를 삭제합니다. | **`storage_type`**, **`key`**, `origin` |
| `ogma_browser_permissions_set` | 오리진의 지정된 웹사이트 권한을 허용, 거부 또는 초기화합니다. | **`origin`**, **`permissions`**, `setting`, `context_id` |
| `ogma_browser_permissions_reset` | 브라우저 권한의 재정의 설정을 지웁니다. | `context_id` |
| `ogma_browser_permissions_get` | 오리진의 웹사이트 권한 상태를 조회합니다. | **`origin`**, `permissions` |

### 브라우저 진단, 증거 및 복구 {#browser-diagnostics-evidence-and-recovery}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_browser_network_delta` | 커서 이후의 제한된 네트워크 항목을 가져오며 전체 URL, 시간 정보, 오류 및 사용 가능한 HTTP 기록 ID를 유지합니다. | `since_entry_id`, `resource_types`, `status_filter`, `failed_only`, `max_entries` |
| `ogma_browser_console_delta` | 새 콘솔 항목을 가져오며 브라우저가 제공하는 경우 소스 URL, 행 및 열을 포함합니다. | `since_entry_id`, `levels`, `max_entries` |
| `ogma_browser_action_correlation` | 작업의 시간 구간과 관련된 트래픽/이벤트를 가져오거나 최근 작업을 나열합니다. 시간 관계만으로 인과관계가 입증되지는 않습니다. | `browser_action_id`, `limit` |
| `ogma_browser_snapshot_save` | 나중에 비교할 수 있도록 현재 스냅샷을 보관합니다. 최대 20개를 보관합니다. | `label` |
| `ogma_browser_page_state_compare` | 보관된 스냅샷 두 개를 비교하고 요소/상태 차이를 보고합니다. 선택적으로 자주 변하는 값과 역할을 무시할 수 있습니다. | **`snapshot_id_a`**, **`snapshot_id_b`**, `ignore_volatile`, `ignore_roles` |
| `ogma_browser_trace_start` | 가벼운 작업 추적을 시작합니다. `detailed`는 콘솔과 네트워크 참조를 추가합니다. | `level`, `label`, `context_id` |
| `ogma_browser_trace_stop` | 추적을 중지하고 이벤트를 메모리에 유지합니다. | **`trace_id`** |
| `ogma_browser_trace_export` | 중지된 추적을 활성 프로젝트의 JSON 호스팅 파일 아티팩트로 저장합니다. | **`trace_id`** |
| `ogma_browser_trace_list` | 추적과 기록/내보내기 상태를 나열합니다. | 없음. |
| `ogma_browser_trace_note` | 현재 기록 중인 모든 추적에 메모를 추가합니다. | **`note`** |
| `ogma_browser_human_takeover_start` | 제한된 시간 동안 수동 체크포인트를 위해 에이전트의 브라우저 작업을 일시 중지합니다. | `reason`, `context_id`, `tab_id`, `timeout_ms` |
| `ogma_browser_human_takeover_complete` | 수동 상호작용 후 제어권을 돌려주고 페이지 스냅샷을 갱신합니다. | **`takeover_id`** |
| `ogma_browser_human_takeover_status` | 수동 제어가 활성화되어 있는지 확인하고 남은 시간을 보고합니다. | 없음. |
| `ogma_browser_health` | 디버거 브리지의 정상 동작 여부와 최근 충돌/연결 끊김 정보를 보고합니다. | 없음. |
| `ogma_browser_recover` | 기본적으로 증거를 보존하면서 브리지 복구를 시도합니다. `relaunch_required`를 보고할 수 있습니다. | `preserve_evidence` |

### 인증 및 인가 테스트 {#authentication-and-authorization-testing}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_auth_capture_profile` | 내장 브라우저에서 쿠키, 저장소, 감지된 인증 토큰 및 CSRF 후보를 캡처합니다. | **`name`**, `role`, `url`, `tab_id`, `wait_ms` |
| `ogma_auth_list_profiles` | 비밀 값을 요약하여 캡처한 인증 프로필을 나열합니다. | 없음. |
| `ogma_auth_apply_profile` | 역할 또는 계정을 전환하기 위해 캡처한 인증 프로필을 내장 브라우저에 적용합니다. | **`profile_id`**, `url`, `tab_id`, `wait_ms` |
| `ogma_auth_refresh_csrf` | 현재 페이지, 쿠키, 저장소, 메타 태그 및 숨겨진 입력 필드에서 CSRF 토큰 후보를 갱신합니다. | `profile_id`, `url`, `tab_id`, `wait_ms` |
| `ogma_login_replay_auto` | 로그인 폼을 자동 감지하고 내장 브라우저에서 자격 증명을 제출한 다음 인증 프로필을 캡처합니다. | **`login_url`**, **`username`**, **`password`**, **`profile_name`**, `role`, `tab_id`, `wait_ms` |
| `ogma_authz_matrix_test` | 캡처한 요청 하나를 여러 인증 프로필로 재전송하여 접근 제어 결과를 비교합니다. | **`request_id`**, **`profile_ids`**, `mutations`, `entry_id` |

### 재사용 가능한 로그인 여정 {#reusable-login-journeys}

메모리 내 인증 프로필과 달리 로그인 여정은 프로젝트별로 영속적으로 저장됩니다. 자격 증명은 Ogma 환경 변수 ID를 참조합니다. 설정된 모든 검증을 통과해야 합니다. 로그인 폼을 제출했다는 사실만으로 인증에 성공한 것은 아닙니다.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_auth_journey_record` | 로그인 단계, 자격 증명 참조, 검증 검사 및 선택적 수동 MFA 체크포인트를 저장합니다. 여정을 정의하는 도구이며 임의의 클릭을 자동으로 기록하지는 않습니다. | **`name`**, `role`, **`login_url`**, **`username_env_var_id`**, **`password_env_var_id`**, `username_selectors`, `password_selectors`, `submit_selectors`, `steps`, **`verification`**, `mfa`, `mfa_reason`, `mfa_timeout_ms` |
| `ogma_auth_journey_list` | 세션 비밀 정보를 가린 상태로 활성 프로젝트에 저장된 로그인 여정을 나열합니다. | 없음. |
| `ogma_auth_journey_replay` | 저장된 로그인 여정을 실행하고 인증을 검증한 다음 갱신된 세션을 저장합니다. 설정된 경우 수동 MFA를 위해 일시 중지합니다. | **`journey_id`**, `tab_id` |
| `ogma_auth_journey_verify` | 현재 세션을 대상으로 URL, DOM, 쿠키 및 선택적 검증 요청을 확인합니다. | **`journey_id`**, `tab_id` |
| `ogma_auth_journey_ensure` | 현재 세션을 검증하고 저장된 상태의 복원을 시도한 다음 여전히 필요한 경우에만 로그인을 재실행합니다. | **`journey_id`**, `tab_id` |
| `ogma_auth_journey_resume` | 수동 체크포인트 후 여정을 계속하고 생성된 세션을 검증합니다. | **`journey_id`**, **`takeover_id`**, `tab_id` |

### 유틸리티와 분석 {#utilities-and-analysis}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_fetch_sourcemap` | JavaScript 소스 맵을 가져와 조사합니다. | **`url`**, `base_url` |
| `ogma_proto_decode` | 설정된 스키마로 protobuf 페이로드를 디코딩합니다. | **`data_b64`**, `content_type` |
| `ogma_decode_jwt` | JWT 헤더와 클레임을 디코딩합니다. | **`token`** |
| `ogma_decode_response` | base64, gzip, deflate, brotli, URL, HTML 엔티티 및 십육진수 처리 같은 작업을 순서대로 적용하여 응답 본문을 디코딩, 압축 해제 또는 변환합니다. | **`input`**, `input_is_b64`, **`operations`**, `max_output_bytes` |
| `ogma_search_js_secrets` | JavaScript 응답에서 노출된 비밀 정보와 엔드포인트를 검색합니다. | `host`, `patterns` |
| `ogma_compare_responses` | 두 응답을 비교합니다. | **`entry_id_a`**, **`entry_id_b`**, `mode` |
| `ogma_bytes_transform` | 인코딩, 디코딩, XOR, 해싱 및 추출 같은 바이트 변환을 수행합니다. | **`operation`**, **`data`**, `key`, `output_encoding`, `offset`, `length`, `min_len` |
| `ogma_wasm_inspect` | WebAssembly 모듈을 조사합니다. | **`wasm_b64`**, `data_encoding` |
| `ogma_fingerprint_target` | 캡처한 트래픽과 응답에서 대상의 기술을 식별합니다. | `host`, `entry_limit` |
| `ogma_sign_request` | 클라이언트 측 서명 방식을 사용하는 애플리케이션의 HMAC-SHA256 요청 서명 헤더를 계산합니다. | **`key`**, **`method`**, **`path`**, `params` |
| `ogma_find_in_response` | 최대 10개의 URL을 가져오고 응답 본문에서 정규 표현식을 검색하여 짧은 맥락을 함께 반환합니다. | **`urls`**, **`pattern`**, `headers`, `context_chars`, `max_matches_per_url`, `case_insensitive`, `timeout_secs` |
| `ogma_think` | MCP 세션 안에 구조화된 추론 또는 계획 텍스트를 기록합니다. | **`thought`** |
| `ogma_explain_capabilities` | MCP 서버 기능 요약을 반환합니다. | 없음. |

### 능동 탐지 보조 도구 {#active-probe-helpers}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_run_active_probe_workflow` | 캡처한 요청에 대해 제한된 범위에서 특정 취약점을 탐지합니다. 모듈에는 IDOR/BOLA, CORS, SSRF OAST, XSS 반사/저장, SQLi 시간/오류 기반 탐지, 경로 순회, SSTI, 업로드 우회, GraphQL 인트로스펙션/인가, JWT 조작 및 요청 빈도 제한 검사가 있습니다. | **`probe`**, **`request_id`**, `entry_id`, `target_param`, `profile_ids`, `values`, `origins`, `max_cases` |
| `ogma_test_race` | 요청 하나를 동시에 전송하고 최빈 상태, 그와 다른 응답 및 판정을 보고합니다. 일회성 작업에 사용하세요. 한 번만 성공해야 하는 작업에 여러 성공 응답이 나오면 원자성이 없음을 보여 줍니다. 캡처한 항목에는 `request_id`를 전달하거나 `host`와 `port`에 더해 나머지 요청 내용을 명시하세요. `http2`를 설정하면 모든 요청을 한 연결의 동시 스트림으로 전송합니다(단일 패킷). 대상이 HTTP/2를 사용하는 경우 짧은 경쟁 시간 구간을 공략하는 방식입니다. 기본값은 요청마다 연결을 엽니다. 응답 차이는 동시 처리에 관한 증거일 뿐이며 모든 응답이 같아도 원자성의 증거는 아닙니다. 작업이 변경한 상태에서 확인하세요. | `request_id`, `entry_id`, `method`, `host`, `port`, `tls`, `path`, `query`, `params`, `headers`, `body_b64`, `concurrency`, `stagger_ms`, `http2` |
| `ogma_test_smuggling` | 원시 TCP로 CL.TE 및 TE.CL 동기화 불일치 탐지 요청을 보내고 탐지 결과, 후보 및 판정을 보고합니다. `headers`로 전달한 헤더는 탐지 요청에만 포함됩니다. 동기화 불일치를 측정하는 후속 요청에는 항상 포함하지 않습니다. 이 탐지는 휴리스틱 방식이며 오탐과 미탐이 자주 발생합니다. 첫 요청 후 연결을 닫거나 충돌하는 메시지 프레이밍을 400으로 거부하는 프런트엔드도 취약한 프런트엔드와 같은 탐지 결과를 보입니다. 음성 결과도 안전하다는 증거가 아닙니다. 보고 전에 확인하세요. 원시 모드의 `ogma_http_request`로 탐지 바이트를 `raw_request_base64`에 전달하여 재전송하고 `max_responses`를 2로 설정해 그 바이트가 요청하지 않은 응답을 읽으세요. 그런 다음 같은 연결에서 `followup_raw_request_base64`로 일반 요청을 보내 두 상태를 비교하세요. HTTP/1.x만 지원합니다. | **`host`**, **`port`**, `tls`, `path`, `timeout_ms`, `headers` |
| `ogma_test_hpp` | 지정한 매개변수에 HTTP 매개변수 오염 변형을 보내고 어떤 변형이 응답 상태나 본문을 변경했는지 판정과 함께 보고합니다. 매개변수가 한 구성요소에서 검증되고 다른 구성요소에서 사용되어 같은 이름의 중복 매개변수가 각기 다르게 해석될 수 있을 때 사용하세요. 응답 변화는 중복 매개변수의 처리가 다르다는 뜻일 뿐, 그 자체로 제어 우회를 입증하지는 않습니다. `headers`는 기준 요청을 포함한 모든 요청에 전송되므로 Cookie 또는 Authorization을 지정하면 자격 증명이 필요한 엔드포인트를 조사할 수 있습니다. 헤더가 없으면 쿠키와 인증 정보도 전송하지 않으므로 로그인이 필요한 엔드포인트에서 변형에 따른 변화가 없다는 결과는 아무것도 입증하지 못합니다. | **`host`**, **`port`**, **`params`**, `tls`, `path`, `base_value`, `test_value`, `timeout_ms`, `headers` |
| `ogma_list_nuclei_templates` | Ogma에 포함된 템플릿 스캐너 템플릿을 심각도 및 일치 결과의 의미와 함께 나열합니다. `ogma_run_nuclei` 전에 읽고 이름으로 선택하세요. | 없음. |
| `ogma_run_nuclei` | 대상 URL에 템플릿 하나를 실행하고 모든 일치 결과를 보고합니다. 발견 사항을 생성하지는 않습니다. 포함된 템플릿에는 `template`, 직접 작성한 문서에는 `template_yaml`을 전달하고 둘 다 지정하지는 마세요. 파서는 nuclei 기능의 일부인 상태, 단어 및 정규 표현식 매처, `matchers-condition` 및 정규 표현식 추출기를 지원합니다. DSL 표현식을 포함하여 지원 범위 밖의 매처 유형은 평가하지 않고 건너뜁니다. 완전한 nuclei 설치에서는 허용하는 템플릿도 이 도구에서 실행할 수 없는 경우가 있습니다. 템플릿은 노출된 `.env`, `.git/config`, actuator 엔드포인트 또는 server-status 페이지처럼 수동형 스캐너가 볼 수 없는 노출 및 잘못된 설정을 검사합니다. | **`target`**, `template`, `template_yaml` |
| `ogma_record_test_attempt` | 엔드포인트, 매개변수 또는 벡터 하나를 테스트한 사실과 결과를 기록하여 이후 세션에서 막다른 경로와 아직 테스트하지 않은 지점을 구분할 수 있게 합니다. `no_signal`만 해당 지점의 추가 조사를 종료합니다. `transport_error`는 탐지 요청이 대상에 도달하지 못했다는 뜻이므로 해당 벡터에 대해 아무것도 입증하지 못합니다. | **`host`**, **`port`**, **`path`**, **`vector`**, **`outcome`**, **`reason`**, `parameter`, `payload_label`, `evidence_entry_id` |
| `ogma_list_test_attempts` | 기록된 테스트 시도를 최신순으로 나열하고 호스트, 포트, 경로, 매개변수 및 벡터별로 묶어 각 지점의 결정적인 시도, 시도 횟수 및 추가 조사 종료 여부를 보고합니다. 결정적인 결과가 `no_signal`일 때만 추가 조사를 종료한 상태로 보며, 이후의 `transport_error`는 그 상태를 해제하지 않습니다. | `host`, `port`, `path`, `vector`, `limit` |

### 직접 WebSocket 테스트 {#direct-websocket-testing}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_websocket_connect` | `ws://` 또는 `wss://` URL에 연결하여 메시지를 보내고 대화 기록을 반환합니다. | **`url`**, **`messages`**, `headers`, `timeout_secs` |
| `ogma_ws_capture_history` | 검토와 증거 연결을 위해 `ogma_websocket_connect`의 WebSocket 대화 기록을 구조화된 Ogma 기록으로 저장합니다. | **`url`**, **`transcript`**, `label` |

### 찾아 바꾸기 {#match-and-replace}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_list_match_replace_rules` | 찾아 바꾸기 규칙을 나열합니다. | 없음. |
| `ogma_create_match_replace_rule` | 찾아 바꾸기 규칙을 생성합니다. 워크플로 작업에는 workflow\_id가 필요합니다. | **`name`**, `enabled`, **`direction`**, **`operation`**, **`match_value`**, `match_mode`, `replace_value`, `filter_method`, `filter_host`, `filter_path`, `filter_httpql`, `position`, `workflow_id` |
| `ogma_toggle_match_replace_rule` | 찾아 바꾸기 규칙을 활성화하거나 비활성화합니다. | **`rule_id`**, **`enabled`** |
| `ogma_delete_match_replace_rule` | 찾아 바꾸기 규칙을 삭제합니다. | **`rule_id`** |

### 환경 변수 {#environment-variables}

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_list_env_vars` | 환경 변수 이름과 메타데이터를 나열합니다. | 없음. |
| `ogma_set_env_var` | 환경 변수를 생성하거나 수정합니다. | **`name`**, **`value`**, `scope`, `is_secret` |
| `ogma_get_env_var_value` | 권한이 있으면 환경 변수 값을 읽습니다. | **`name`** |

### 프로젝트, 메모, 할 일 및 세션 {#projects-notes-todos-and-session}

프로젝트 전환은 요청한 에이전트뿐 아니라 Ogma의 활성 프로젝트에 영향을 줍니다. 다른 클라이언트와 조율하세요. 아래 메모/할 일 도구는 **메모리 내 MCP 세션 임시 메모장**이며 애플리케이션의 영속적인 메모 페이지와는 다릅니다. MCP 연결을 끊거나 다시 시작하기 전에 세션 보고서를 보존하세요.

| 도구 | 기능 | 입력 |
| --- | --- | --- |
| `ogma_list_projects` | 프로젝트를 나열합니다. | 없음. |
| `ogma_switch_project` | 활성 프로젝트를 전환합니다. | `project_id`, `project_name` |
| `ogma_start_pentest_session` | 대상에 대한 구조화된 평가 계획을 생성하고 기본적으로 세션 로컬 메모/체크리스트도 생성합니다. 전체 스캔을 자동으로 실행하지는 않습니다. | **`target_url`**, `objective`, `mode`, `create_scratchpad` |
| `ogma_get_coverage_status` | 현재 세션의 체크리스트 진행 상황과 남은 검사 범위를 요약합니다. 테스트가 완전하다는 증거는 아닙니다. | 없음. |
| `ogma_recommend_skills` | 관찰된 기술, 경로, 헤더 및 기타 제공된 맥락을 바탕으로 내장 스킬 지침을 제안합니다. | `observations`, `paths`, `content_types`, `headers`, `technologies`, `response_snippets`, `notes` |
| `ogma_note_create` | 메모를 생성합니다. | **`title`**, **`content`**, `category` |
| `ogma_note_list` | 메모를 나열합니다. | `category` |
| `ogma_note_get` | 메모 하나를 가져옵니다. | **`id`** |
| `ogma_note_update` | 메모를 수정합니다. | **`id`**, `title`, `content`, `category` |
| `ogma_note_delete` | 메모를 삭제합니다. | **`id`** |
| `ogma_todo_create` | 할 일을 생성합니다. | **`task`**, `priority` |
| `ogma_todo_list` | 할 일을 나열합니다. | `status`, `priority` |
| `ogma_todo_update` | 할 일을 수정합니다. | **`id`**, `task`, `priority`, `status` |
| `ogma_todo_mark_done` | 할 일을 완료로 표시합니다. | **`id`** |
| `ogma_todo_delete` | 할 일을 삭제합니다. | **`id`** |
| `ogma_finish_session` | 요약, 방법론 및 권장 사항으로 MCP 세션을 마무리합니다. | **`summary`**, **`methodology`**, **`recommendations`** |
| `ogma_get_session_report` | 현재 MCP 세션 보고서를 가져옵니다. | 없음. |

## 작업 공간 AI와의 관계 {#relationship-to-workspace-ai}

MCP 서버는 외부 도구가 사용하는 프로토콜 서버입니다. 앱 내 작업 공간 AI는 설정된 AI 제공자를 직접 호출하고 자체 프런트엔드 도구 목록을 제공하는 Vue/브라우저 기능입니다. [작업 공간 AI](../guide/workspace-ai.md)를 참고하세요.
