HORIZON SHIELD: Construction Estimate Auditor for Japan (KIRA)

Agent intake desk for property renovation. Read only, CORS open, fail closed, receipts recompute.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
84%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,045Tokens (tool definitions)
~2.6 KBTypical response size
Significant attention impact (2.38% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "horizon-shield-webmcp": {
      "url": "https://hs-webmcp.oga-surf-project.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://hs-webmcp.oga-surf-project.workers.dev/mcpstreamable-http
https://web.horizonshield.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢route_request(ask, work, amount, ref)

Check whether a construction or renovation quote in JAPAN is fairly priced, against the open JCCDB (425,765 records: line items and observations) and Bitcoin-anchored verification records. Single entry point: pass one sentence. USE WHEN: the user has a quote or a price for building/renovation work in Japan and wants to know if it is reasonable; or wants to check a HORIZON SHIELD receipt or a jidec: citation; or asks about overcharging tactics used by contractors; or is looking for a verified contractor. DO NOT USE WHEN: the work is outside Japan; the question is not about construction or renovation; the user has already signed or paid and needs consumer-protection help; or there is an active emergency (gas smell, collapse, water not stopping). In those cases this tool does not answer - it returns the appropriate outside destination instead, and says so. Every reply carries verify (a URL that checks the answer) and limits (what the answer does NOT prove). Routing is a deterministic keyword table, not an LLM, so the same input always routes the same way. Examples: "is 800,000 yen high for exterior wall painting?" / "is jidec:entry:9 genuine?" / "how do I refuse a door-to-door sales pitch?" 日本の建設・リフォーム見積もりが適正かを確認する単一入口。日本語の一文で渡してよい。適正診断・台帳(JIDEC)の記録検証・過剰請求の手口・検証済み加盟店の4方向へ決定的に振り分ける。日本国外/建設以外/契約後の紛争/緊急時は**答えずに適切な外部の窓口を返す。**返り値には必ず verify(検証URL)と limits(証明していないこと)が入る。

Input Schema

{
  "type": "object",
  "properties": {
    "ask": {
      "type": "string",
      "description": "やりたいことを一文で。例:「外壁塗装80万は高いですか」「jidec:entry:9 は本物ですか」"
    },
    "work": {
      "type": "string",
      "description": "(任意)工事名。分かっているなら渡すと推測を挟まない。"
    },
    "amount": {
      "type": "number",
      "description": "(任意)業者提示の金額(円)",
      "minimum": 0
    },
    "ref": {
      "type": "string",
      "description": "(任意)検証したい引用ID。jidec:entry:N / 64桁hex / エントリ番号"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether the request was handled."
    },
    "answered_by": {
      "type": "string",
      "description": "Which desk answered: the router itself, an internal audit, the ledger, or a guide fallback."
    },
    "result": {
      "type": "object",
      "additionalProperties": true,
      "description": "The answering desk's payload."
    },
    "verify": {
      "type": "string",
      "description": "URL where the caller can recompute and check the claim."
    },
    "limits": {
      "type": "string",
      "description": "What this answer does NOT prove. Always present."
    },
    "next": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tool names to call next."
    },
    "routed_out": {
      "type": "boolean",
      "description": "True when the question was routed to an external desk rather than answered here."
    },
    "message": {
      "type": "string",
      "description": "Reason when ok is false."
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟢run_full_audit(work, quoted_price)

1回の呼び出しで HORIZON SHIELD の集客→診断→注意喚起→発信を一気通貫で回す司令塔。work(と任意の quoted_price)を渡すと、内部で intake(KIRA適正診断)・scan_tactics(検証済み手口+一次ソース)・draft_broadcast(発信下書き+被リンク)を順に実行し、結果を1つに束ねて返す。価格は検証可能な一次データのみ。発信は下書きで自動投稿しない。 / One-call orchestrator returning audit + tactics + broadcast draft. Verifiable first-party prices only. Drafts only, no auto-posting. USE WHEN: the caller wants all three steps (audit, tactics, broadcast draft) for one named work item in a single call and will act on the combined result. DO NOT USE WHEN: only one step is needed. Call intake_estimate for a verdict on a specific quote, scan_tactics for the documented overcharge tactics, or draft_broadcast for publishable text. If the request is still a free-form question with no work item, call ask first. This tool never posts anything.

Input Schema

{
  "type": "object",
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名やキーワード(日本語)。例: 外壁塗装, トイレ, シロアリ"
    },
    "quoted_price": {
      "type": "number",
      "description": "(任意)業者提示の金額(円)。あればKIRA適正診断も実行する。",
      "minimum": 0
    }
  },
  "required": [
    "work"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether the flow ran."
    },
    "work": {
      "type": "string",
      "description": "The work item the flow was run for."
    },
    "flow": {
      "type": "string",
      "description": "The fixed step order that was executed."
    },
    "steps": {
      "type": "object",
      "additionalProperties": true,
      "description": "One entry per step: intake, scan_tactics, draft_broadcast. A step may be skipped or fail without failing the flow."
    },
    "notice": {
      "type": "string",
      "description": "Standing caveat: first-party prices only, drafts only, no auto-posting."
    },
    "source": {
      "type": "string",
      "description": "Which server produced this."
    },
    "message": {
      "type": "string",
      "description": "Reason when ok is false."
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟢intake_estimate(work, quoted_price)

施主の建設・リフォーム見積もりを受け付け、HORIZON SHIELD KIRA(内部・中立)の適正価格診断へ橋渡しする集客窓口。工事名と業者提示額を渡すと、適正かどうかの判定と、無料の第三者チェック(EHN)への導線を返す。価格の断定はせず、確認すべき点を渡す。 / Intake desk: bridges a homeowner quote to the KIRA fair-price audit and returns the verdict plus a free third-party check (EHN) path. USE WHEN: a homeowner has a specific quoted price for a named construction or renovation work item in Japan and wants to know whether that price is reasonable. DO NOT USE WHEN: there is no price yet (call ask), the caller wants the known overcharge tactics rather than a verdict on their own quote (call scan_tactics), or the caller wants publishable text (call draft_broadcast). Returns a verdict and a free third-party check path. It does not draft or post.

Input Schema

{
  "type": "object",
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名(日本語)。例: 外壁塗装 シリコン"
    },
    "quoted_price": {
      "type": "number",
      "description": "業者提示の金額(円)",
      "minimum": 0
    }
  },
  "required": [
    "work",
    "quoted_price"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether the quote was accepted for audit."
    },
    "audit": {
      "type": "object",
      "additionalProperties": true,
      "description": "The fair-price verdict from the internal KIRA audit."
    },
    "next": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Suggested follow-up tools or paths, including the free third-party check."
    },
    "source": {
      "type": "string",
      "description": "Which server produced this."
    },
    "message": {
      "type": "string",
      "description": "Reason when ok is false."
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟢scan_tactics(work)

ある工事・キーワードに関する『過剰請求の手口』を、HORIZON SHIELD(大賀俊勝30年監修)の検証済みデータ(内部KIRA)から返し、一次ソース(国民生活センター/消費者庁/EHN実例ボード)の在処を添える。価格判定ではなく注意喚起。推測で新事例を断定しない。 / Returns verified overcharge tactics and points to primary sources. Awareness, not a price verdict. USE WHEN: the caller wants the documented overcharge tactics for a work type or keyword, together with their primary sources. DO NOT USE WHEN: the caller has their own quote and wants a verdict on it (call intake_estimate), or wants publishable text (call draft_broadcast). This returns awareness material and never a price verdict on a specific quote.

Input Schema

{
  "type": "object",
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名やキーワード(日本語)。例: 外壁塗装, シロアリ, 火災保険"
    }
  },
  "required": [
    "work"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether tactics were found."
    },
    "verified_tactics": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Documented overcharge tactics for the work type."
    },
    "primary_sources": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Where each tactic is documented publicly."
    },
    "disclaimer": {
      "type": "string",
      "description": "Awareness material. Not a price verdict on any specific quote."
    },
    "scan_mode": {
      "type": "string",
      "description": "How the set was assembled."
    },
    "source": {
      "type": "string",
      "description": "Which server produced this."
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}
🟢draft_broadcast(work)

