Third-party auditor for Japanese construction and renovation estimates. MCP + A2A server returning independently verifiable fair-price receipts (SHA-256, PTKA, Bitcoin-anchored declaration).
Horizon Shield exhibits significant definition quality gaps across its 6 tools. While tool names follow the verb_noun pattern and are generally clear (get_price_range, audit_estimate, preview_reverse_estimate, get_fair_price_sources, find_verified_contractor, conduct-witness-mcp), the critical deficiency is in parameter descriptions and schema completeness. Four of six tools lack visible input schema definitions in the source code provided (audit_estimate, preview_reverse_estimate, find_verified_contractor, conduct-witness-mcp are referenced in ops/ or workers/ files without schema inspection). Of the two tools with visible schemas (get_price_range and get_fair_price_sources in workers/hs-mcp/src/mcp.js), get_price_range has reasonable parameter descriptions in both Japanese and English, but get_fair_price_sources has an empty properties object with no parameters documented. Tool descriptions are present but vary in quality, some are concise and domain-specific (get_price_range: ~160 chars with context about trend data and regional coefficients), others are vague or overly complex (conduct-witness-mcp mixes A2A Extension jargon without explaining what an agent walk or sha256 receipt means to a typical user). No tool includes documented output schemas. Error handling is absent from all tool descriptions. The schema visibility issue is critical: three tools (audit_estimate, preview_reverse_estimate, find_verified_contractor) appear in ops/mcp_tool_selection_patch2_20260913.py with parameters visible, but the actual tool registration and full schema definitions are not shown in the source provided, making schema validation impossible for those tools. Conduct-witness-mcp's 'input_data' parameter is under-described ('Input data for the agent walk' is too vague). Overall, the server demonstrates domain expertise (Japanese construction/renovation context is clear) but lacks LLM-optimized documentation and complete schema coverage.
見積書の金額を工事名に対して判定。過剰請求か適正か、またはいずれとも言えないか。
A2A Conduct Extension v1 の witness walk 実行と結果ファイル化。agent を自分のマシンから歩かせて、observation を自分の名前で登録し、誰でも再計算できる sha256 を得る。MCP tool として任意の agent が一度の tool call で witness になれる。
検証済み施工店を area と work で検索。Yakumo の検証済み名簿(hs-hearing の公開ライブまたは公開済み静的 JSON)から公開項目だけに削って返す。verified と pending を分け、0 件は 0 件。
適正価格データのソースと更新日時を返す。souba-db の version、地域別係数の鍵、その他メタデータ。
工事名やキーワードから適正価格レンジを検索する。日本語の工事名またはキーワードを入力。返答に trend(上昇傾向など)を含む。
工事名から見積の内訳を逆推定(単価 × 数量)する。見積総額で返すか内訳で返すかはサーバーが判断。
Four tools (audit_estimate, preview_reverse_estimate, find_verified_contractor, conduct-witness-mcp) lack visible, inspectable input schemas in the provided source code. Tools are referenced in .py files or without full schema inspection, making schema validation and LLM parameter binding impossible.
Output schemas are entirely undocumented. No tool describes what fields are returned, their types, or structure. LLMs cannot plan downstream calls or extract relevant data without knowing the response shape.
Tool descriptions lack actionable guidance for LLM selection. Descriptions state WHAT the tool does but rarely explain WHEN to use it vs. alternatives or what prerequisites apply. Descriptions should be 10-1024 chars; conduct-witness-mcp (~280 chars) is overly technical with unexplained jargon (A2A, witness walk, sha256 receipt, PTKA).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
Parameter descriptions are incomplete or vague. Conduct-witness-mcp's 'input_data' param description ('Input data for the agent walk') is 27 chars and provides no detail on structure, required fields, or format. Preview_reverse_estimate and find_verified_contractor descriptions are visible but lack validation constraints (e.g., what constitutes a valid region key?).
No error handling guidance. Tool descriptions never indicate how failures are communicated, whether errors are retryable, or what corrective actions the LLM should take. Pattern: recovery-guide requires actionable error messages.
Tool composition issue: conduct-witness-mcp mixes operational concern (running an agent walk) with attestation (filing observations, computing sha256). This violates the single-responsibility pattern. Consider splitting into run_agent_walk and file_witness_observation or similar.
Parameter naming inconsistency: get_price_range and audit_estimate both accept 'region' (string), but the description says it can be prefecture, city, or region key (kanto/kinki/chubu/tohoku/other). No enum constraint provided; LLMs may hallucinate invalid region values. Parameter should be constrained with an enum or regex pattern.