Skip to main content
Glama

위클리-검증 (weekly-verify-mcp)

Написанный еженедельный отчёт о работе (.docx) сверяется с исходными данными (.xlsx), чтобы найти неверные значения · пропущенные пункты · противоречащие данным описания и вернуть их человеку — персональный MCP-сервер.

Не исправляет. Только указывает. Исправляет человек.

Полный проект см. в docs/검증프로세스.md.


Текущее состояние — P0~P5 завершено · зарегистрировано в Codex

Этап

Содержание

Статус

P0

Каркас + загрязнённый набор данных

✅

P1

Оценщик (run_eval.py) — раньше движка проверки

✅

P2

Парсер исходных данных + 5 типов движков проверки + L3 пропуски

✅

P3

Извлечение утверждений + сверка значений (L1·L2) + противоречия в описаниях (L4)

✅

P4

Обёртка 10 MCP-инструментов + смоук-тест

✅

P5

Регистрация в Codex + проверка запуска

✅


Related MCP server: phionyx-pipeline-mcp

4 уровня проверки

Весь проект этого инструмента исходит из этой таблицы.

Уровень

О чём спрашивает

Вердикт

Серьёзность

L1 наличие

Есть ли это значение в исходных данных

код

error

L2 согласованность

Совпадает ли с полем этой задачи

код

error

L3 пропуск

Не пропущен ли вердикт, который должен быть из исходных данных

код

error

L4 интерпретация

Значение верно, но описание противоречит

человек

warning фиксированно

  • Одного L1 недостаточно. Если значение L-18 перенести в строку L-19, оба значения существуют в исходных данных, поэтому L1 пройдёт. Только L2, который сверяет и код задачи, поймает это.

  • L3 — причина существования этого инструмента. Люди чаще ошибаются в еженедельных отчётах не в цифрах, а в незаписанных пунктах. Неверная цифра бросается в глаза, а отсутствующая строка — нет.

  • L4 структурно не может быть error. Это принудительно обеспечивает harness.Finding, а tests/test_harness.py это фиксирует. Если дать блокирующее право проверке, в которой мы не уверены, нормальные отчёты будут блокироваться, и человек выключит проверщик.


6 гейтов

evals/weekly-verify.yaml — то, что требуется от движка. Оценивается командой uv run python scripts/run_eval.py.

ID

Требование

Блокирует

G1 уровень обнаружения

Не пропустить ни одного загрязнения уровня error в C01~C07

✅

G2 ложные срабатывания

Не выдавать error на нормальный отчёт (C10)

✅

G3 серьёзность

Не выдавать error на C08·C09

✅

G4 скорость

1 отчёт в течение 60 секунд

✅

G5 обоснование

Все error заполняют обязательные координаты по уровням

✅

G6 точность уровней

Классифицировать найденные замечания по правильному уровню

⬜ для наблюдения

Требования к координатам различаются по уровням (G5)

Уровень

Место в отчёте

Место в исходных данных

Причина

L1

✅

—

Значения нет в исходных данных, поэтому нечего указать

L2

✅

✅

Есть с обеих сторон

L3

—

✅

Пункта нет в отчёте, поэтому нечего указать

L4

✅

—

Если принудительно заполнять координаты, которые невозможно заполнить, человек откроет не то место и поверит, что проверил.

N/A — это не прохождение

Гейты типа «не делай плохих вещей» (G2·G3·G5) удовлетворяются автоматически, если движок ничего не выдаёт. Если записать это как PASS, движок без единой функции выглядит так, будто прошёл 5 из 6. Поэтому, если нет оснований для оценки, записывается N/A, и N/A не считается прохождением.

Текущие результаты оценки (на момент P3 — всё пройдено)

C01 수치 조작 [OK] 1/1    C05 지연 누락  [OK] 3/3    C09 반올림 [OK] 0/0
C02 날짜 오기 [OK] 1/1    C06 미제출 은폐 [OK] 3/3    C10 정상   [OK] 오탐 0
C03 값 오배치 [OK] 1/1    C07 역행 무시  [OK] 1/1
C04 없는 과제 [OK] 1/1    C08 서술 상충  [OK] 0/0

[PASS] G1_검출률  11/11 (100%)   [PASS] G4_속도   최장 0.1초 / 제한 60초
[PASS] G2_오탐   error 0건       [PASS] G5_근거   좌표 누락 0건 / error 12건
[PASS] G3_심각도  위반 0건        [PASS] G6_계층정확성  11/11 (100%)

G5 проверил error 12 случаев, а ожидалось 11. Это потому, что загрязнение C01 изменило ячейки в двух таблицах по отдельности, и исправить нужно оба места, поэтому это не дубликат.


Папки