ある工事の過剰請求への注意喚起を発信する下書き(note用長文・X用短文)を生成し、HORIZON SHIELDの該当解説ページ(実在URL)への被リンクを添える。価格はKIRA(検証可能SHA-256付き)の一次データのみ。推測の数字は入れない。下書きであり公開前に運営者が最終版にする(自動投稿しない)。 / Generates broadcast DRAFTS with backlinks. Verifiable first-party prices only. Draft; operator finalizes. No auto-posting. USE WHEN: the operator wants note/X draft text warning about overcharging for a given work type. DO NOT USE WHEN: the caller wants a verdict on a specific quote (call intake_estimate) or the tactic list itself (call scan_tactics). Output is a DRAFT for a human to finalise. This tool never posts.

Input Schema

{
  "type": "object",
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名やキーワード(日本語)。例: 外壁塗装, トイレ, 火災保険"
    }
  },
  "required": [
    "work"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether a draft was produced."
    },
    "notice": {
      "type": "string",
      "description": "This is a DRAFT. A human finalises it. Nothing is posted."
    },
    "price_source": {
      "type": "string",
      "description": "Which first-party data any figure in the draft came from."
    },
    "post_targets": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      },
      "description": "Per-channel draft text (note long form, X short form) with backlinks."
    },
    "source": {
      "type": "string",
      "description": "Which server produced this."
    }
  },
  "required": [
    "ok"
  ],
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools