K-Guard MCP
K-Guard MCP is an MCP server that audits local workspaces, APIs, data handling, and operational risk before release.
Full workspace audits:
check_my_appstarts a complete review;continue_reviewpolls until terminal;start_review_before_shipruns the final Guardian gate with business scope and authorization assertions.Static scanning:
scan_workspace,scan_text,scan_diff, andscan_mcp_configdetect secrets, Korean PII, composite PII, config risks, and source/sink flow risks.Safe HTTP probing:
probe_httpruns read-only localhost or explicitly authorized external probes, optionally with deep-active checks and session-file authenticated comparisons.Data-flow analysis:
build_flow_mapcreates an experimental heuristic risk map from source and sink patterns.MCP runtime observation:
observe_mcp_events,observe_mcp_event, andenforce_mcp_eventsinspect JSONL/JSON event streams for PII, hidden instructions, and agentic/external flow, returning block/redact policy decisions.Validation and qualification tools:
score_fixture_corpus,validate_multilang_pack,deep_analyzer_audit,software_composition_audit,validate_policy_controls, andvalidate_streamable_http_runtimeverify detector accuracy, language packs, Semgrep coverage, dependency security, and proxy controls.Guardian release gate:
guardian_auditruns four-domain korean_senior reviews over manifests, with fail-on severities, coverage-gap accounting, and drift detection.Field benchmarking and campaign management:
create_benchmark_template,field_benchmark,create_field_campaign_template, andfield_campaign_statussupport cohort benchmarks and app rosters.Strict data-release gating:
data_release_gaterevalidates Guardian reports, field-validation CSVs, preregistration, Korean corpus evidence, and MCP interceptor streams.Explanations and remediation:
explain_ruleandsuggest_fixprovide rule details and dry-run fix recipes.Quick security gates:
security_gateruns a workspace-only gate; it is simpler than Guardian but fails closed on control errors.
Provides read-only auditing and sampling of local SQLite databases, including query-only access control, RBAC checks, path containment, and row/cell/result/time budgets.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@K-Guard MCPcheck_my_app으로 전체 검수하고 continue_review로 완료까지 실행해서 출하 판정 내려줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
K-Guard MCP
Senior Glasses · Vibe-coding Senior
We don't break the flow of building, and we don't gloss over shipping.
K-Guard MCP is a local-first MCP auditor that reviews site, API exposure, data management, and operational risk together before shipping vibe-coding output. Guardian distinguishes between what is fine and what has not been seen yet, and returns a ship / fix and ship / insufficient review scope verdict along with next actions in Korean.
K-Guard is not a guarantee that replaces human business judgment or legal review. It automates the questions a senior developer asks before shipping and a fail-closed gate.
5-minute install · Installation and design validation · Usage guide · GitHub publication guide · Required qualification · Product north star · Full dogfood verdict · 2026 contest submission prep
First 5 minutes: current source checkout
We do not yet assume public package index distribution. On first run, install the current source from the repository root and follow the next actions shown by the Senior Glasses.
python -m pip install .
k-guard install --client auto --profile local-dev --workspace .
k-guard doctor --client autoauto finds installed Grok, Codex, and Antigravity, merges the k-guard MCP into the user scope, and prepares a local profile for ChatGPT if the OpenAI tunnel-client is present. --workspace . pins the current project as a private binding. After that, even if the MCP starts from a different working directory, it inspects this project and rejects paths outside the boundary as high HOLD. For ChatGPT doctor/run, a CONTROL_PLANE_API_KEY with Tunnels Read + Use permission is also required in the current shell. Since ChatGPT still has tunnel-client run and developer-mode app connection remaining, the installer does not dress this up as a success and returns partial connection · next steps required. Existing settings are preserved, backups are made before JSON changes, and operator evidence keys and workspace originals are stored only in user-private files under ~/.k-guard. local-dev enables only localhost read-only probes and a small fixed deep path, keeping external and session probes off. If you only need static scanning, use --profile workspace.
The default output of install and diagnostics is three stages: connection ready → AI client → next actions. Automation uses install --json and doctor --json. For contest judging, release reproduction, and code fixes, use the judging and reproduction verification path in the 5-minute install to install build and evidence locks with --require-hashes. Semgrep 1.174.0 and pip-audit 2.10.1 are also installed with their full hash closures from requirements-semgrep.lock and requirements-pip-audit.lock into isolated venvs, so the audited runtime is not modified.
From the MCP client:
안경선배로 이 앱을 끝까지 봐줘. check_my_app으로 전체 검수를 시작하고,
continue_review를 state=completed 또는 failed가 될 때까지 반복해줘.
완료 전에는 통과라고 말하지 마. 코드를 고쳤다면 check_my_app을 다시 완료해줘.
출하 전에는 실제 사업 목적과 범위를 확인한 뒤 최신 review_id로
start_review_before_ship을 실행하고 다시 continue_review로 Guardian 완료까지 기다려줘.
experience.presentation 순서대로 판정, 이유, 다음 행동 3개만 먼저 말해줘.check_my_app is not a quick 5-second scan; it is a tool that accepts a full workspace audit. The first response is review_in_progress, and no ship verdict is issued until continue_review completes. Deployable text artifacts in dist, build, and .next are also inspected, and if the candidate count, path SHA-256, and read completion do not match, it blocks at high. The completion result produces a review_receipt bound to the workspace and source tree SHA-256. If the code changes, you cannot start a ship review with an old review_id; you must complete check_my_app again.
Related MCP server: Secure Code Review MCP Server
Senior Glasses verdicts
Code | Meaning | Next action |
| Shippable within the configured scope and high criteria | Keep the report and evidence for the same commit |
| Blocking finding exists | Run |
| Insufficient dynamic scan, flow, purpose, and scope evidence | Fill in the missing review areas first |
| Insufficient single-app binding and operator signature evidence | Re-run with the same |
| Insufficient deep, SCA, runtime, DB, and field qualification evidence for the audit tool itself, independent of app risk | Check |
| Generate a review-only report | Run a ship verdict with |
All representative results provide experience.details.presentation as a compatible alias of experience.presentation, with the order fixed as verdict → why → next_actions → details. Guardian shows app risk separately as application_assurance and the audit tool's own validation status as auditor_qualification. experience.verdict_code, experience.verdict_message, and experience.summary are existing report-compatible fields.
What it looks at
K-Guard combines:
Static scan: Korean PII, composite PII, Korean organization identifiers (business registration number checksum syntax validation; corporate registration number historical Annex checksum or post-2025-01-31 4+2+7 explicit-context/syntax recognition, not live registry validation), secrets
Config scan: CORS/debug/source map/env prefix risks
Senior app-risk scan: direct request-to-SQL/command/file/URL/HTML sinks, mass assignment, open redirect, browser token storage, weak cookies, plaintext password comparison, and JWT decode-without-verify
Korean data-governance scan: unique/sensitive field declarations, encryption/access-control evidence, access logging, external processor review, retention, and erasure
MCP-native threat scan: hidden instructions, tool poisoning, exfiltration intent, and overbroad local access across direct text plus bounded Unicode/confusable, escaped/percent/HTML, Base64, split-fragment, and three-line rolling normalization
Structured MCP config review: shell wrappers, mutable package launchers, plain remote HTTP, fixed credentials, unsafe links/read failures, and fail-closed discovery bounds across project/Codex/Grok/Antigravity config candidates
YARA-lite local rule pack: prompt-injection markers, exfil command markers, Korean bulk schema hints
Safe dynamic probe: localhost HTTP checks, explicitly authorized external-origin checks, optional bounded deep exposure checks, plus optional user-provided read-only session headers
Data Flow Risk Map: heuristic graph plus Python AST and lightweight JS/TS source -> sink taint analysis, including unique-import Python helper parameter-to-sink summaries and limited JS/TS route-to-service IDOR summaries
MCP runtime observer/interceptor: JSON/JSONL and stream-ready event checks for hidden instruction, PII-to-agentic/external sink flow, plus batch block/redact enforcement for forwarded event streams
Semgrep deep adapter: offline 40-rule profile, exact scanned-target proof, pinned
1.174.0identity, source snapshot binding, and fail-closed JS/TS/Python/Java/Kotlin/Go/PHP/Ruby/C# findingsNine-language validation pack: Python/JavaScript/TypeScript/Java/Kotlin/Go/PHP/Ruby/C# 90 pinned vulnerable/clean cases, TP/FN/FP/TN scoring, and exact two-run fingerprint reproduction
Software composition analysis: bounded Python/npm/Go manifest and lock coverage with
pip-audit,npm audit, andgovulncheck; partial engine, lock, output, or source-drift failure blocks releaseStreamable HTTP MCP proxy: POST/GET SSE/DELETE complete mediation, principal-bound lifecycle, default-deny JIT/JEA grants, filtered tool inventory, bounded streams, and HMAC-chained raw-free audit logs
Database controls: SQLGlot AST allowlist, role/database/schema/table/column RBAC, EXPLAIN-before-read, SQLite query-only authorizer, path containment, and row/cell/result/time budgets
Read-only connectors: local SQLite, log, JSON/CSV/TSV storage sampling without raw value storage; connector gaps become high findings
Retention/deletion review: flags missing retention/deletion markers when personal-data signals exist
Cross-plane verdicts: correlates Korean PII findings with LLM/MCP/external/data-at-rest sink evidence
FP/FN scoreboard: fixture corpus recall and false-positive rate. FPR uses
measurable_negative_countas denominator (clean negatives with noexpected_absent);negative_countis all declared negatives andtargeted_absence_case_countcovers selected-rule absences that do not enter the FPR denominator. A zero measurable-negative denominator is reported as FPR 0.0.SARIF/CI output: fail builds on configured severities
korean_seniorGuardian profile: fail-closed four-domain contract for site security, API exposure, data management, and operational riskPrimary MCP tools:
check_my_app,continue_review,start_review_before_ship; internal canonical engine: Guardian high; guided prompt:guided_reviewAdvanced MCP tools:
scan_workspace,deep_analyzer_audit,validate_multilang_pack,software_composition_audit,validate_policy_controls,validate_streamable_http_runtime,scan_text,scan_diff,scan_mcp_config,probe_http,build_flow_map,observe_mcp_events,enforce_mcp_events,observe_mcp_event,score_fixture_corpus,data_release_gate,create_field_campaign_template,field_campaign_status,create_guardian_manifest_template,guardian_audit,explain_rule,suggest_fix,security_gate
Installation boundary
Users who receive requirements-evidence.lock distributed with the exact wheel built by the release workflow can reproduce the audited dependency closure without the repository, as shown below. k-guard, k-guard-dashboard, k-guard-mcp, python -m k_guard_mcp.cli, and python -m k_guard_mcp.server are commands from the installed wheel.
The release also includes SHA256SUMS, a SLSA provenance bundle signed with GitHub OIDC, and a CycloneDX SBOM attestation bundle. Online, verify the build subject and digest with gh attestation verify ./k_guard_mcp-0.1.0-py3-none-any.whl -R windmillstudio/k-guard-mcp before installing. If only the checksum matches and the attestation is not verified, it is not treated as an official release artifact.
python -m pip install --require-hashes -r ./requirements-evidence.lock
python -m pip install --no-deps ./k_guard_mcp-0.1.0-py3-none-any.whl
k-guard --help
k-guard install --client auto --profile local-dev --workspace .
k-guard doctor --client autoOn managed PCs where Windows application control policies block the k-guard.exe console launcher from pip, use the module entry point from the same wheel. The functionality and verdict contract are identical.
python -m k_guard_mcp.cli --help
python -m k_guard_mcp.cli install --client auto --profile local-dev --workspace .
python -m k_guard_mcp.cli doctor --client autoInstalling only the wheel provides runtime commands only. The release sdist and repository checkout include scripts/..., tests/fixtures/..., and validation templates. For development environments, install both locks with --require-hashes from the repository root, then run python -m pip install --no-build-isolation --no-deps -e .. The evidence lock pins both the versions of the release dependency closure and the allowed SHA-256 hashes, and the license, vulnerability, SBOM, and fresh-wheel smoke checks all use the same file.
Senior Glasses review room
To view the authorized site on screen, run the local dashboard.
k-guard-dashboard --port 8765Open http://127.0.0.1:8765/ in your browser. The screen order is senior verdict → findings → scan log → exposure map, and final ship authority lies not with the screen but only with the MCP's start_review_before_ship. Brand images are original assets created for the project, and provenance is recorded in docs/brand-assets.md.
Installed wheel CLI
Among the commands below, tests/fixtures/korean_fixture_corpus.json is a public example corpus that can be run directly from a source checkout. Users who installed only the wheel should replace it with their own fixture path using the same schema.
python -m k_guard_mcp.cli scan .
python -m k_guard_mcp.cli scan . --json report.json --markdown report.md
python -m k_guard_mcp.cli scan . --sarif k-guard.sarif --fail-on high
python -m k_guard_mcp.cli probe http://localhost:3000
python -m k_guard_mcp.cli probe http://localhost:3000 --deep-active
python -m k_guard_mcp.cli probe http://localhost:3000 --session-file session.headers.json --json
python -m k_guard_mcp.cli probe https://staging.example.com --allow-external --authorization-note "owned staging domain" --json
python -m k_guard_mcp.cli flow . --svg flow.svg --html flow.html
python -m k_guard_mcp.cli observe-mcp --events mcp-events.jsonl --json
python -m k_guard_mcp.cli mcp-proxy --report mcp-proxy-report.json --response-timeout 30 -- python -m your_upstream_mcp_server
python -m k_guard_mcp.cli mcp-http-proxy --upstream http://127.0.0.1:9000/mcp --port 8765 --report mcp-http-proxy.json --receipt-log mcp-http-proxy.receipts.jsonl
python -m k_guard_mcp.cli deep-analyze . --output deep-analyzer.json
python -m k_guard_mcp.cli language-validate --output language-validation.json
python -m k_guard_mcp.cli sca . --output sca.json
python -m k_guard_mcp.cli control-validate --output control-validation.json
python -m k_guard_mcp.cli runtime-validate --output runtime-validation.json
python -m k_guard_mcp.cli access-policy-template --output access-policy.json
python -m k_guard_mcp.cli agent-grant --policy access-policy.json --output agent.jwt --app-id APP --session-id SESSION --purpose RELEASE_REVIEW --subject AGENT --role release-reviewer --method tools/list --method tools/call --tool check_my_app --tool start_review_before_ship
python -m k_guard_mcp.cli score-corpus --corpus tests/fixtures/korean_fixture_corpus.json --output fixture-metrics.json --json
python -m k_guard_mcp.cli benchmark-template --output benchmarks/field-benchmark-template.csv
python -m k_guard_mcp.cli benchmark --manifest benchmarks/field-benchmark-template.csv --output field-benchmark.json --markdown field-benchmark.md --html field-benchmark.html
python -m k_guard_mcp.cli guardian-template --output benchmarks/guardian-targets.csv
python -m k_guard_mcp.cli suppression-template --output .k-guard/suppressions.csv
python -m k_guard_mcp.cli field-campaign-template --output benchmarks/field-app-roster.csv
python -m k_guard_mcp.cli field-campaign-status --roster benchmarks/field-app-roster.csv --output field-campaign-status.json
python -m k_guard_mcp.cli field-validation-template --ground-truth-output benchmarks/field-ground-truth.csv --review-output benchmarks/field-review.csv
python -m k_guard_mcp.cli field-validation-sign --ground-truth benchmarks/field-ground-truth.csv
python -m k_guard_mcp.cli field-validation-preregister --roster benchmarks/field-app-roster.csv --ground-truth benchmarks/field-ground-truth.csv --custodian-id split-custodian-a --output benchmarks/field-preregistration.json
python -m k_guard_mcp.cli guardian --manifest benchmarks/guardian-targets.csv --output guardian-report.json --markdown guardian-report.md --html guardian-report.html
python -m k_guard_mcp.cli guardian --manifest benchmarks/guardian-targets.csv --suppressions .k-guard/suppressions.csv --fail-on high --run-probes --run-sca --language-validation-report language-validation.json --mcp-http-proxy-report runtime-validation.json --control-validation-report control-validation.json --field-validation-report field-validation.json --output guardian-gate.json
python -m k_guard_mcp.cli field-validation-queue --guardian-report guardian-gate.json --output benchmarks/field-review.csv
python -m k_guard_mcp.cli field-validation-sign --review benchmarks/field-review.csv
python -m k_guard_mcp.cli field-validation-report --guardian-report guardian-gate.json --repeat-guardian-report guardian-gate-repeat.json --roster benchmarks/field-app-roster.csv --ground-truth benchmarks/field-ground-truth.csv --review benchmarks/field-review.csv --preregistration benchmarks/field-preregistration.json --profile field --output field-validation.json
python -m k_guard_mcp.cli mcp-intercept --events mcp-events.jsonl --forwarded-output forwarded.jsonl --report intercept-report.json --app-id YOUR_APP_ID --session-id RELEASE_SESSION_ID --guardian-report guardian-gate.json --fail-on-block
python -m k_guard_mcp.cli data-release-gate --guardian-report guardian-gate.json --guardian-manifest .k-guard/guardian-targets.csv --validation-source-guardian-report validation-source-guardian.json --validation-repeat-guardian-report validation-source-guardian-repeat.json --validation-report field-validation.json --validation-review benchmarks/field-review.csv --validation-ground-truth benchmarks/field-ground-truth.csv --validation-preregistration benchmarks/field-preregistration.json --validation-roster benchmarks/field-app-roster.csv --korean-fixture-corpus tests/fixtures/korean_fixture_corpus.json --korean-corpus-report fixture-metrics.json --mcp-intercept-report intercept-report.json --mcp-forwarded-output forwarded.jsonl --output data-release-gate.jsonsession.headers.json is short-lived and bound to one exact origin. Guardian only counts an authenticated comparison as complete when the asserted identity response also matches:
{
"origin": "http://localhost:3000",
"expires_at": "2026-07-14T12:30:00+09:00",
"headers": {"Cookie": "session=<local-test-session>"},
"identity_assertion": {
"path": "/api/me",
"expected_status": 200,
"expected_body_sha256": "<64 lowercase hex characters>"
}
}Keep the file inside the invoked workspace, or beside the Guardian manifest. Files outside that boundary, links, expired sessions, mismatched origins, unsupported headers, and oversized files fail closed. The digest covers the exact bounded response bytes before UTF-8 decoding; raw session values and response bodies are not written to findings.
Source-checkout-only validation
The scripts/** and pytest below are not user commands included in the wheel.
python -m pytest -q
python scripts/site_scale_calibration.py
python scripts/deep_probe_synthetic_calibration.py --targets 500 --output tmp/deep-probe-synthetic-500.json --markdown tmp/deep-probe-synthetic-500.md --html tmp/deep-probe-synthetic-500.html
python scripts/inner_core_product_gate.py --targets 500 --output tmp/inner-core-product-gate-500.json --markdown tmp/inner-core-product-gate-500.md --html tmp/inner-core-product-gate-500.html
python scripts/mcp_evasion_calibration.py --output evidence/regression/mcp-evasion-normalization.json
python examples/contest-demo/v1/demo.py run
python scripts/contest_readiness.py --output contest-readiness-report.json --markdown contest-readiness-report.md
python scripts/build_top_domain_manifest.py --output datasets/tranco-passive-homepage-10k.csv --limit 10000
python scripts/passive_homepage_calibration.py --targets datasets/tranco-passive-homepage-10k.csv --output reports/passive-homepage-10k-summary.json --checkpoint-jsonl reports/passive-homepage-10k-checkpoint.jsonl --max-targets 10000 --delay-ms 500The Coverage gate 90.00% for the full source regression is branch-inclusive combined coverage that counts statement and branch opportunity together. It does not mean branches alone are at 90%, and since it uses precision=2 and fail_under=90, 89.90% fails. The public_source_only scope in public repository CI excludes separate distribution evidence and native cases, so it applies the overall 88% and redaction.py 85% thresholds; the two figures are not interchangeable.
Source checkout release hygiene
Use the release hygiene check before CTO review or publish prep:
python scripts/release_hygiene.py --jsonDefault mode validates that a dirty release-candidate worktree is classified, free of visible runtime scratch output, and free of unresolved review-required artifacts. Use --strict-clean after the intended release commit; strict mode also compares every package build input byte with its Git index blob. Tagged publication additionally requires --expected-tag v{project.version}, and that exact tag must resolve to the checked-out HEAD commit. The release workflow waits for the reusable Windows/macOS/Linux CI matrix, creates attestations, and publishes the tag artifacts as a GitHub Release. Details are in docs/release-hygiene.md.
The Guardian Actions template currently installs the exact K-Guard source checkout selected by the workflow commit; it does not assume a PyPI package. Before copying it to another repository, vendor K-Guard at a commit-pinned path and set K_GUARD_SOURCE_PATH. After release artifacts exist, consumers should pin either an exact wheel plus its published SHA-256, or a full 40-character Git commit in a direct-reference requirement. Replace the placeholders only with an actual release location:
k-guard-mcp @ https://<artifact-host>/<exact-wheel>.whl#sha256=<published-sha256>
k-guard-mcp @ git+https://<repository-url>.git@<40-character-commit>K-Guard's primary license is MIT. Apache-2.0 upstream attribution, reviewed revisions, modified-file mapping, and excluded license boundaries are recorded in THIRD_PARTY_NOTICES.md and docs/upstream-adoption.md.
MCP
python -m pip install --require-hashes -r requirements-build.lock
python -m pip install --require-hashes -r requirements-evidence.lock
python -m pip install --no-build-isolation --no-deps .
k-guard-mcpMCP probe_http is disabled by default. Enable it only for trusted audit sessions:
K_GUARD_MCP_ENABLE_PROBE=1 python -m k_guard_mcp.serverAuthenticated read-only probing through MCP also requires K_GUARD_MCP_ENABLE_SESSION_PROBE=1 and a short-lived, origin-bound local session_file. Header values are read locally and are not written to findings. A header alone never proves login: Guardian requires the optional identity_assertion to match before authenticated comparison coverage can pass.
Bounded deep active probing through MCP also requires K_GUARD_MCP_ENABLE_DEEP_ACTIVE_PROBE=1 and probe_http(..., deep_active=true). This mode checks a small fixed list of exposed env/git/backup/debug paths and still avoids login attempts, mutations, fuzzing, and exploit payloads.
Authorized external probing through MCP also requires K_GUARD_MCP_ENABLE_EXTERNAL_PROBE=1 plus either K_GUARD_MCP_EXTERNAL_ALLOWED_HOSTS=example.com,staging.example.com or a per-call external_authorized=true with an authorization_note. The report records the authorization basis with DYN_EXTERNAL_TARGET_AUTHORIZATION_AUDIT.
Installation and connection are tailored to four clients: ChatGPT, Grok, Codex, and Antigravity. Detailed procedures are in docs/quickstart-ko.md and docs/mcp-client-install.md.
When preparing the contest result report and actual compatibility evidence, use docs/contest-2026-result-report-draft-ko.md and docs/client-interop-evidence-kit-ko.md. Actual compatibility completion is counted only for scopes that have all of the per-client install → restart → tool list → check_my_app → reconnect recording, unique SHA-256, and separate review.
MCP calls also enforce argument and inline-text budgets by default:
K_GUARD_MCP_MAX_FILES=1000K_GUARD_MCP_MAX_MB=10K_GUARD_MCP_MAX_TEXT_MB=1K_GUARD_MCP_MAX_ARG_CHARS=4096K_GUARD_MCP_GUARDIAN_MAX_TARGETS=100K_GUARD_MCP_GUARDIAN_MAX_REQUESTS=200
Guardian MCP calls preflight the whole manifest against the target, filtered-file, byte, and projected HTTP-request budgets. File expansion is bounded at the configured limit plus one detection entry, so an oversized tree is rejected without first enumerating the entire tree. Oversized multi-target work returns a Guardian-shaped fail-closed report; use the CLI or split the manifest for intentionally larger batches. Dynamic HTTP inspection reads at most 1 MiB per response by default and also stops at 16 MiB, 80 requests, or 30 seconds per probe run.
Safety Defaults
JSON/Markdown/MCP outputs pass through a central redaction layer
SARIF output also passes through the same redaction layer and stores raw-free evidence
Dynamic probe only allows
localhost,127.0.0.1, and::1by defaultExternal dynamic probe requires explicit authorization evidence and opt-in, then remains fixed-path, read-only, same-origin, and no-redirect. Each request resolves only allowlisted public addresses and connects to the selected validated IP while preserving the original HTTP Host/TLS SNI.
Dynamic probe does not follow redirects to non-allowlisted hosts
Dynamic probe uses non-destructive HTTP methods only
--deep-activeis a bounded authorized check for common exposed.env,.git/config, backup/dump, and debug/runtime paths. It is not recursive crawling, password guessing, exploit payloading, or a path brute-force dictionary.Dynamic probe uses a timeout and caps sampled response bodies
External secret validity checks are not performed
Severity and Confidence
Severity values are validated centrally:
critical: credential/private-key/DB URL exposure, direct high-risk identifiers, or unauthenticated sensitive routeshigh: strongly identifying combinations, risky localhost exposure, or sensitive flow candidatesmedium: standalone contact/location/config signals and hardening findingslow: weak heuristic signalsinfo: informational observations
Confidence values are high, medium, and low.
Data Flow And Inner-Core Limits
The flow map is explicitly EXPERIMENTAL and marked as heuristic+ast-taint+js-ts-taint with line-distance+python-intra-procedural-ast+js-ts-intra-file+limited-interprocedural-taint precision.
It is a developer triage aid: Python AST taint is supported, and JS/TS now has lightweight intra-file taint, limited route-to-service summaries, plus framework-aware heuristics for Next.js route handlers/server actions, Express IDOR-shaped route params, Supabase service-role/RLS boundary hints, and Firebase Admin auth-boundary hints. Full TypeScript type checking, alias-complete import resolution, middleware proof, deployed RLS/Firebase rule proof, and complete inter-procedural taint remain roadmap items.
Flow findings include raw-free source/sink line hashes to make evidence reproducible without echoing sensitive values.
Flow visualizations are generated as local SVG/HTML without external JavaScript or CDN dependencies. The same redaction layer protects JSON, Markdown, SVG, HTML, and MCP responses.
Runtime MCP observation ingests JSONL/JSON event exports through observe_mcp_events and can also evaluate one event at a time through observe_mcp_event(session_id=...). CLI mcp-intercept applies those block and redact decisions to a batch event stream before writing forwarded JSONL. CLI mcp-proxy -- <upstream argv> is the live enforcement path for line-delimited stdio JSON-RPC. CLI mcp-http-proxy --upstream <URL> enforces the same policy across Streamable HTTP POST, GET SSE, and DELETE session lifecycles, with official Python MCP SDK interoperability coverage. Both proxies emit the same raw-free, transaction-linked HMAC receipt chain for access deny and content allow/redact/block decisions; configured sidecar persistence happens before forwarding and fails closed. Operator-secret verification is required for tamper-resistance claims because HMAC is a shared-secret tag, not a public-key signature. Both proxies fail closed on invalid framing, correlation errors, size or timeout limits, and transport control failures. Streaming observer state has bounded idle/LRU session retention. MCP enforce_mcp_events remains report-only. Binary framing, nonstandard transports, and a universal drop-in proxy for every MCP client remain roadmap work.
Read-only connectors inspect local SQLite/log/storage files only. Remote Postgres/Supabase/Firebase/S3, backups, and actual deletion execution are roadmap items.
Feedback Drift Loop
k-guard feedback --type fn --rule PII_PHONE --text "missed sample" --output feedback.jsonl
k-guard feedback-export --input feedback.jsonl --output feedback-summary.json --reviewedFeedback files are sanitized before write and summarized locally for corpus tuning. False-negative snippets use extra conservative token masking because the detector may have missed the sensitive value.
feedback-export requires --reviewed or K_GUARD_FEEDBACK_EXPORT_REVIEWED=1 so accidental automated exports fail closed. Review feedback-summary.json before sharing it outside the partner environment; do not transmit raw feedback.jsonl.
Field Benchmark
benchmark-template creates a 20/20/10 manifest:
20 general baseline sites or reports
20 vibe-coded suspected sites or reports
10 owned, partner-approved, or bug-bounty scoped targets
benchmark aggregates raw-free K-Guard JSON reports and, only with --run-probes, authorized manifest rows marked mode=probe. It reports high/critical target rate, strong-identifier detection rate, top rules, and manual false-positive rate by cohort. The default path is report-only so benchmark work can start from dashboard exports without touching external sites.
The same workflow is available through MCP as create_benchmark_template and field_benchmark. MCP benchmark probes require the same explicit probe opt-ins as probe_http.
Guardian Mode
guardian-template creates an authorized target manifest for continuous product guarding. A row can point to a local workspace, an HTTP origin, an MCP runtime JSONL export, or an existing raw-free K-Guard JSON report. guardian aggregates all rows into one raw-free report with per-target gates, new/resolved finding drift, top recurring rules, and fix recipes from suggest_fix.
Guardian manifests also carry raw-free business-intent and scope assertion fields: business_purpose, data_classes, user_scope, public_endpoints, scope_basis, and scope_proof_ref. K-Guard does not claim human-level business understanding or prove ownership by itself; it records whether those assertions exist and stores only hashed refs. Scope completion requires an explicit scope_proof_ref; locators and legacy authorization notes are not treated as proof. Data-release gating requires those target-level contracts and verified operator-keyed evidence bundles whose artifact hashes match the current report before treating a report as shipment evidence.
New templates set audit_profile=korean_senior. In this profile a release gate does not pass merely because it found zero blockers. It also requires a substantive workspace with at least one supported and successfully decoded production source file, flow analysis, a completed deep HTTP review, declared endpoint paths that actually return 2xx/3xx/401/403 rather than only 404, and explicit purpose/data/user/scope assertions. Guardian content-hashes each workspace immediately before and after its audit; a mismatch emits GUARDIAN_SOURCE_CHANGED_DURING_AUDIT, blocks the target, and excludes that run from substantive coverage. Use an immutable CI checkout for release authority. The report exposes review_contract.domains for site_security, api_exposure, data_management, and operational_risk; guardian_gate.passed remains false when any required domain is incomplete. Legacy manifests without audit_profile remain on the narrower standard profile and must not be presented as four-domain senior coverage.
public_endpoints is executable review scope, not decorative metadata. Guardian safely adds valid same-origin paths from that field to the fixed GET/OPTIONS probe set (maximum 50; no absolute URL, parent traversal, or templated path). This lets the API review cover app-specific read-only endpoints while keeping the probe bounded.
When an HTTP row includes session_file, Guardian runs the same bounded path set twice: once unauthenticated and once with the operator-provided read-only session. This keeps public exposure checks visible instead of replacing them with an authenticated-only view. The session must prove both an auth-wall transition and the declared identity response digest. A korean_senior gate rejects HTTP coverage when either proof is absent, when a probe produced request or control errors, or when no valid declared endpoint scope was reached.
guardian --fail-on high is the canonical pre-release gate. It is the workflow to use when K-Guard should decide whether a target app can ship under a configured threshold. Workspace-only scan --fail-on and MCP security_gate are quick checks; they do not replace Guardian's manifest, coverage-gap, drift, and multi-target execution contract.
By default, guardian writes a report and exits successfully so teams can review findings without turning it into a release blocker. Use --fail-on high when the same report should act as a CI gate; it exits with code 3 when blocking targets or new blocking findings are present. On the first run without --previous, the report is an initial_snapshot: current blockers and coverage gaps can still fail the gate, but K-Guard does not label every current finding as new drift. In gate mode, HTTP rows in the manifest must actually execute via --run-probes or they become coverage gaps instead of silent passes.
HTTP 행은 --run-probes가 전달되지 않으면 실행되지 않습니다. CLI 경로는 신뢰할 수 있는 로컬 운영자를 위한 것이며 명시적 CLI 플래그/매니페스트 행을 옵트인으로 사용합니다. MCP는 에이전트 매개 방식으로 더 엄격합니다. guardian_audit(..., run_probes=true)는 K_GUARD_MCP_ENABLE_PROBE=1을 요구합니다. 외부, 심층 활성 또는 세션 프로브를 요청하는 매니페스트는 각각 K_GUARD_MCP_ENABLE_EXTERNAL_PROBE=1, K_GUARD_MCP_ENABLE_DEEP_ACTIVE_PROBE=1 또는 K_GUARD_MCP_ENABLE_SESSION_PROBE=1을 추가로 요구합니다. Guardian 모드는 여전히 고정된 안전한 GET/OPTIONS 프로브를 사용하며 로그인 시도, 비밀번호 추측, 변형, 익스플로잇 페이로드, 재귀 크롤링 또는 교차 호스트 리디렉션 추적을 수행하지 않습니다.
MCP 클라이언트는 표준 릴리스 게이트 판정을 위해 guardian_audit에 fail_on="high"를 전달해야 하며, guardian_gate.passed에 결과가 반영됩니다. 프로세스 종료 코드는 여전히 CLI의 관심사입니다. --previous previous-guardian-report.json을 사용하여 보고서를 드리프트 모니터로 전환하십시오. 새 차단 발견 사항은 이전 보고서가 로드된 경우에만 별도로 나열됩니다. 해당 발견 사항이 릴리스를 중지해야 하는 경우 --previous를 --fail-on과 결합하십시오. MCP 제어 검사가 대상 실행 전에 guardian을 중지하면 보고서 모드와 게이트 모드 모두 execution_contract, summary, findings가 포함된 guardian 형태의 응답을 반환합니다. 게이트 모드에는 guardian_gate.passed=false가 추가로 포함됩니다. 보고서에는 건너뛴 대상, 오류가 발생한 대상, 실행된 대상이 한 곳에서 모두 표시되도록 execution_contract 섹션이 포함되며 Markdown 및 HTML 내보내기에도 포함됩니다.
MCP security_gate(path, fail_on)은 빠른 작업 공간 전용 게이트입니다. 이제 잘못된 임계값, 인수 예산, 작업 공간 예산 제한 또는 스캔 예외와 같은 MCP 제어 실패 시 security_gate.passed=false를 반환하지만 의도적으로 coverage_model="workspace_only"를 보고합니다. HTTP 대상, MCP 런타임 내보내기, 이전 보고서 또는 적용 범위 격차 회계가 필요한 릴리스 결정에는 Guardian을 사용하십시오.
억제 정책은 실패 시 폐쇄(fail-closed)입니다. suppression-template은 모든 면제를 app_id, audit_profile, 현재 소스 스냅샷 또는 검토 증거 해시, target_id, 발견 지문, 소유자, 이유 및 향후 만료에 바인딩하는 CSV를 생성합니다. 면제는 다른 앱이나 변경된 릴리스 스냅샷에 재생될 수 없습니다. 잘못되었거나 오래되었거나 만료된 행은 높은 심각도의 정책 발견 사항을 추가합니다. 억제는 Guardian 적용 범위 격차나 MCP 제어 실패 규칙을 지울 수 없습니다. field-validation-queue는 수정된 지문, 탐지기 하위 유형, 아티팩트 범위, 파일/본문/헤더 위치 종류 및 사용 가능한 응답 해시와 함께 모든 높음/치명적 후보를 내보냅니다. 엄격한 field-validation-report --profile field 주장은 12-20개의 소유/파트너 앱, 120개의 레이블이 지정된 사례, 50개의 양성, 40개의 음성, 5개의 치명적 사례, 3개의 계층, 최소 70개의 사례, 35개의 양성, 35개의 음성 및 35개의 후보가 있는 사전 등록된 홀드아웃, 역할 분리된 검토자/관리인 서명, 그리고 정확한 두 번째 표준 Guardian 실행이 모든 고정 임계값을 통과할 때까지 닫힌 상태로 유지됩니다. 전체/홀드아웃 정밀도, 홀드아웃 높음/치명적 재현율 및 홀드아웃 특이도는 점 추정치와 Wilson 95% 하한 모두를 통과해야 합니다. 치명적 홀드아웃 재현율은 정확히 1.0으로 유지됩니다. 모든 후보는 정확히 하나의 고정된 개발/홀드아웃 범위에 바인딩되어야 합니다. 후보의 (false_positive + benign) / (true_positive + false_positive + benign)는 위양성 발견율로 보고되며, 위양성률은 깨끗한 사례에 대해서만 FP / (FP + TN)로 계산됩니다. 데이터 릴리스 게이트는 더 엄격합니다. 알려진 위음성 또는 양성 높음/치명적 후보가 있으면 릴리스를 차단합니다. K_GUARD_FIELD_REVIEWER_HMAC_KEYS와 K_GUARD_FIELD_CUSTODIAN_HMAC_KEY는 운영자 증거 키와 구별되어야 합니다. 이러한 로컬 HMAC는 역할을 분리하지만 실제 신원이나 암호학적으로 독립적인 실행을 증명하지는 않습니다. 레거시 validation-* 명령은 후보 레이블만 집계하며 필드 재현율을 설정할 수 없습니다.
공개 자동 차단 자격 계약은 필드 검증과 별개입니다. release_blocker_actionability_v3는 최소 100개의 자동 차단기, 0.90 후보 실행 가능성 및 0.80 Wilson 95% 하한의 사전 등록된 인구 조사를 요구합니다. 또한 최소 20개 애플리케이션에 자동 차단기가 필요합니다. 애플리케이션의 모든 자동 차단기가 true_positive로 레이블이 지정된 경우에만 완전히 실행 가능한 것으로 간주됩니다. 완전 실행 가능한 애플리케이션 비율과 Wilson 하한 모두 0.90 및 0.80을 통과해야 합니다. 이 앱 수준 민감도 게이트는 한 저장소의 수십 개의 상관된 줄이 잘못된 통계적 신뢰를 생성하는 것을 방지합니다. 수동 검토 및 정책 무결성 보류는 여전히 실패 시 폐쇄이지만 자동 차단 실행 가능성에서 제외됩니다.
완전한 증거 계층, 첫 번째 기준선, 레이블 지정 및 반복 실행 계약은 docs/field-validation-v2-ko.md에 문서화되어 있습니다.
data-release-gate는 더 엄격합니다. K_GUARD_EVIDENCE_HMAC_KEY, 원본 Guardian 매니페스트, 현재 보고서에 바인딩된 표준 high Guardian 주장, 대상 증거 및 소스 스냅샷, 별도로 서명된 1차 및 반복 검증 소스 Guardian 원본, 정확한 ground-truth/검토자 CSV, 원본 관리인 사전 등록, 한국어 말뭉치 증거 및 실제 MCP 인터셉터 전달 스트림을 요구합니다. 이러한 원본에서 필드 검증을 다시 실행하고 검토자/관리인 HMAC를 다시 검증하며 재계산된 프로젝션이 제출된 보고서와 같아야 합니다. 또한 반복 Guardian을 다시 열고 콘텐츠, 번들, 실행 증명, 툴체인, 매니페스트, 소스/HTTP/MCP 입력 및 정확한 후보 멀티셋을 독립적으로 확인합니다. 디자인 파트너 검증은 현재 릴리스 중인 단일 앱과 의도적으로 독립적입니다. 해당 후보 앱/대상/발견 참조는 검증 소스 Guardian 보고서와 일치해야 하며 릴리스 앱 적용 범위로 가장해서는 안 됩니다. 재사용 가능한 GitHub Actions 템플릿은 docs/templates/github-actions/guardian-release-gate.yml에 있습니다.
인증되지 않은 JSON은 위험도에 따라 분할됩니다. 민감한/개인 기록 구조는 높은 심각도로 DYN_UNAUTH_API_JSON으로 유지됩니다. 해당 표시기가 없는 JSON은 정보 심각도로 DYN_PUBLIC_API_JSON_REVIEW가 되어 의도적인 공개 API가 JSON을 반환한다는 이유만으로 릴리스를 차단하지 않습니다.
scripts/site_scale_calibration.py는 대규모 일반 HTML 노이즈, 중간 규모 공개 연락처 페이지, 소규모 vibe-coded 대량 JSON, 유효한 강력한 식별자 및 은행 계좌 JSON에 대한 로컬 블랙박스 HTTP 픽스처를 실행합니다. 외부 네트워크 액세스를 사용하지 않습니다.
scripts/deep_probe_synthetic_calibration.py는 동일한 대시보드 scan_url(..., deep_active=True) 경로를 통해 로컬 합성 루프백 보정 하네스를 실행합니다. 기본 증거 실행은 24개의 제한된 시나리오에 대해 500회의 루프백 호출을 사용합니다. 이는 500개의 실제 웹사이트가 아니며 취약점 발견도, 침투 테스트도 아닙니다. .env, .git/config, 백업 SQL, 디버그 엔드포인트, 관리자/API 노출, OpenAPI, 소스 맵, CORS, 리디렉션, PII/비밀 응답 계층 및 로그인 벽, SPA 셸, HTML 폴백에 대한 위양성 제어를 다룹니다. 또한 예상 대 관찰 점수자가 주입된 누락 및 예기치 않은 규칙을 감지할 수 있음을 증명하는 음성 제어도 포함합니다. 외부 네트워크 액세스를 사용하지 않습니다. 실제 외부 심층 프로브에는 여전히 명시적 대상 권한이 필요합니다.
scripts/inner_core_product_gate.py는 "내부 코어" 감사 주장에 대한 더 넓은 로컬 합성 제품 게이트를 실행합니다. 500개 대상 루프백 심층 프로브 보정을 정적 코드/구성/MCP 텍스트 검사, Python AST 오염, MCP 런타임 JSONL 관찰, 읽기 전용 SQLite/로그/스토리지 커넥터, 보존/삭제 검토, 교차 평면 PII-to-에이전트/외부 판정 및 원시 없는 증거 그래프 검사와 결합합니다. 이 게이트는 필수 규칙 누락이 0이어야 하고, 예기치 않은 심층 프로브 규칙이 0이어야 하며, 음성 제어를 통과하고, 비어 있지 않은 흐름 그래프 노드/엣지가 있어야 하며, 직렬화된 보고서에 금지된 원시 마커가 없어야 합니다. 이는 제품 깊이 게이트이지 타사 사이트 취약점 발견의 증거가 아닙니다.
CI 워크플로는 푸시/풀 리퀘스트 시 전체 pytest 스위트와 24개 대상 내부 코어 게이트를 실행하여 모든 합성 시나리오를 한 번씩 다룹니다. 예약/수동 감사 워크플로는 500개 대상 내부 코어 게이트를 실행하고 JSON/Markdown/HTML 증거 팩을 업로드합니다. 저장소 자체 SARIF 스캔은 게이트가 아닌 증거로 업로드됩니다. 이 스캐너 저장소에는 의도적으로 K-Guard 발견 사항을 트리거해야 하는 탐지기 규칙, 픽스처 및 문서 예제가 포함되어 있기 때문입니다. 프로젝트별 기준선이 없는 한 K-Guard 자체의 픽스처가 많은 소스 트리가 아닌 감사 대상 제품에 대해 --fail-on을 사용하십시오.
scripts/passive_homepage_calibration.py는 CSV 매니페스트에서 GET / 전용 홈페이지 보정을 실행합니다. 10k 규모 분할 실행을 위해 --max-targets, --delay-ms, --checkpoint-jsonl 및 --resume을 지원합니다. 코호트, 순위 버킷, 결과 및 위생 계층 집계(예: well_managed_quiet, hardening_gap, boundary_redirect, messy_or_risky_signal)를 보고하므로 노이즈가 많은 잘 관리된 사이트와 지저분한 롱테일 사이트를 별도로 보정할 수 있습니다. 또한 측정 수율, 높음/치명적 비율, 강력한 식별자 비율 및 경계 리디렉션 비율에 대한 통과/경고/실패 검사가 포함된 release_gate를 내보냅니다. /admin, /api, .env, .git, OPTIONS 또는 재귀 경로를 요청하지 않습니다.
scripts/build_top_domain_manifest.py는 공개 상위 도메인 CSV 또는 ZIP 소스에서 해당 수동 보정 매니페스트를 자동으로 생성합니다. 기본 소스는 Tranco의 최신 top-1m ZIP이므로 운영자가 10,000개의 URL을 수동으로 수집할 필요가 없습니다. --start-rank를 사용하여 롱테일 지저분한 후보 코호트를 구축하십시오(예: 900,001~910,000위). Majestic Million 스타일 CSV도 --source-url로 제공할 수 있습니다.
AI 전용 콘테스트 RC 증거
콘테스트 RC는 단일 통합 정확도 숫자를 게시하는 대신 개발 증거를 별도 레인으로 유지합니다.
python scripts/qualify_korean_privacy_ai_only.py --output evidence/qualification/korean-privacy-ai-only-v1.json
python scripts/ai_public_benchmark_scorecard.py --output evidence/qualification/ai-public-benchmark-scorecard-v1.json
python scripts/benchmark.py --profile contest --output benchmark-report.json한국어 자격 보고서는 117개의 픽스처 사례와 동결된 68개 평가자 작성 홀드아웃을 별도 레인으로 보고합니다. 또한 5개의 작업 공간 계약, 4개의 공식 고유 식별자 개념, 사업자/법인 번호 경계 및 6개의 민감 어휘 표면을 확인합니다. 통합 혼동 행렬을 게시하지 않으며 블라인드, 인간 심의, 레지스트리, 파트너 또는 필드 정확도를 주장하지 않습니다.
공개 스코어카드는 현재 및 과거 레인을 별도로 유지합니다.
--require-integrity-pass는 선택된 과거 아티팩트에 다이제스트 또는 바인딩 불일치가 있는 동안 의도적으로 실패합니다. 허용되지 않는 과거 결과가 자동으로 다시 쓰여지거나 삭제되는 대신 표시되도록 보고서를 계속 생성할 수 있습니다.콘테스트 성능 프로필은 공개된 단일 호스트에서 정확한 합성 전부 양성 저신호 말뭉치를 측정합니다. 새 프로세스 콜드 및 지속 스캐너 웜 대기 시간, 10/50/100 MiB 확장, 프로세스 내 CPython 스레드 동시성 1/4/8, 최대 RSS, 완전한 후보 적용 범위 및 원시 없는 결과 불변성을 포함합니다. 발견 밀도 확장, 프로세스 수준 병렬 처리, 프로덕션 SLO, 필드 정확도, 하드웨어 정규화 비교 또는 타사 우월성을 측정하지 않습니다.
현재 한계
Product hardening roadmap: docs/pre-release-auditor-hardening-plan-ko.md
PDF/DOCX/HWP extraction is not included yet
Dynamic checks are localhost-only unless explicitly allowlisted or attested by the operator for an owned, partner-approved, or bug-bounty scoped external target
User-provided session headers are attached only to read-only GET requests and header values are not stored
JS/TS taint is conservative and lightweight, with intra-file taint, limited route-to-service summaries, and framework-aware heuristics for common Next.js/Express/Supabase/Firebase boundary mistakes; Python AST taint is intra-procedural
Runtime MCP observation and the MCP
enforce_mcp_eventstool remain advisory;mcp-proxyandmcp-http-proxyperform actual bidirectional enforcement for line-delimited stdio JSON-RPC and the tested Streamable HTTP lifecycle. Binary framing, nonstandard transports, and a universal drop-in proxy for every client remain outside the enforced boundaryRemote DB/storage/backups and actual deletion execution are not verified yet
Korean PII patterns are rule-based and need project-specific false-positive tuning
Korean business registration numbers use checksum syntax validation on synthetic/vendor-authored fixtures. Historical corporate registration numbers (issued before 2025-01-31) may use the old Annex alternating 1,2 weighted checksum. Since 2025-01-31, current corporate numbers are 4 registry + 2 type + 7 serial digits with no checksum, so detection is explicit field-context/syntax recognition only. None of this is natural-person PII, live registry validation, or independent field validation. Context-only current values are unverified syntax/context recognition. Privacy-first ambiguity: a plausible Korean RRN/FRN wins over a corporate or business label, header, or split JSON key, and is never classified or redacted as an organization ID.
The evaluator-authored 68-case Korean sensitive/org holdout (
evidence/holdout/korean-sensitive-org-v1.cjson) is a post-implementation inspection of synthetic oracles, not a blind field-accuracy or registry-validation study. A case passes when everymust_allrule is present, eachmust_anygroup has at least one matching rule, and noforbiddenrule appears (per-case any-rule recall). After this pass the frozen manifest scores 68/68 with recall 1.0, specificity 1.0, and exact two-run repeat. That is not a claim of live field accuracy.
Available Tools
28 toolsbuild_flow_mapC
Build an EXPERIMENTAL heuristic data-flow risk map for source and sink patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only labels the tool as 'EXPERIMENTAL heuristic', which hints at unreliability but does not describe side effects, return behavior, or whether it is read-only. This is insufficient for a tool that might have complex outputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is front-loaded with the action and subject, making it easy to parse. However, it is minimal to the point of missing critical details, which slightly lowers the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides only a high-level purpose and fails to explain the parameter, expected output, or any operational context. Given the lack of annotations and output schema, this is severely incomplete for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not mention the 'path' parameter at all. There is no explanation of what 'path' should point to or its format, leaving the agent completely uninformed about the only required input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a data-flow risk map for source and sink patterns, using a specific verb and resource. It is not a tautology and is distinguishable from sibling audit tools, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus others, nor any exclusions or alternative tools. The single-sentence description offers no contextual triggers or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_my_appBRead-only
Review the complete bound workspace; poll with continue_review until terminal.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | 검사할 프로젝트 경로. 설치 시 고정된 워크스페이스에서는 '.'을 사용합니다. | . |
| include_flow | No | 소스에서 입력·처리·외부 전송 흐름 분석을 함께 실행합니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| findings | No | |
| experience | Yes | |
| review_job | No | |
| guardian_gate | No | |
| review_receipt | No | |
| primary_workflow | No | |
| application_assurance | No | |
| auditor_qualification | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the polling behavior, which is genuinely useful beyond annotations, but it does not explain what 'terminal' means, what the response contains, or any side effects (e.g., state changes between polls). Since it adds some behavior context but not full transparency, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core purpose ('Review the complete bound workspace') is front-loaded, and the polling instruction is a necessary operational detail. It could arguably be more structured (e.g., listing return behavior), but it is appropriately concise for the amount of information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a rich output schema (which likely explains the 'terminal' state and review results), so the description does not need to detail return types. However, the phrase 'until terminal' is ambiguous without context on how to recognize terminality, and the description does not clarify the scope of 'complete bound workspace' or what 'review' entails (e.g., security, code quality, dependencies). Given the complexity of a polling-based review, the description is minimally complete but leaves gaps that the schema and sibling definitions may or may not fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters fully (100% coverage), including the meaning of 'path' ('checks the project path; use '.' for the fixed workspace') and 'include_flow' (whether to run input/processing/external transmission flow analysis). The description adds nothing about parameters 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb ('Review') and a resource ('the complete bound workspace'), so an agent can deduce the tool's core function. It also hints at a distinctive workflow (polling with continue_review) that sets it apart from simpler scans, but it doesn't explicitly name or contrast siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'poll with continue_review until terminal' gives a usage pattern, implying this is a long-running operation and that continue_review is the follow-up tool. However, it does not state when to prefer this over alternatives like scan_workspace or start_review_before_ship, nor does it give exclusions or prerequisites. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_reviewARead-onlyIdempotent
Wait briefly for a long review; repeat until state is completed or failed.
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes | check_my_app 또는 start_review_before_ship이 돌려준 검수 번호 | |
| wait_seconds | No | 한 번에 기다릴 시간(0~4초). 완료될 때까지 이 도구를 반복 호출합니다. | |
| finding_limit | No | 완료 결과에 포함할 findings 수(1~50) | |
| response_mode | No | compact(기본) 또는 full(호환용 전체 결과) | compact |
| finding_offset | No | 완료 결과 findings 페이지 시작 위치 |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| findings | No | |
| experience | Yes | |
| review_job | No | |
| guardian_gate | No | |
| review_receipt | No | |
| primary_workflow | No | |
| application_assurance | No | |
| auditor_qualification | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context about the iterative waiting mechanism and the terminal states, which goes beyond what annotations declare. This clarifies that multiple calls may be needed and defines the loop exit condition without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that captures the essential behavior and stop condition. It contains no redundant details, and for a tool with 5 parameters, the schema fully covers parameter specifics, so brevity is both appropriate and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys the core polling loop and terminal decisions, sufficient for an agent to understand the call pattern. With annotations covering safety and schema covering parameters, the description need not list parameters or response format. It could be more explicit about error handling or max retry expectations, but for a standard polling tool this is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions (e.g., wait_seconds limits, finding_limit range), so the description adds no parameter-level value. As per baseline for high schema coverage, a score of 3 is appropriate since the description effectively delegates parameter comprehension to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Wait briefly') and a specific resource ('a long review') with an explicit termination condition ('until state is completed or failed'). It distinguishes itself from sibling start_review_before_ship by being the polling/waiting counterpart, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a polling loop but does not explicitly state when to call it, such as after start_review_before_ship or check_my_app. It lacks any mention of alternative tools or exclusion criteria, leaving preparation and sequencing to caller inference. The schema's review_id description helps but is not part of the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_benchmark_templateC
Create a 20/20/10 field benchmark manifest CSV template.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Create' without disclosing side effects, such as whether it overwrites an existing file, what the return value looks like, or any permission requirements. The description adds no behavioral context beyond the trivial fact of creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no waste. However, it is too terse, sacrificing necessary detail for brevity. Front-loading is acceptable, but the cryptic '20/20/10' and lack of any explanation reduce its effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no annotations, the description should at least explain what a 'benchmark manifest' is, whether the file is created or overwritten, and any output expectations. The description lacks these details, making it incomplete for an agent to use correctly without prior domain knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one parameter, output_path, with zero description coverage. The description does not mention the parameter at all, so an agent has no information about the expected format, whether it's a directory or full path, or the file name conventions. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Create') and a specific resource ('20/20/10 field benchmark manifest CSV template'). The 'benchmark' keyword distinguishes it from sibling template tools like create_field_campaign_template and create_guardian_manifest_template. It is specific but leaves the meaning of '20/20/10' unexplained, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling template tools. There is no mention of alternatives, exclusions, or selection criteria. An agent would have to infer usage from the name alone, which is not sufficient when similar templates exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_field_campaign_templateC
Create the empty 12-20 app owned/partner roster used before holdout preregistration.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It only says 'create', which is generic and matches the tool name; it does not mention whether the operation is destructive, whether it overwrites existing files, what permissions are required, or what success/error responses look like. The description adds minimal value beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (a single sentence) with no wasted words. However, it is so terse that it omits essential details, making it under-specified rather than efficiently structured. It is neither bloated nor well-organized; it simply lacks substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and no annotations, the description should at least clarify what 'empty roster' means, what output_path should point to, and any prerequisites or side effects. The description only gives a vague workflow hint ('before holdout preregistration') and leaves the main operational details undocumented, making it insufficient for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (coverage 0%) and the tool description does not mention the 'output_path' parameter at all. Even though the parameter name is somewhat self-explanatory, the description fails to elaborate on expected format, path conventions, or default behavior. The description offers zero assistance for correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and a specific resource ('empty 12-20 app owned/partner roster'), and gives a context cue ('before holdout preregistration'). It is clear about what the tool does, though it does not explicitly contrast with sibling template creators like create_benchmark_template or create_guardian_manifest_template. The purpose is distinguishable by the unique resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'used before holdout preregistration' implies a temporal context but does not give explicit when-to-use vs when-not-to-use guidance, nor does it mention any alternative tools or conditions for choosing this tool over a sibling. There is no guidance on preconditions or expected workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_guardian_manifest_templateC
Create a korean_senior Guardian manifest for four-domain pre-release reviews.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects. It says 'create' but does not describe whether the tool overwrites existing files, requires specific permissions, or produces a specific return value. The lack of behavioral detail (e.g., idempotency, error conditions) leaves the agent without important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that is front-loaded with the action. It is concise without padding, but its brevity comes at the cost of missing critical details, making it more under-specified than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool that creates a file, with no annotations, no output schema, and no parameter documentation, the description is far from complete. It omits details about the manifest structure, default behavior, and parameter semantics, which an agent would need to invoke the tool correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining the output_path parameter. It does not: the description only mentions the manifest creation and gives no guidance on the expected format, constraints, or usage of output_path. The parameter name is self-explanatory but the description adds no additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'a korean_senior Guardian manifest', and adds the specific context of 'four-domain pre-release reviews.' This distinguishes it from sibling template tools like create_benchmark_template and create_field_campaign_template, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pre-release reviews but does not explicitly state when to use this tool versus similar template creators, nor does it mention any exclusions or alternatives. An agent would have to infer the use case from the name and description, lacking explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_release_gateC
Run the strict data shipment gate over Guardian, validation, Korean corpus, and MCP interceptor evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| guardian_report_path | Yes | ||
| guardian_manifest_path | Yes | ||
| validation_report_path | Yes | ||
| validation_review_path | Yes | ||
| validation_roster_path | Yes | ||
| korean_corpus_report_path | Yes | ||
| mcp_forwarded_output_path | Yes | ||
| mcp_intercept_report_path | Yes | ||
| korean_fixture_corpus_path | Yes | ||
| validation_ground_truth_path | Yes | ||
| validation_preregistration_path | Yes | ||
| max_validation_false_positive_rate | No | ||
| validation_repeat_guardian_report_path | Yes | ||
| validation_source_guardian_report_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only says 'Run' the gate, without stating whether it is read-only, destructive, requires specific inputs, or what happens on failure. With 14 parameters and no cautions, the agent has no idea of side effects or prerequisites—a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and lists evidence categories. There is no filler or redundancy. However, given the tool's complexity, it is overly terse, though conciseness itself is well-handled.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 14 required parameters, no annotations, no output schema, and no parameter descriptions, the description is grossly incomplete. It fails to explain what each path is for, what the gate checks, success criteria, side effects, or output format. An agent cannot confidently invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It groups evidence into Guardian, validation, Korean corpus, and MCP interceptor categories, which helps map high-level intent but does not explain the 14 specific path parameters, their expected formats, or relationships. This is insufficient for an agent to correctly populate all required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Run' and resource 'strict data shipment gate', and lists the evidence sources (Guardian, validation, Korean corpus, MCP interceptor). It is clear what the tool does overall, though it does not explicitly differentiate from sibling tools like security_gate or guardian_audit. The distinctive evidence components give some differentiation, hence a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It omits prerequisites, exclusions, or context clues such as 'use this before shipping data' or 'do not use if X'. The agent must infer usage from the tool name and stack. This is a significant miss for a tool with many related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_analyzer_auditC
Run the local fail-closed Semgrep deep profile; this is intrafile evidence, not an authorization proof.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only discloses a few behavioral traits: 'fail-closed' and 'intrafile evidence, not an authorization proof'. These are useful, but it does not mention permissions, side effects, rate limits, or output behavior. It adds some context beyond the schema but leaves many aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—one sentence with two clauses—and front-loads the action. Every word earns its place, but the brevity leaves essential details missing, so it is efficient but not optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a security audit tool with only one parameter and no output schema, the description is incomplete. It does not explain the return value, the exact meaning of 'workspace_path', prerequisites, or how the result relates to other tools. The caveats about fail-closed and non-authorization are helpful, but the agent lacks critical operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameter 'workspace_path', but it provides no explanation of what this parameter expects, its format, or its purpose. The agent has no additional information beyond the variable name, making it difficult to invoke correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Run the local fail-closed Semgrep deep profile') and a clear resource (Semgrep deep profile), with an additional qualifier about its scope ('intrafile evidence, not an authorization proof'). It is clear about what the tool does, though it does not explicitly differentiate from sibling tools like scan_workspace or software_composition_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The phrase 'intrafile evidence' hints at a single-file analysis scope, but it does not state conditions or mention sibling tools. No exclusions or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enforce_mcp_eventsC
Evaluate MCP runtime block/redact policy and return a raw-free report-only interceptor result.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| label | No | mcp-runtime-events |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry all behavioral disclosure. It mentions 'report-only' (non-destructive) and 'raw-free' (does not expose raw data), which are helpful, but it does not clarify whether any state is modified, whether authentication is needed, or the exact nature of the interceptor result. The disclosure is partial despite carrying the full burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the primary action front-loaded. It is concise and avoids filler, though it may be too terse for the tool's complexity. In terms of structure, it communicates the core action efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, minimal parameter documentation, and a relatively complex policy-evaluation task, the description is severely incomplete. It fails to explain the interceptor result, parameter semantics, or any side effects, leaving the agent without enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the purpose of the 'text' or 'label' parameters. An agent cannot infer what text to pass or how label affects the call. The description adds no meaning beyond the generic parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Evaluate') and resource ('MCP runtime block/redact policy') and indicates the output type ('raw-free report-only interceptor result'). It distinguishes from siblings like observe_mcp_event (observation) and scan_mcp_config (scanning), though 'raw-free' and 'interceptor' are jargon that could confuse agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus its siblings. It does not mention alternatives, exclusions, or prerequisites. The only implicit signal is the verb 'Evaluate' suggesting policy enforcement, but nothing clarifies a selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_ruleBRead-onlyIdempotent
Explain a K-Guard rule in plain language with impact, fix steps, and verification.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that the tool provides impact, fix steps, and verification, which is useful context beyond a generic 'explain'. However, it does not disclose output format, error handling, or any other behavioral traits, so the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and lists the key outputs. There is no fluff, and it is concise without being under-specified—every word contributes to describing the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and annotations covering safety, the description is minimal but conveys the purpose. However, it lacks usage guidance and parameter semantics, and it does not contextually place itself among the many sibling tools. An agent would not know when to call it or how to find the rule_id, leaving notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the parameter name 'rule_id' with type string and no description. The tool description does not explain what a rule_id is, how to obtain it, or its format. With 0% schema description coverage, the description wholly fails to compensate, leaving the agent with no semantic context for the sole required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Explain a K-Guard rule') on a specific resource, and lists the content of the explanation (impact, fix steps, verification). This distinguishes it from siblings like suggest_fix, which focuses on proposing fixes rather than explaining a rule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like suggest_fix or scan_workspace. It does not mention why one would prefer an explanation over a fix suggestion, nor any conditions or prerequisites, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_benchmarkC
Aggregate field benchmark reports by cohort; probes require explicit MCP probe opt-in.
| Name | Required | Description | Default |
|---|---|---|---|
| run_probes | No | ||
| review_path | No | ||
| manifest_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits such as side effects, return values, or error conditions. It only discloses that probes need explicit opt-in and that results are aggregated by cohort. It does not describe what the tool returns, whether it is read-only, or any side effects. The sparse disclosure leaves the agent uncertain about the tool's full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant wording. The primary action is stated first, followed by a specific constraint. Every word adds some value, and the structure is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three parameters, no output schema, and no annotations, the description is insufficient. It does not explain what manifest_path should reference, what run_probes does beyond the opt-in hint, or the role of review_path. An agent would need external knowledge to invoke this correctly. The description covers only a fraction of the necessary context for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must explain the parameters. It does not define manifest_path, run_probes, or review_path beyond their names. The mention of cohort and probe opt-in hints at some parameter usage, but not enough for an agent to correctly fill in all parameters without further knowledge. The description compensates poorly for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Aggregate') and resource ('field benchmark reports') with a clear qualifier ('by cohort'). It distinguishes the tool from siblings like create_benchmark_template or field_campaign_status, which deal with creation or status rather than aggregation. The probe opt-in clause adds a specific characteristic, but the description does not explicitly name any sibling for comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool over alternatives. It states a requirement about probes ('probes require explicit MCP probe opt-in') but does not explain when aggregation is appropriate or when to choose another tool. There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
field_campaign_statusC
Validate the app roster and emit a raw-free fail-closed campaign status.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | ||
| roster_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. 'Fail-closed' hints at error handling but doesn't explain side effects, required permissions, or what happens on failure. 'Raw-free' suggests output transformation but is undefined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, but it sacrifices substance for brevity. It is concise in length but not in delivering necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two required parameters and no output schema, an agent cannot infer what output looks like, what 'raw-free' means, or what 'fail-closed' implies. The description is inadequate for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must define both required parameters. It never mentions roster_path or output_path, leaving their purpose entirely unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('validate') and resource ('app roster'), with a defined outcome ('emit a campaign status'). It is distinct from sibling validation tools by focusing on campaign status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like validate_policy_controls or scan_workspace. It does not state prerequisites, exclusions, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guardian_auditC
Run Guardian; korean_senior rows require four review domains and fail closed when fail_on is set.
| Name | Required | Description | Default |
|---|---|---|---|
| fail_on | No | ||
| run_sca | No | ||
| run_probes | No | ||
| manifest_path | Yes | ||
| previous_report_path | No | ||
| mcp_http_proxy_report_path | No | ||
| field_validation_report_path | No | ||
| control_validation_report_path | No | ||
| language_validation_report_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must carry the full burden of behavioral disclosure. It does reveal two behaviors: the requirement for four review domains for korean_senior rows and the fail-closed behavior when fail_on is set. However, it does not disclose whether the tool is read-only, what it modifies, any authentication requirements, or any side effects. This is insufficient for an audit tool of this complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that combines two unrelated pieces of information with a semicolon. It is concise but severely under-specified for a tool with 9 parameters. The structure does not front-load the most important information about the tool's purpose or usage; instead it focuses on an edge case about korean_senior rows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, no annotations, and no output schema, the description is drastically incomplete. An agent has no understanding of what the tool returns, what most parameters do, or what the audit covers. The description only addresses a narrow scenario, leaving the agent to guess about the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate by explaining key parameters. It only hints at 'fail_on' by mentioning it in the fail-closed clause, but does not explain its values or purpose. Parameters like run_sca, run_probes, and various report paths are left completely unexplained, making it hard for an agent to know how to set them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Run Guardian' which identifies the action, but it does not explain what Guardian does or why it would be used. The mention of 'korean_senior rows' and 'four review domains' suggests a specific audit context, but without knowing what Guardian does, the purpose remains ambiguous. It distinguishes from siblings only by name, not by functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a specific condition: 'korean_senior rows require four review domains' and 'fail closed when fail_on is set.' This hints at when this tool might be needed, but it does not explicitly state when to use this tool over alternatives like deep_analyzer_audit or software_composition_audit. There is no guidance on exclusions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observe_mcp_eventC
Observe one MCP runtime event and return stream-ready block/redact policy decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| label | No | mcp-runtime-event | |
| session_id | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'observe' which hints at read-only, but does not state whether the tool has side effects, modifies state, requires specific permissions, or what 'stream-ready block/redact policy decisions' entail. The description is too vague to inform an agent about side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and output. It is concise with zero wasted words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no output schema, and no annotations, the description is incomplete. It does not explain how to construct the input, what the return value looks like, or any operational context (e.g., streaming behavior, policy format). An agent calling this tool would lack essential details to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema provides no explanation for parameters. The description does not compensate by explaining the role of 'text', 'label', or 'session_id'. There is no guidance on what content to pass or how these parameters influence the output. This is a significant gap for a 3-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('observe'), a specific object ('one MCP runtime event'), and the result ('return stream-ready block/redact policy decisions'). It clearly differentiates from sibling tools like observe_mcp_events (plural) and enforce_mcp_events by emphasizing the singular scope and the decision-returning action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus its siblings. The description implies usage for a single event but does not state when to prefer it over observe_mcp_events or enforce_mcp_events. No exclusions or alternative conditions are provided, leaving the agent to infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observe_mcp_eventsB
Observe MCP runtime/proxy JSONL events for PII, hidden instructions, and agentic/external flow.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| label | No | mcp-runtime-events |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does explain that the tool scans for PII, hidden instructions, and agentic/external flow, which gives insight into its function. However, it does not explicitly state whether the tool is read-only, has side effects, or requires network access. The term 'observe' implies passivity, but this is not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that delivers the core purpose upfront and appends the specific detection targets. It contains no superfluous words and is highly efficient, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should at least hint at what the tool returns. It does not mention output format or return values. Additionally, it fails to explain the role of the optional 'label' parameter. For a tool with only two parameters, the description is reasonably complete for the primary action but leaves critical context gaps for a fully informed call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate for parameter clarity. The description implies that the 'text' parameter contains JSONL events (from 'Observe MCP runtime/proxy JSONL events'), but it does not explicitly map description content to parameters, and the 'label' parameter is completely unexplained. This leaves the agent uncertain about parameter formatting and purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (observe) and the resource (MCP runtime/proxy JSONL events) and specifies the focus (PII, hidden instructions, agentic/external flow). This distinguishes it from sibling tools like 'observe_mcp_event' (singular) and 'enforce_mcp_events' (different action) without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention specific scenarios or indicate conditions where a different tool would be more appropriate. No exclusions or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_httpC
Run safe read-only HTTP probes against localhost or explicitly authorized external targets.
| Name | Required | Description | Default |
|---|---|---|---|
| base_url | Yes | ||
| deep_active | No | ||
| session_file | No | ||
| authorization_note | No | ||
| external_authorized | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state 'safe read-only', indicating non-mutating behavior, and restricts targets to localhost or authorized external, which is useful. However, it fails to disclose behaviors related to parameters, response format, authentication needs, or rate limiting, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose and target constraint. It avoids redundancy and is easy to parse. However, it is perhaps too brief given the other gaps, but for conciseness alone it is strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no annotations, a complete description would need to cover parameter semantics, expected return values, and use cases. This description only provides a high-level purpose and target restriction, leaving the agent without enough information to call the tool correctly. It is substantially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It offers no explanation for any of the five parameters (base_url, deep_active, session_file, authorization_note, external_authorized). The agent cannot infer their meaning or usage from the description, which is a severe deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a read-only HTTP prober with specific target constraints (localhost or explicitly authorized external targets). It uses a concrete verb ('Run') and a resource ('HTTP probes'), making the purpose unambiguous. While it doesn't name a sibling, no sibling tool appears similar, so it stands alone effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for probing HTTP endpoints but provides no explicit scenarios, alternatives, or exclusions. It does not mention when to prefer another tool or when this tool should not be used. The guidance is inferred from the purpose statement rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_diffB
Scan only a git diff, without echoing raw diff content in the MCP response.
| Name | Required | Description | Default |
|---|---|---|---|
| base_ref | No | HEAD~1 | |
| head_ref | No | HEAD | |
| workspace_path | No | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that raw diff content is not echoed, which is a meaningful behavior. However, it does not describe what the tool does return, whether it is read-only, or any side effects. For a scan tool, this is a partial disclosure; more detail on the output format would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core purpose and the key behavioral absence. It is concise with no redundant wording. However, given the tool's parameters and lack of annotations, it may be slightly under-specified, but it earns its place as an efficient opening statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters, no output schema, and no annotations. The description does not explain parameter semantics, expected output, or usage context beyond the scope of a git diff. An agent would lack crucial details to invoke the tool correctly, making the description inadequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no parameter descriptions), so the description must compensate. It does not mention base_ref, head_ref, or workspace_path at all. The parameter names and defaults in the schema give some hints, but the description adds no additional meaning, leaving an agent unsure how to set the refs or workspace path correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a git diff) and the action (scan), and adds a specific behavioral distinction ('without echoing raw diff content in the MCP response'). This unmistakably differentiates it from sibling scan tools like scan_workspace and scan_text, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for scanning a git diff) but does not explicitly mention alternatives or exclusions. An agent can infer the primary use case, but there is no guidance on when NOT to use it versus scan_workspace or scan_text. The scope is clear enough to make an inference, so it is not a complete miss.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_mcp_configC
Discover and scan project MCP configs plus agent instruction and skill components.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Discover and scan' implies a read operation, but it doesn't state whether it modifies anything, what it returns, how thorough the scan is, or whether it only scans the given path. There is no disclosure of potential side effects or performance implications. Minimal value beyond the literal meaning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise and front-loads the main verb. However, it is under-specified rather than efficiently detailed. Every word is used, but the ambiguity (e.g., 'discover and scan' vs just 'scan') means the sentence doesn't earn its place as the sole content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description must explain the tool's return value and behavior. It does not mention what the scan produces (list of files? config contents?), how to interpret results, or whether the path is required (though default '.' is in schema). For a tool that likely serves as an inventory/analysis entry point, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'path' with no description and 0% schema coverage. The description does not explain what 'path' refers to (directory root? file?) or how it affects the scan. Since the schema provides no semantic help and the description adds nothing, parameter understanding is left to guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb+resource pattern ('Discover and scan project MCP configs plus agent instruction and skill components'), which states what the tool does. It is specific enough about the resource type to distinguish from generic scan tools like scan_workspace, but it doesn't fully delimit scope (what counts as 'agent instruction and skill components' is vague). Not a tautology, but could be sharper.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no mention of when to use this tool versus the many sibling scanning tools (scan_workspace, scan_text, scan_diff, etc.). No context about typical use cases, prerequisites, or exclusions. The description offers no guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_textB
Scan an inline text snippet without writing it to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| label | No | inline-text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose one meaningful trait: the operation does not write to disk. But it doesn't mention whether the scan is read-only, what side effects or requirements exist, or what the return format is. This is partial disclosure, but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that leads with the primary action and key constraint. Every word adds value, and it avoids redundant phrasing. It is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the core behavior but leaves gaps: parameter semantics are unexplained, and differentiation from sibling scan tools (scan_workspace, scan_diff, etc.) is only implicit. An agent might not know exactly when to choose this over alternatives without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about the parameters. While the names 'text' and 'label' are fairly self-explanatory, the description does not clarify expected formats, defaults, or how the label is used. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'scan' and the resource 'inline text snippet', clearly distinguishing it from file- or workspace-based scans. However, it doesn't specify the type or goal of the scan (e.g., security, content analysis), leaving some ambiguity about what the scan actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'inline text snippet' and 'without writing it to disk' strongly imply the intended use case: scanning text passed directly rather than from a file. However, it doesn't explicitly name alternative tools (e.g., scan_workspace, scan_diff) or state when those would be preferred, so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_workspaceB
Scan a local workspace for secrets, Korean PII, composite PII, config risks, and flow risks.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| include_flow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not state whether the scan is read-only, whether it modifies files, what 'flow risks' entail, or what the return format looks like. The tool appears to be a scan, but its side effects and operational implications are opaque, which is a significant gap for a security-related tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no wasted words. It leads with the action and resource, then lists the detection categories. It is efficient, though it could be improved by adding a sentence about parameters or usage without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (scanning a whole workspace for multiple risk types) and the absence of an output schema and annotations, the description is insufficient. It does not explain what results are returned, how to interpret them, or the role of the include_flow parameter, leaving an agent with significant uncertainty about how to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain each parameter, but it only indirectly references 'path' via 'local workspace' and completely omits the 'include_flow' boolean. An agent would not know what toggling 'include_flow' does or why it defaults to true. The description fails to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Scan'), a resource ('local workspace'), and enumerates the exact categories it detects (secrets, Korean PII, composite PII, config risks, flow risks). This clearly distinguishes it from sibling tools like scan_text or scan_diff that operate on different input types, so an agent can immediately tell what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (scanning a directory) via the phrase 'local workspace' and the required 'path' parameter, but it does not explicitly state when to choose this over alternatives like scan_text or scan_diff, nor does it mention any prerequisite conditions. The guidance is present but only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_fixture_corpusB
Evaluate a local fixture corpus and return FP/FN precision/recall scoreboard.
| Name | Required | Description | Default |
|---|---|---|---|
| corpus_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions returning a scoreboard but does not disclose whether the operation is read-only, whether it modifies the corpus, requires specific permissions, or has side effects. The lack of explicit safety cues is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loads the core purpose and output. Every word is informative with no filler, earning a top score for efficiency and clarity of structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required param, no output schema), but the description lacks essential context: required input format, what constitutes a corpus, and any prerequisites. With no annotations to fall back on, this is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the 'corpus_path' parameter. It only hints at 'local fixture corpus' without specifying path format, file/directory requirements, or any constraints. This is insufficient for an agent to determine correct input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Evaluate'), a clear resource ('local fixture corpus'), and an explicit output ('FP/FN precision/recall scoreboard'). It uniquely identifies this tool among siblings, which are focused on scanning, validation, and audits rather than scoring a fixture corpus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives or any exclusions. The description only states what it does, leaving the agent to infer applicability without any contextual cues or usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_gateCRead-onlyIdempotent
Run the quick workspace gate. Use guardian_audit(fail_on=...) for the canonical release gate.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| fail_on | No | high | |
| include_flow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering mutation safety and side effects. The description adds 'quick' and 'workspace' context, which is slightly beyond annotations. However, it does not disclose what the gate actually does (e.g., what it scans, how it reports failures, whether it touches files). With annotations present, a 3 is appropriate – it adds minimal context but does not contradict or amplify the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (two sentences) and front-loaded with the action, but it is under-specified. There is no wasted wording, yet the conciseness does not earn its place because it conveys almost no actionable information. A description this brief would be acceptable only if the schema and annotations carried the load, but they do not for parameters and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, no parameter descriptions, and a minimal description. There is no explanation of what the gate checks, what fail_on levels mean, what include_flow does, or how results are returned. Even with annotations, the agent lacks essential context to decide when and how to call this tool correctly. The description is far from complete for a security gate with three parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description does not mention any of the three parameters (path, fail_on, include_flow). The agent must rely purely on parameter names and defaults, which is insufficient for correct invocation. The description completely fails to compensate for the lack of schema descriptions, leaving parameter semantics entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Run the quick workspace gate' – a verb and resource, but 'workspace gate' is vague and does not specify what checks are performed, what outcomes are produced, or what 'gate' means in this context. It distinguishes from guardian_audit but does not define its own purpose clearly. A more specific statement like 'Run a lightweight security scan on the workspace' would be clearer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names guardian_audit as the canonical release gate, implying this tool is for a quicker, non-canonical check. This is partial guidance – it tells the agent when *not* to use this tool (for canonical releases) but does not state conditions for when to use this tool itself. It lacks direct 'use this when...' language, but the alternative reference provides some routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
software_composition_auditB
Audit Python/npm/Go locks; explicit authorization is required because engines may consult advisory databases.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_path | Yes | ||
| authorize_advisory_lookup | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral trait: explicit authorization is required because engines may consult advisory databases, implying external network access. However, it does not state whether the tool modifies files or only reads, nor does it describe any other side effects. The disclosure is useful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose and then adds the critical authorization note. There is no fluff or redundancy; every word contributes to understanding the tool's function and a key prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for a tool that audits lock files. It does not explain what 'audit' means in terms of output (e.g., vulnerability report, risk score), what happens during the audit, or how parameters like 'authorize_advisory_lookup' affect behavior. With no output schema and only minimal description, an agent would struggle to correctly invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It barely touches on the 'authorize_advisory_lookup' parameter via the authorization mention, but it does not explain either parameter's purpose or how to set them. The description adds minimal value beyond what the schema shows (names and defaults). This is insufficient for a tool where parameters are not self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits Python/npm/Go locks, specifying the verb 'audit' and the target resources. It distinguishes from generic audit tools like deep_analyzer_audit by focusing on lock files for specific ecosystems. However, it does not explicitly name sibling alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when you need to audit lock files for Python, npm, or Go. It does not provide explicit when-not guidance or mention alternatives, but the scope is clear enough to infer the primary use case. No exclusions or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_review_before_shipD
Start Guardian high only after a completed first review of the same source snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes | 이 릴리스에서 변하지 않는 앱 식별자(예: my-shop-web) | |
| live_url | No | 선택 사항인 실제 앱 URL. 승인 없는 외부 능동 검사는 실행하지 않습니다. | |
| user_scope | Yes | 사용자와 권한 범위(예: anonymous, member, admin) | |
| data_classes | Yes | 다루는 데이터 종류. 쉼표로 구분합니다(예: account, korean_pii, payment) | |
| workspace_path | No | 설치 시 고정된 프로젝트는 '.'을 사용합니다. | . |
| live_authorized | No | 외부 live 대상의 능동 검수 권한을 운영자가 확인했는지 여부 | |
| run_live_review | No | 허가된 live URL에 동적 검수를 실행할지 여부 | |
| scope_proof_ref | Yes | 검수 권한을 확인할 수 있는 운영자 측 근거의 참조값. 비밀 원문은 넣지 않습니다. | |
| business_purpose | Yes | 앱이 실제로 제공하는 기능과 이용 목적 | |
| public_endpoints | No | 허가된 공개 엔드포인트 목록(예: /,/api/health) | |
| initial_review_id | Yes | 완료된 check_my_app 검수 번호. 코드 수정 후에는 check_my_app을 다시 실행한 번호여야 합니다. | |
| authorization_note | No | 능동 검수 권한 범위에 대한 짧은 설명. 자격증명 원문은 넣지 않습니다. | |
| previous_report_path | No | 선택 사항인 이전 raw-free Guardian 보고서 경로 | |
| run_software_composition | No | 의존성·라이선스·공급망 분석을 함께 실행합니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| findings | No | |
| experience | Yes | |
| review_job | No | |
| guardian_gate | No | |
| review_receipt | No | |
| primary_workflow | No | |
| application_assurance | No | |
| auditor_qualification | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not reveal what side effects occur, whether the action is destructive, what permissions are needed, or what operational impact 'starting Guardian high' has. The tool appears to be a state-changing action with zero transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but grossly under-specified. It omits essential information and does not front-load any useful detail. Conciseness without substance is not effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (14 parameters, 6 required) and an output schema, the description needs to explain the tool's purpose, return value, and usage context. It does none of that. The single sentence leaves an agent without enough information to know when or how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 14 parameters. The description adds no parameter-specific meaning, which aligns with the baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Start Guardian high' but never defines what 'Guardian high' is. It mentions a precondition (after a completed first review) but does not state the tool's actual function, resource, or outcome. This is vague and could be confused with sibling tools like continue_review or guardian_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides one usage condition (only after a completed first review) but gives no guidance on when to use this tool versus siblings like check_my_app, continue_review, or guardian_audit. There is no mention of alternatives or exclusions beyond the single prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_fixCRead-onlyIdempotent
Return a dry-run fix recipe and regression-test suggestions for a rule.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | ||
| framework | No | generic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and idempotentHint=true, so the description correctly aligns by stating 'dry-run,' which implies no changes are applied. However, it does not mention any additional behavioral aspects like rate limits, required authentication, or the shape of the response. It adds a small amount of context about being a dry-run but stays within the safety profile the annotations already establish.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that states the core functionality without any filler. The key concept (dry-run fix recipe) is front-loaded, and there is zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's relative simplicity (two parameters, read-only operation) and the presence of safety annotations, the description covers the basic operation. However, without an output schema, the agent does not know what a 'fix recipe' or 'regression-test suggestions' looks like, and the framework parameter's effect is unaddressed. This makes the description incomplete for a correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for rule_id or framework, and the description only refers to 'a rule,' which indirectly hints at rule_id but does not explain what a rule is or how framework modifies the output. With 0% schema coverage and no parameter explanation, the description fails to compensate, leaving the agent to guess at the meaning and semantics of both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear action (return) and a specific object of that action: a dry-run fix recipe and regression-test suggestions for a rule. It distinguishes itself from siblings like explain_rule by focusing on fixes rather than explanations, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit guidance on when to choose this tool over the many siblings, such as explain_rule or scan tools. The only implicit usage is that it applies to a rule, but there is no information about prerequisites, contexts, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_multilang_packC
Run the pinned nine-language pack twice; this does not claim field accuracy.
| Name | Required | Description | Default |
|---|---|---|---|
| pack_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole source of behavioral disclosure. It discloses that the tool runs twice and explicitly states it does not claim field accuracy, which is a useful limitation. However, it does not describe side effects, return values, or what the validation process actually does beyond running twice, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and includes a caveat. It contains no redundant words or unnecessary detail, making it concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and no output schema, the description should explain what pack_path should point to, what running twice accomplishes, and what the expected output or result indicates. The description only instructs to run it twice and disclaims accuracy, which is insufficient for an agent 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (pack_path) with 0% description coverage, meaning the schema provides no meaning. The tool description does not mention the parameter at all, offering no context about what path to supply, its format, or its purpose. The description completely fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Run the pinned nine-language pack twice') on a named resource, making the primary action clear. The tool name 'validate_multilang_pack' reinforces the purpose of validation, and the caveat 'does not claim field accuracy' differentiates it from accuracy-focused tools. However, it does not explicitly state that it validates a multilingual pack, relying on the name for that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings like validate_policy_controls or scan_workspace. It does not mention prerequisites, scenarios, exclusions, or alternatives. An agent has no basis for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_policy_controlsC
Run the repeated synthetic JIT/JEA and database AST/RBAC/isolation control pack.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Run', implying execution but does not state side effects, whether it is read-only, what output it produces, or any dependencies. The phrase 'repeated synthetic' hints at repetition but remains vague and unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words. It front-loads the primary action and resource. While it lacks structure or headers, it is efficient and easy to read for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema, annotations, and rich parameter documentation. The description gives only a terse summary that assumes domain knowledge about JIT/JEA and AST/RBAC. It does not explain what the validation entails, what the output looks like, or any prerequisites, leaving the agent under-informed for a validation/control tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not mention the sole parameter 'output_path' at all. The parameter name suggests it is an output destination, but that is not clarified. The description adds no meaning beyond what the schema already shows, and fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Run') and a specific resource ('the repeated synthetic JIT/JEA and database AST/RBAC/isolation control pack'). It provides enough specificity to distinguish it from siblings like validate_multilang_pack, though the jargon-heavy phrasing ('synthetic JIT/JEA' and 'AST/RBAC/isolation') may be ambiguous without domain context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention any sibling tools, conditions, or exclusions. The description simply states what it does, leaving the agent to infer context from the name and context signals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_streamable_http_runtimeD
Run the repeated Streamable HTTP authorization, lifecycle, SSE, and audit matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavior disclosure. It only says it 'runs' something, without disclosing side effects, read-only vs mutating nature, auth requirements, or output format. This is a serious gap for a tool that likely performs complex validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, but it is under-specified rather than concise. It contains almost no actionable information, so the words do not earn their place. It is more of a heading than an explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that likely executes a multi-faceted validation matrix, the description provides no context on what the matrix entails, how to interpret results, or how the output_path is used. With no output schema and minimal description, an agent cannot confidently call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, output_path, has 0% schema description coverage and the description does not mention it at all. The description adds no meaning to the parameter, failing to compensate for the schema's lack of explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run') and resource ('Streamable HTTP'), and lists topics it covers (authorization, lifecycle, SSE, audit). However, 'repeated ... matrix' is vague and does not clearly convey what the tool actually does. It does not explicitly differentiate from sibling validation tools like validate_policy_controls or validate_multilang_pack, but the resource name gives some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus its siblings. It does not mention prerequisites, scenarios, or exclusions. An agent would have no cue for choosing this over other validation tools.
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.
28 tool updates
v0.1.0- First observed
build_flow_map - First observed
check_my_app - First observed
continue_review - First observed
create_benchmark_template - First observed
create_field_campaign_template - First observed
create_guardian_manifest_template - First observed
data_release_gate - First observed
deep_analyzer_audit - First observed
enforce_mcp_events - First observed
explain_rule - First observed
field_benchmark - First observed
field_campaign_status - First observed
guardian_audit - First observed
observe_mcp_event - First observed
observe_mcp_events - First observed
probe_http - First observed
scan_diff - First observed
scan_mcp_config - First observed
scan_text - First observed
scan_workspace - First observed
score_fixture_corpus - First observed
security_gate - First observed
software_composition_audit - First observed
start_review_before_ship - First observed
suggest_fix - First observed
validate_multilang_pack - First observed
validate_policy_controls - First observed
validate_streamable_http_runtime
TDQS
Scored across 28 tools
Most tools have clearly distinct purposes with detailed descriptions. However, a few near-duplicates exist (e.g., observe_mcp_event vs observe_mcp_events, security_gate vs guardian_audit) that could slightly confuse an agent. Overall, the set is well-separated.
Tool names mix conventions inconsistently. Many follow verb_noun (scan_workspace, create_field_campaign_template, explain_rule), but several use noun_noun (software_composition_audit, data_release_gate, field_campaign_status, security_gate). There is also singular/plural inconsistency (observe_mcp_event vs observe_mcp_events). This makes naming patterns unpredictable.
With 28 tools, this exceeds the 25+ threshold and feels heavy. While the domain is broad, many tools overlap in function (multiple validation and audit tools). The server could consolidate some related tools (e.g., separate scan_* tools) without losing clarity.
The tool surface covers the main security workflow: scanning, validation, audits, templates, explanations, fixes, and status gates. Minor gaps exist (e.g., no explicit rule management or history retrieval), but the core lifecycle is present and agents can complete typical tasks.
Maintenance
Related MCP Connectors
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server that enables AI coding tools to scan projects for security vulnerabilities, secret leaks, and compliance issues, generating Korean-language audit reports.119PolyForm Noncommercial 1.0.0
- FlicenseNot gradedqualityDmaintenanceLocal MCP server that scans code for security issues (secrets, dependencies, configurations, risky patterns) and integrates with GitHub Copilot in VS Code for automated pre-commit reviews.-
- AlicenseNot gradedqualityAmaintenanceEnables AI coding tools to scan projects for security vulnerabilities, hardcoded secrets, injection flaws, and privacy violations with 699 rules and 76 MCP tools, all running locally with zero telemetry.12 npm7MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI agents to scan code for leaked secrets, copyleft licenses, unprotected routes, missing privacy policies, and risky card handling before committing or shipping.50 npmMIT