weekly-verify-mcp/
├─ docs/검증프로세스.md      설계 문서 (13개 절)
├─ src/weekly_verify/
│  ├─ harness.py             도구 응답 규약 · Finding · 두 좌표계
│  ├─ sources.py             원본 xlsx 파서 + DATA_ROOT 가드
│  ├─ findings.py            판정 5종 (원본만 보고 계산)
│  ├─ report.py              보고서 docx 파서
│  ├─ claims.py              주장 추출 (규칙 기반, LLM 미사용)
│  ├─ values.py              L1 존재 · L2 정합 + 억제 규칙 3종
│  ├─ completeness.py        L3 누락 검사
│  ├─ narrative.py           L4 서술 상충 (warning 고정)
│  ├─ verify.py              진입점 — 네 계층 조립 + 계층 간 중복 제거
│  ├─ record.py              검증 결과 문서 생성·저장 + 승인 토큰
│  └─ server.py              MCP 도구 10개 · 리소스 2 · 프롬프트 1
├─ scripts/
│  ├─ make_fixtures.py       오염 시나리오 10종 생성
│  ├─ check_fixtures.py      픽스처 자기검증 (30개 검사)
│  ├─ run_eval.py            채점기 (게이트 6종)
│  ├─ smoke_stdio.py         stdio 기동 + 하네스 검사 15종
│  └─ verify_registration.py 설정 파일의 절대경로로 기동 확인
├─ tests/
│  ├─ test_harness.py        하네스 규약 잠금 (16개)
│  ├─ test_eval_contract.py  채점기 검증 — 가짜 엔진 7종 (20개)
│  ├─ test_findings.py       판정 엔진 ↔ 정답지 1건씩 대조 (27개)
│  ├─ test_completeness.py   L3 누락 검사 (31개)
│  ├─ test_values.py         L1·L2 + 억제 규칙 (53개)
│  ├─ test_narrative.py      L4 서술 상충 (43개)
│  └─ test_server_contract.py docstring ↔ 실제 규칙 잠금 (63개)
├─ data/
│  ├─ 원본/                  ← 서버가 읽는 유일한 곳
│  │  ├─ 마스터_주간보고_누적.xlsx
│  │  └─ 제출_2026-W35/ (담당자 6명)
│  ├─ 보고서/ C01~C10.docx   검증 대상
│  └─ 출력/                  검증 결과 기록 (저장 산출물)
├─ config/                   등록 설정 + README
├─ templates/                검증 결과 문서 템플릿
└─ evals/                    🚫 서버 접근 금지 — evals/README.md 참조
   ├─ 정답지_2026-W35.xlsx
   ├─ fixtures_manifest.json 픽스처가 담고 있는 사실
   └─ weekly-verify.yaml     엔진에게 요구하는 정책

Причина разделения manifest и suite в том, что у них разные интересы — первое — это факт, созданный генератором, поэтому меняется вместе с docx, а второе — политика, установленная человеком, и не связано с docx. Если объединить в один файл, ожидаемые значения появятся в двух местах и будут дрейфовать.


10 сценариев загрязнения

data/보고서/C01~C10.docx. Ожидаемые обнаружения для каждого файла — в evals/fixtures_manifest.json.

Код

Тип

Что внедрено

Ожидание

C01

Манипуляция числами

L-01 прогресс за неделю 80 → 90

error L2

C02

Ошибка в дате

L-08 плановая дата завершения сдвинута на день

error L2

C03

Неверное размещение значения

60 из L-18 в строку L-19 (правильно 40)

error L2

C04

Несуществующая задача

Добавлена строка L-31

error L1

C05

Пропуск задержки

Задержки 6→3, количество в сводке тоже скорректировано

error L3 ×3

C06

Сокрытие непредставленного

Удалена таблица непредставленных + заполнено значениями прошлой недели

error L3 ×3

C07

Игнорирование регресса

Не упомянут 1 случай регресса

error L3

C08

Противоречие в описании

Задержка 64 дня — «идёт гладко»

warning L4

C09

Округление

62.2% → 62%

warning

C10

Нормальный

Без загрязнения

error 0 случаев

C05 · C06 · C07 — ключевые

Эти три сохраняют внутреннюю согласованность загрязнённого отчёта. Удаляя 3 задержки, одновременно исправили количество в сводной таблице с 6 на 3. Поэтому при чтении только отчёта нет никаких противоречий, и это выявляется только при сверке с исходными данными. Удалённые L-02 · L-08 · L-19 — это ровно те 3 случая, где ответственный оставил поле 이슈리스크 пустым.

C09 · C10 не менее важны

Это тест на предотвращение ложных срабатываний. Проверщик, который выдаёт error на нормальный отчёт, никто не будет использовать.


Правила подавления — одна ошибка сообщается как один случай

Даже если загрязнение изменило только одно место, производные значения ошибочны по цепочке. В C02 сдвинули только 계획완료일 на день, но 경과일 тоже стал неверным, а в C03 изменили только 금주진척률, но 증감 тоже неверен. Если указывать на всё это, одна ошибка превратится в два замечания, человек будет искать в двух местах и не сможет оценить серьёзность по количеству замечаний.

#

Правило

Случаи, не подавляемые

1

Если задачи нет в исходных данных, другие значения этой строки не сверяются

— (заканчивается 1 замечанием L1)

2

Значения текущей недели непредставленной задачи не сверяются

Значения прошлой недели сверяются как есть

3

Производные значения пропускаются, если материал уже был отмечен

Если материал верен, указывается ошибка производного значения

4

Подавляется замечание о количестве в сводке для категории, обработанной L3

Если пункты верны, а неверно только количество, указывается

Подавление не безусловно. Для каждого правила протестированы пары: подавляемая сторона и неподавляемая — правила подавления тихо рушатся в тот момент, когда хочется сказать «вот это тоже хорошо бы отметить».

Столбцы, которые не проверяются, объявляются

В claims.미검증_열 записаны 5 типов с причинами (상태 — это метка вердикта, поэтому относится к L3, форма O (완료 2026-08-20) в таблице регрессов — свободный формат, поэтому сверка нестабильна, и т.д.). Если тихо пропускать, это читается как «всё проверено», но на самом деле есть столбцы, которые не просматривались.


Запуск

uv sync --extra dev
uv run python scripts/make_fixtures.py
uv run python scripts/check_fixtures.py
uv run python scripts/run_eval.py
uv run python -m pytest -q
uv run python scripts/smoke_stdio.py
uv run python scripts/verify_registration.py

10 MCP-инструментов

#

Инструмент

Этап

Запись

1

list_verification_targets

DISCOVER

2

read_source_data

SOURCE

3

compute_baseline_findings

BASELINE

4

read_report

REPORT

5

extract_report_claims

CLAIM

6

verify_claims

VERIFY (L1·L2)

7

check_completeness

COMPLETE (L3)

8

flag_narrative_risks

NARRATE (L4)

9

preview_verification_report

PREVIEW

10

save_approved_verification

SAVED

✅

Быстрый путь: один инструмент №9 запускает все четыре уровня. Промежуточные инструменты используются, чтобы показать человеку, «почему вынесен такой вердикт».

Ресурсы template://verification · report://{보고서}, промпт verify_weekly_report.

Сохранение — это «запись замечаний» — error не блокирует

В черновике проекта было написано «отказать в сохранении, если есть хотя бы один error», но это было неверное правило. Сохранение — это запись замечаний, и именно когда есть error, запись нужна больше всего. Если блокировать в этот момент, инструмент становится бесполезным.

Блокировать нужно было другое.

#

Условие отказа

Причина

1

Токен одобрения не совпадает с текущими замечаниями

Предотвращает попадание в файл содержимого, которое человек не проверил

2

Есть error, но заключение — «пройдено»

Это не запись, а ложь

Заключение — одно из 통과 · 보류 · 반송. Токен одобрения вычисляется из содержимого замечаний, поэтому если изменится хотя бы одно замечание, токен не совпадёт и сохранение будет отклонено.

Эти два условия явно указаны в описании инструмента save_approved_verification, а tests/test_server_contract.py сверяет описание с фактическим кодом и фиксирует это — модель не читает код, поэтому правил, которых нет в описании, для модели не существует.


Регистрация (P5)

Регистрация в Codex завершена — в ~/.codex/config.toml есть [mcp_servers.weekly-verify] (резервная копия: config.toml.bak-2026-08-26). После перезапуска Codex инструменты появятся.

Claude Desktop — %APPDATA%\Claude — частично заблокированный путь, поэтому инструмент не может туда записать. Объедините содержимое config/claude_desktop_config.example.json вручную — это намеренная блокировка, и мы её не обходим.

command обязательно должен быть абсолютным путём. Десктопное приложение не наследует PATH из логин-шелла, поэтому если написать просто uv, в терминале работает, а в приложении сервер не запускается.

uv run python scripts/verify_registration.py

Проверяются 2 примера конфигурации и фактически зарегистрированная живая конфигурация — всего 3. Даже если примеры верны, но фактическая регистрация неверна, в приложении не запустится.


О данных

Все данные в data/ — учебные виртуальные (вымышленные) данные. Имена ответственных — персонажи классических романов, задачи — несуществующие темы автоматизации логистики. Никаких реальных корпоративных данных или личной информации нет, и не кладите реальные корпоративные файлы в эту папку.

Исходные данные взяты из mx-agentic-ai-day1-prd.

Available Tools

10 tools
check_completenessA
Read-onlyIdempotent

원본에서 나와야 할 판정이 보고서에 빠졌는지 봅니다 (L3).

이 검사가 이 도구의 존재 이유입니다. 사람이 주간보고에서 틀리는 것은 대개 숫자가 아니라 안 쓴 항목입니다. 틀린 숫자는 눈에 띄지만 없는 줄은 눈에 띄지 않습니다.

언급 여부를 두 수준에서 봅니다. 상세 표가 있으면 표에 없는 과제코드가 누락이고, 집계만 했으면 건수가 원본과 맞는지 봅니다 — 집계만 하고 개별 항목을 나열하지 않는 것은 정상적인 보고 방식이기 때문입니다.

Returns: 지적응답: L3 지적 목록. 보고서에 없는 항목이므로 보고서 좌표는 비어 있고 원본 좌표만 채워집니다.

Examples: - 사용: "빠뜨린 지연 과제가 있나요?" - 사용하지 않음: 적힌 값이 맞는지 보려면 → verify_claims

NameRequiredDescriptionDefault
보고서Yes검증 대상 .docx 파일명 또는 경로
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차2026-W35
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
infoYes
errorYes
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
계층Yes이 호출이 검사한 계층
지적Yes
warningYes
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and idempotent behavior, and the description adds meaningful context: the two-level comparison logic, the treatment of aggregation as normal, and the response shape (L3 finding list with empty report coordinates and populated source coordinates). There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, and each section—rationale, methodology, return shape, and examples—serves a clear function. The motivational paragraph is slightly longer than strictly necessary but still earns its place by explaining why this tool matters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only comparison tool with annotated safety, complete schema descriptions, defaults, and an output schema, the description covers selection, invocation, interpretation, and return format. Nothing needed to call or interpret the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the roles of 보고서, 전주차, 기준주차, and 원본디렉터리. The description confirms the report-vs-source comparison but adds little parameter-level detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific action: checking whether judgments that should appear from the source are missing from the report, and labels the level (L3). The examples and the explicit pointer to verify_claims distinguish this from the nearest sibling, so an agent can identify it as the omission-checking tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case ('빠뜨린 지연 과제가 있나요?') and an explicit exclusion: if checking whether written values are correct, use verify_claims. It also explains that aggregated reporting without individual items is normal, which clarifies when this tool should and should not flag an omission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compute_baseline_findingsA
Read-onlyIdempotent

원본 데이터만으로 판정 5종(신규완료·지연·일정변경·역행·미제출)을 계산합니다.

이 도구는 보고서를 입력으로 받지 않습니다. 그것이 핵심입니다. 보고서를 보고 판정을 계산하면 보고서에 이끌려, 보고서에서 빠진 항목을 영영 찾지 못합니다.

판정은 날짜·완료여부 계산으로만 합니다. 담당자가 적은 이슈리스크 텍스트는 판정에 쓰지 않습니다 — 이슈를 적지 않은 지연 과제를 잡아내는 것이 이 도구의 존재 이유입니다.

Returns: 판정응답: 구분별 건수와 판정 목록. 각 판정은 원본 좌표를 갖습니다.

Examples: - 사용: "이번 주에 보고되어야 할 변동이 뭔가요?" - 사용하지 않음: 보고서와 대조하려면 → check_completeness / verify_claims

NameRequiredDescriptionDefault
구분No특정 판정만 보려면 지정. 신규완료·지연·일정변경·역행·미제출 중 하나
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차2026-W35
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
구분별Yes판정 구분별 과제/단계 기준 건수
기준일Yes지연 판정의 기준일 (기준주차의 월요일)
총판정Yes
next_actionsNo이어서 호출하면 좋은 도구 목록
판정목록Yes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds crucial non-obvious behavior: it ignores the '이슈리스크' text and computes only from date/completion fields. It also explains the strategic rationale—catching delayed tasks that failed to write an issue—which is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the key constraint in bold and uses short bullets and examples. It is slightly more verbose than strictly necessary due to rhetorical rationale ('그것이 핵심입니다'), but every substantive part earns its place by preventing misuse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, all parameters are optional with defaults, annotations cover safety, and the description covers purpose, non-usage, return summary, and examples, nothing essential is missing for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented including defaults and allowed values for '구분'. The description reinforces the original-data theme but does not add meaningful parameter-level detail beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: '원본 데이터만으로 판정 5종(신규완료·지연·일정변경·역행·미제출)을 계산합니다.' It explicitly distinguishes itself from report-based tools by stating it does not take reports as input, making sibling differentiation clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance ('이번 주에 보고되어야 할 변동이 뭔가요?') and when-not-to-use guidance with named alternatives: '보고서와 대조하려면 → check_completeness / verify_claims.' It also stresses that the tool should be used for original-data-only determination, not report comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_report_claimsA
Read-onlyIdempotent

보고서에서 원본과 대조 가능한 주장을 뽑습니다.

값은 원문 문자열 그대로 담습니다. 숫자로 바꾸거나 정규화하지 않습니다 — 62 를 62.0 으로 바꿔 놓으면 반올림 오류를 반올림 오류로 지적할 수 없습니다.

표 기반 보고서는 열 이름 → 필드 매핑으로 결정적으로 뽑힙니다. 추측이 개입하지 않으므로 같은 보고서는 항상 같은 주장을 냅니다.

미검증열 에는 의도적으로 검증하지 않는 열과 그 이유가 담깁니다. 조용히 건너뛰면 "전부 검증했다"로 읽히기 때문입니다.

Returns: 주장응답: 총 주장 수, 필드별 개수, 주장 목록(잘릴 수 있음).

Examples: - 사용: "보고서가 L-08 계획완료일을 뭐라고 적었나요?" (필드="계획완료일") - 사용하지 않음: 맞는지 틀리는지 판정하려면 → verify_claims

NameRequiredDescriptionDefault
필드No특정 필드만 보려면 지정. 예 금주진척률 · 계획완료일
보고서Yes검증 대상 .docx 파일명 또는 경로

Output Schema

NameRequiredDescription
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
잘림YesTrue면 주장 목록이 잘렸습니다. 필드 인자로 좁혀 보세요
주장Yes
총주장Yes
필드별Yes
next_actionsNo이어서 호출하면 좋은 도구 목록
미검증열Yes의도적으로 검증하지 않는 열과 그 이유. 조용히 건너뛰지 않는다

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds substantial behavioral context: values are kept as raw strings to avoid masking rounding errors, extraction is deterministic for table-based reports, and '미검증열' explicitly discloses unverified columns with reasons. This goes well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then gives behavioral guarantees, return summary, and examples. The '62 vs 62.0' rationale and the '미검증열' explanation are dense but purposeful; every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and annotations, the description is complete: parameters are covered, return contents are summarized including truncation, examples show how to phrase queries, and the sibling alternative is named. Nothing needed for correct invocation appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds a concrete example of 필드 ('L-08 계획완료일') and clarifies that extracted values remain raw strings, but it does not meaningfully elaborate on the 보고서 parameter beyond the schema. This is slightly above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: extracting ('뽑습니다') claims that can be checked against the original source ('원본과 대조 가능한 주장'). It also differentiates itself from verify_claims in the example, so an agent can distinguish extraction from verification without opening other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly gives a '사용' vs '사용하지 않음' example: use this tool to ask what the report says, and use verify_claims instead when the task is to judge correctness. It also notes deterministic table-based extraction, which helps the agent decide when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flag_narrative_risksA
Read-onlyIdempotent

값은 맞지만 서술이 데이터와 어긋나는 후보를 표시합니다 (L4).

64일 지연된 과제를 "순조롭게 진행 중"이라고 쓴 보고서는 숫자가 전부 정확합니다. L1·L2·L3 어디에도 걸리지 않는데, 읽는 사람은 완전히 잘못된 인상을 받습니다.

이 검사는 판단하지 않고 표시만 합니다. 그 서술이 부적절한지는 문맥에 달렸고 기계는 그 차이를 모릅니다. 그래서 결과는 항상 warning 이며 저장을 막지 않습니다. 확신하지 못하는 검사에 차단 권한을 주면 정상 보고서가 막히고, 사람이 검사기를 꺼 버립니다.

표는 보지 않습니다. 표의 칸은 값이고 값의 정합은 L2 소관입니다.

Returns: 지적응답: L4 후보 목록. error 는 구조적으로 나올 수 없습니다.

Examples: - 사용: "지연된 과제를 괜찮다고 써 놓은 데가 있나요?" - 사용하지 않음: 숫자 대조 → verify_claims

NameRequiredDescriptionDefault
보고서Yes검증 대상 .docx 파일명 또는 경로
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차2026-W35
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
infoYes
errorYes
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
계층Yes이 호출이 검사한 계층
지적Yes
warningYes
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds crucial behavioral context: results are always `warning`, the tool never blocks saving, it intentionally avoids judging narrative appropriateness, and it excludes table values. This explains the tool's limitations and design rationale clearly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: the purpose is stated first, followed by an illustrative example, explicit behavioral boundaries, and usage examples. Every section earns its place, and the bold key point makes the tool's non-blocking behavior immediately visible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations, output schema, and sibling tools, the description is fully sufficient. It explains what the tool does, when to use it, when not to use it, what it returns, and why it behaves conservatively. No important operational detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying that the '보고서' parameter refers to the narrative text, not tables, and by illustrating the kind of mismatch it detects. It does not deeply elaborate the week or directory parameters, but the schema already documents those adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's specific function: flag candidates where values are correct but the narrative conflicts with the data (L4). It explicitly distinguishes this from L1/L2/L3 checks and gives a concrete example, so an agent can identify the exact resource and behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides both a use case ('지연된 과제를 괜찮다고 써 놓은 데가 있나요?') and a non-use case with a named alternative ('숫자 대조 → verify_claims'). It also clarifies that this tool only flags, does not judge, and does not look at tables, which prevents misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_verification_targetsA
Read-onlyIdempotent

검증할 수 있는 보고서와 대조 기준이 되는 원본 파일 목록을 조회합니다.

검증 작업의 출발점입니다. 여기서 얻은 파일명을 다른 도구에 넘깁니다.

Returns: 대상목록응답: 원본 엑셀 목록과 .docx 보고서 목록.

Examples: - 사용: "검증할 수 있는 보고서가 뭐가 있나요?" - 사용하지 않음: 이미 파일명을 알고 바로 검증할 때 → preview_verification_report

NameRequiredDescriptionDefault
원본디렉터리No원본 엑셀이 있는 디렉터리. 기본값 data/원본data/원본
보고서디렉터리No검증 대상 .docx 가 있는 디렉터리. 기본값 data/보고서data/보고서

Output Schema

NameRequiredDescription
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
보고서Yes검증할 수 있는 .docx 목록
next_actionsNo이어서 호출하면 좋은 도구 목록
원본파일Yes마스터 파일과 제출본 목록
원본디렉터리Yes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, which covers the safety profile. The description adds context about returning two lists (original Excel and .docx reports), but this is also covered by the output schema. No contradiction with annotations, but little incremental behavioral disclosure beyond what structured fields provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise with the main purpose front-loaded. The 'Returns' section and example are useful but slightly redundant with the output schema. Overall efficient and easy to scan quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the description is complete: annotations cover safety, output schema covers return format, and the description covers workflow position, usage examples, and exclusions. An agent has everything needed to invoke it correctly without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both parameters (원본디렉터리 and 보고서디렉터리) have descriptive text in the schema. The description does not add any parameter-specific information, so it stays at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it queries the list of verifiable reports and original files for comparison, and includes a concrete example query. It also differentiates from the sibling tool preview_verification_report by specifying when not to use it, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly identifies this as the starting point of verification work, instructs the agent to pass the obtained filenames to other tools, and provides both when-to-use ('검증할 수 있는 보고서가 뭐가 있나요?') and when-not-to-use examples with an explicit alternative (preview_verification_report).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_verification_reportA
Read-onlyIdempotent

네 계층을 모두 돌려 지적 목록과 저장 대상, 승인 요청 문장을 돌려줍니다.

이 도구 하나로 L1·L2·L3·L4 전부를 검사합니다. 중간 도구들은 "왜 그렇게 판정했는지"를 사람에게 보여줄 때 씁니다.

승인토큰 은 지적 내용에서 계산됩니다. 지적이 하나라도 달라지면 토큰이 달라지므로, 사용자가 확인한 내용과 저장될 내용이 같다는 것을 보장할 수 있습니다.

approval_request 문장을 사용자에게 그대로 보여 주고, 명시적으로 승인받은 뒤에만 save_approved_verification 을 호출하십시오.

Returns: 미리보기응답: 지적 목록, 저장 경로, 승인토큰, 지금 쓸 수 있는 결론 후보.

Examples: - 사용: "이 보고서 검증해 주세요" - 사용하지 않음: 사용자 승인 없이 저장 → 절대 금지

NameRequiredDescriptionDefault
보고서Yes검증 대상 .docx 파일명 또는 경로
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차2026-W35
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
infoYes
errorYes
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
지적Yes
warningYes
보고서Yes
next_actionsNo이어서 호출하면 좋은 도구 목록
결론후보Yes지금 지적 상태에서 쓸 수 있는 결론
기준주차Yes
승인토큰Yessave_approved_verification 에 그대로 넘길 값
저장경로Yes
approval_requestYes사용자에게 그대로 보여 줄 승인 요청 문장

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable non-obvious behavior: the approval token is computed from finding content so any change alters it, and the approval request must be displayed verbatim. This gives the agent the workflow-level transparency that annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, and the approval workflow is prominently placed near the top. There is minor redundancy between the first sentence and the explicit 'L1·L2·L3·L4 전부를 검사합니다' repetition, but the overall structure is compact and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations, full parameter coverage, and an output schema, the description supplies the missing operational context: token integrity, verbatim approval display, and the save-after-approval gate. An agent has enough information to select and invoke this tool correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a clear description: report path, previous week, target week, and source directory. The description adds no additional parameter-specific detail, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: it runs all four verification layers and returns the finding list, storage target, and approval request sentence. It also distinguishes itself from sibling intermediate tools by stating it covers L1·L2·L3·L4 in one call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says intermediate tools are for showing humans why a judgment was made, implying this consolidated tool is for the full preview. It also gives a clear workflow rule: show `approval_request` verbatim and only call `save_approved_verification` after explicit user approval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_reportA
Read-onlyIdempotent

검증 대상 보고서(.docx)의 구조를 표와 문단으로 읽습니다.

각 표에 직전 제목을 붙여 돌려줍니다. "이 표가 무엇에 대한 표인가"를 알아야 지연 표에서 빠진 과제를 찾을 수 있기 때문입니다.

Returns: 보고서응답: 표별 제목·헤더·행수와 보고서에 등장한 과제코드 목록.

Examples: - 사용: "이 보고서에 어떤 표가 들어 있나요?" - 사용하지 않음: 값을 대조하려면 → extract_report_claims → verify_claims

NameRequiredDescriptionDefault
보고서Yes검증 대상 .docx 파일명 또는 경로. 예 C05.docx

Output Schema

NameRequiredDescription
표Yes
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
파일Yes
표수Yes
문단수Yes
next_actionsNo이어서 호출하면 좋은 도구 목록
과제코드Yes보고서 전체에서 발견된 과제코드

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnly, idempotent, and non-destructive. The description adds meaningful behavioral context beyond those annotations: each table is returned with its immediately preceding heading, and the rationale for this design is explained. It also summarizes the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, stating the core operation in the first sentence, followed by a brief behavioral rule, return summary, and short usage examples. Every sentence earns its place; the rationale for heading attachment is useful rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-parameter tool with an existing output schema, the description covers what the tool does, what it returns, and when not to use it. The non-obvious behavior of attaching preceding headings is explicitly stated, so an agent can invoke the tool correctly without surprises.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema with type, title, and description including an example file name. Schema coverage is 100%, so the description need not add much; the example C05.docx provides a small extra hint but does not carry a heavy semantic burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly identifies the operation: reading the structure of a verification .docx report, attaching preceding headings to each table, and returning table-level metadata plus task codes. The 'not use' example explicitly contrasts with extract_report_claims and verify_claims, helping an agent distinguish it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool (asking what tables exist in the report) and when not to use it (comparing values, in which case extract_report_claims → verify_claims is the path). This gives the agent a clear routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_source_dataA
Read-onlyIdempotent

원본 엑셀을 읽어 정규화 사실표로 만들고 그 규모를 돌려줍니다.

제출본에는 주차 열이 없으므로 기준주차를 스탬프로 찍어 적재합니다. 모든 행은 자기 좌표(파일·시트·행)를 들고 다니며, 그것이 나중에 지적의 근거가 됩니다.

Returns: 원본데이터응답: 행 수, 주차별 과제 수, 미제출 과제코드 목록.

Examples: - 사용: "원본에 몇 개 과제가 들어와 있나요?" / "누가 안 냈나요?" - 사용하지 않음: 판정 5종이 필요할 때 → compute_baseline_findings

NameRequiredDescriptionDefault
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차. 예 2026-W352026-W35
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
전주차Yes
next_actionsNo이어서 호출하면 좋은 도구 목록
기준주차Yes
단계행수Yes
요약행수Yes
금주과제수Yes
미제출과제Yes전주에 있으나 금주 제출본에 없는 과제코드
전주과제수Yes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint=true, idempotentHint=true, and destructiveHint=false in annotations, the description adds meaningful behavioral context: it stamps the baseline week onto rows, and every row carries file/sheet/row coordinates to support later issue pointing. It also discloses the output contents (row counts, per-week task counts, unsubmitted task codes), going well beyond what the annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (main description, Returns, Examples) and front-loads the core purpose. There is slight redundancy between '그 규모를 돌려줍니다' in the first line and the 'Returns' details, but overall every section earns its place and no unnecessary content is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, full parameter documentation, annotations, output schema, and explicit use/not-use examples, the description is complete for an agent to select and invoke the tool correctly. Nothing essential about purpose, behavior, or when to use it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters (전주차, 기준주차, 원본디렉터리) with defaults and explanations. The description does not add additional parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource statement: '원본 엑셀을 읽어 정규화 사실표로 만들고 그 규모를 돌려줍니다' (reads the original Excel, builds a normalized fact table, and returns its scale). It also distinguishes itself from sibling tools with the explicit not-used example routing to compute_baseline_findings, so an agent can tell it apart even without checking the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Examples' section explicitly states when to use the tool ('원본에 몇 개 과제가 들어와 있나요?' / '누가 안 냈나요?') and explicitly states when not to use it ('판정 5종이 필요할 때 → compute_baseline_findings'). This gives clear usage guidance and a named alternative, satisfying the highest bar for this dimension.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_approved_verificationA
Idempotent

사용자가 승인한 검증 결과를 파일로 저장합니다. 유일한 쓰기 도구입니다.

사용자가 명시적으로 승인한 뒤에만 호출하십시오. 승인 없이 호출하지 마십시오.

저장하는 것은 지적 기록입니다. 보고서를 고치지 않습니다. 그래서 error 가 있다는 이유만으로 저장을 막지는 않습니다 — 오히려 error 가 있을 때 기록이 가장 필요합니다.

두 경우에만 거부합니다.

  1. 승인토큰이 현재 지적 내용과 맞지 않을 때. 사람이 확인하지 않은 내용이 파일로 남는 것을 막습니다. preview_verification_report 를 다시 호출하십시오.

  2. error 가 있는데 결론을 '통과' 로 적으려 할 때. 그것은 기록이 아니라 거짓입니다. '보류' 또는 '반송' 을 쓰십시오.

Returns: 저장응답: 저장 경로와 기록된 결론.

Examples: - 사용: 사용자가 "보류로 저장해 주세요"라고 승인한 뒤 - 사용하지 않음: 미리보기를 보여 주기 전 / 승인 문구가 없을 때

NameRequiredDescriptionDefault
결론Yes통과 · 보류 · 반송 중 하나. error 가 있으면 '통과' 불가
보고서Yes검증 대상 .docx 파일명 또는 경로
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차2026-W35
승인토큰Yespreview_verification_report 응답의 승인토큰 값
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
infoYes
errorYes
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
결론Yes
warningYes
next_actionsNo이어서 호출하면 좋은 도구 목록
저장경로Yes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description explains that saving writes an intellectual record rather than modifying the report, that errors are not a reason to refuse saving, and that the tool rejects only when the approval token mismatches current findings or when an error is paired with a 'pass' conclusion. This substantially enriches the agent's understanding of the tool's behavior and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but every section earns its place: safety condition, behavioral nuance, explicit rejection rules, return value, and usage examples. Critical approval guidance is front-loaded, and the structure makes the information easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with 6 parameters, annotations, and an output schema, the description covers the critical operational context: when to call, what the token is, what causes rejection, and what the response contains. The optional file/path parameters are sufficiently documented in the schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds valuable context around 승인토큰 and 결론 constraints, but these largely reinforce schema descriptions rather than introducing new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: saving user-approved verification results to a file, and explicitly states this is the only write tool, which distinguishes it from the sibling read/analysis tools. It immediately signals the tool's unique role in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use and when-not-to-use guidance: call only after explicit user approval, never before showing the preview, and never without the approval phrase. It also names preview_verification_report as the source of the approval token and lists the two rejection conditions, providing an agent with concrete gating logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_claimsA
Read-onlyIdempotent

보고서의 값을 원본과 대조합니다. L1(원본에 없음) · L2(원본과 다름).

L1 만으로는 부족합니다. L-18 의 값을 L-19 행에 옮겨 적으면 두 값 다 원본에 존재하므로 L1 은 통과합니다. 과제코드까지 맞춰 보는 L2 만이 잡습니다.

한 번의 실수가 여러 값을 틀리게 만들므로 억제 규칙이 있습니다 — 원본에 없는 과제는 그 행의 다른 값을 대조하지 않고, 미제출 과제의 금주 값은 대조하지 않으며, 파생 값(증감·경과일)은 재료가 이미 지적되면 건너뜁니다. 한 번 잘못 적은 것을 두 건으로 보고하지 않기 위한 것입니다.

반올림(0.5 이내) 차이는 error 가 아니라 warning 입니다.

Returns: 지적응답: L1·L2 지적 목록. 각 지적은 보고서 좌표와 원본 좌표를 갖습니다.

Examples: - 사용: "보고서 숫자가 원본과 맞나요?" - 사용하지 않음: 빠진 항목을 찾으려면 → check_completeness

NameRequiredDescriptionDefault
보고서Yes검증 대상 .docx 파일명 또는 경로
전주차No대조 기준 직전 주차2026-W34
기준주차No검증 대상 주차2026-W35
원본디렉터리No원본 엑셀 디렉터리data/원본

Output Schema

NameRequiredDescription
infoYes
errorYes
stageYes검증 워크플로에서 지금 위치한 단계
statusYes이 호출의 결과 상태
계층Yes이 호출이 검사한 계층
지적Yes
warningYes
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral context beyond that: L2 checks task codes, suppression rules prevent duplicate findings, derived values are skipped when their source is already flagged, and rounding tolerance maps to warning rather than error. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed but every section earns its place: purpose, L1-vs-L2 rationale, suppression rules, rounding policy, return shape, and usage examples. The key purpose is front-loaded and the examples are compact and useful. Length is justified by the tool's non-obvious verification logic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the tool's core evaluation logic, edge cases, suppression behavior, rounding tolerance, and return shape. With an output schema present and full schema coverage, nothing an agent needs to invoke this tool correctly is missing. It handles a moderately complex verification task comprehensively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters with names, defaults, and descriptions. The description adds general context about what 'verification' means and how findings are produced, but it does not add per-parameter meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: '보고서의 값을 원본과 대조합니다' (compares report values against the original), then defines the two finding levels L1 and L2. It distinguishes itself from siblings by explicitly naming check_completeness as the tool for missing items, so an agent can select correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit positive use case ('보고서 숫자가 원본과 맞나요?') and a negative case (missing items → check_completeness). It also documents important behavioral conditions such as suppression rules and when rounding differences become warnings, which helps the agent decide when and how to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedcheck_completeness
    • First observedcompute_baseline_findings
    • First observedextract_report_claims
    • First observedflag_narrative_risks
    • First observedlist_verification_targets
    • First observedpreview_verification_report
    • First observedread_report
    • First observedread_source_data
    • First observedsave_approved_verification
    • First observedverify_claims

TDQS

A4.6/5.0

Scored across 10 tools

Disambiguation5/5

Each tool owns a distinct stage or verification level (L1/L2 vs L3 vs L4), and the descriptions explicitly cross-reference when another tool should be used instead. The aggregate preview tool is clearly positioned as a convenience wrapper over the intermediate tools, so there is no real ambiguity.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern with specific, informative verbs: list, read, compute, extract, verify, check, flag, preview, save. The naming style is uniform and each name accurately predicts the tool's operation.

Tool Count5/5

Ten tools map cleanly onto the stages of the verification pipeline: discover targets, load source, compute expected findings, parse report, extract claims, verify values, check completeness, flag narrative risks, preview, and save. The count is well-scoped and every tool has a clear purpose.

Completeness5/5

The set covers the full verification lifecycle from target discovery through source normalization, report parsing, claim extraction, multi-level checks, all-level preview, and an approval-gated save. There are no obvious dead ends: the only write tool is intentionally gated, and every intermediate tool feeds into the preview/save flow.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables verification of AI coding agent self-reports against git diff truth and a deterministic gate, producing pass/regenerate/reject directives to ensure claimed work matches actual changes.
    6
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Deterministic verification for AI-generated analysis. Reconciliation, consistency and Excel-integrity checks that stop the line when the numbers don't add up.
    1
    MIT