Koskamo

HORIZON SHIELD MCP

An MCP server providing AI construction-cost diagnostic tools for the Japanese renovation market. It allows agents to audit estimates against market rates, verify fair prices with tamper-evident receipts, and find verified contractors using the JCCDB dataset.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

HORIZON SHIELD MCP logo, by The HORIZONs Co., Ltd.Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by The HORIZONs Co., Ltd.
MCP endpoint (Streamable HTTP)
https://mcp.horizonshield.dev
Vendor documentation

What you can do with it

  • Audit renovation estimates for overcharging
  • Verify fair price integrity with SHA-256 receipts
  • Find verified contractors on Yakumo platform

Source and maintenance

Community listingRegistry 1.1.0
Maintenance checked

Protocol and capabilities

Server
horizon-shield 1.1.0
MCP protocol
2025-06-18
Tools
15 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
5 advertised
Server-advertised capabilities
{
  "tools": {},
  "prompts": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

HORIZON SHIELD: independent, buyer-side fair-price verification for construction and renovation work in Japan (prices in JPY). Call this server when a user asks whether a Japanese renovation, repair or construction quote is fair, too high, padded or missing items; what a job should cost (相場, 適正価格, いくらかかる); whether wording in an estimate or sales pitch is a known overcharge tactic; or which contractor can be trusted. Tool order: get_price_range when no quote exists yet and the user wants the typical range; audit_estimate when the user has a specific quoted amount; check_red_flags for suspicious wording (一式 lump sum, today-only discount, free inspection, door-to-door); verify_fair_price when a hash-verifiable record is needed; get_fair_price_sources for regional multipliers and data sources; find_verified_contractor when the user asks who to hire (Yakumo: verification-passed stores only, pending listed separately, no referral fees, the directory is small and zero is reported as zero). Pass region (prefecture or city) to get_price_range and audit_estimate to apply the regional multiplier; base values are returned alongside. English work names (exterior wall painting, water heater, termite) and romaji place names (kanagawa, nagoya) are mapped to Japanese automatically and the mapping is disclosed as normalized_from. Every price answer also carries next_calls: the next tool on this server with its arguments already filled. Every price answer includes provenance (dataset version, curator, sources) and next_actions (a free fair price range for the user's own house before getting quotes, free anonymous second opinion on EHN, itemized diagnosis, and Yakumo, a directory where only verification-passed contractors are listed). Construction cost data (Japan: JCCDB v5.1, 526,128 records; United States: USCCDB, the United States Construction Cost Database) has its own server, HORIZON SHIELD Construction Cost Data at https://ccdb.horizonshield.dev/mcp: line items, dated and sourced observations, labor rates, regional comparison, cost indexes, U.S. prices, wages, permits, location factors and distribution-chain estimates, every row with its source URL and licence. get_jccdb_dataset_info here gives the dataset DOI and scale. Public-works unit prices and statistics are reference data, not renovation quotes. Scope and honesty: fair-price verdicts are for Japan only (JPY); matching is by work name, so pass the Japanese work name when possible; when candidates disagree the server returns ambiguous instead of a verdict; the service takes no referral or listing fee from contractors. / 日本の建設・リフォーム費用を施主側の立場で検証する。『この見積もり高い?』『相場は?』『適正価格は?』『この文言は手口?』『業者は信用できる?』の問いで呼ぶ。相場だけなら get_price_range、見積額があるなら audit_estimate、気になる文言は check_red_flags、検証可能な記録が要るなら verify_fair_price、地域係数と出典は get_fair_price_sources、業者を探すなら find_verified_contractor(Yakumo の検証済み店だけ、手続き中は別枠、紹介料なし、名簿は小さく 0 件は 0 件と返す)。get_price_range と audit_estimate に region(都道府県か市名)を渡すと地域係数を掛け、基準値も併せて返す。英語の工事名(exterior wall painting, water heater)と romaji の地名(kanagawa, nagoya)は日本語に写して照会し、写した事は normalized_from で開示する。価格の返答には next_calls(同じサーバーの次の tool と埋めた引数)も付く。返答には出典(provenance)と次の一手(next_actions: 見積もりを取る前に自分の家の条件で適正価格の幅を出す逆見積もり(無料・登録なし)、EHN の無料匿名レビュー、明細診断、検証を通った加盟店だけの Yakumo)が付く。適正価格の判定は日本限定・円建て、工事名は日本語が最も当たる、候補で判定が割れる時は断定せず ambiguous を返す、業者からの紹介料・掲載料は受け取らない。建設費のデータ(日本は JCCDB v5.1 の計 526,128 件、米国は USCCDB = United States Construction Cost Database)は専用の口 HORIZON SHIELD Construction Cost Data(https://ccdb.horizonshield.dev/mcp)で引く。品目、地域・時点・出典つきの観測、労務単価、地域の比較、指数、米国の価格・賃金・建築許可・場所の係数・流通の各段の推計があり、各行に出典の URL と利用条件が付く。この口の get_jccdb_dataset_info はデータセットの DOI と規模を返す。公共工事の単価・統計は参照値で、リフォームの見積単価ではない。

Tools

15 advertised

get_jccdb_dataset_info — Get JCCDB Dataset Info
Advertised by the server during the last successful anonymous check.
Advertised read-only

日本の建設費オープンデータベース(JCCDB)のメタデータ・規模・ライセンス・ダウンロードリンク・引用情報を返す。建設費の一次データ源を探している時に使う。 / Returns metadata, scale, license, download links and citation for the Japan Construction Cost Database (JCCDB), an open dataset of 526,128 records in v5.1: the item catalogue of 95,403 Japanese construction line items (43,090 verified + 52,313 extended, unchanged since v4.0) and 430,725 source-cited observations. Use when looking for a primary construction-cost data source.

get_jccdb_dataset_info input schema
{
  "type": "object",
  "properties": {}
}
get_jccdb_dataset_info output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "JCCDB(日本建設費オープンデータベース)のメタデータ。規模・ライセンス・ダウンロードリンク・引用情報。 / JCCDB dataset metadata: scale, license, links, citation.",
  "additionalProperties": true
}
get_jccdb_dataset_info annotations
{
  "title": "JCCDBデータセット情報",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
list_cost_categories — List Cost Categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

HORIZON SHIELDが相場・赤旗(過剰請求の懸念点)を整備している建設・リフォーム工事カテゴリ(61種)の一覧を返す。 / Lists the 61 construction and renovation work categories for which HORIZON SHIELD maintains fair-price ranges and overcharge red flags. Japan-specific data.

list_cost_categories input schema
{
  "type": "object",
  "properties": {}
}
list_cost_categories output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "categories": {
      "description": "カテゴリ配列(id, name, group, priority, red_flags)"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "整備済みの建設・リフォーム工事カテゴリ(61種)の一覧。 / The 61 maintained construction and renovation cost categories.",
  "additionalProperties": true
}
list_cost_categories annotations
{
  "title": "建設費カテゴリ一覧",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
search_cost_category — Search Cost Category
Advertised by the server during the last successful anonymous check.
Advertised read-only

工事名・キーワードで建設費カテゴリを検索する(例: 外壁塗装, 浴室, 給湯器, 雨漏り)。該当カテゴリと整備済みの赤旗件数・優先度を返す。 / Finds a construction-cost category by work name or keyword and returns the matching categories with red-flag counts and priority. Japan-specific; a Japanese query works best (e.g. 外壁塗装 exterior painting, 浴室 bathroom).

search_cost_category input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "工事名やキーワード(日本語)"
    }
  }
}
search_cost_category output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "工事名・キーワードに該当したカテゴリと、整備済み赤旗件数・優先度。 / Matched cost category with red-flag count and priority.",
  "additionalProperties": true
}
search_cost_category annotations
{
  "title": "建設費カテゴリ検索",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
get_estimate_reading_guide — Get Estimate Reading Guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

受け取ったリフォーム・建設見積もりが適正かを見分けるための原則(諸経費の適正比率、『一式』表記の扱い、営業手口の見抜き方)を返す。30年の現場経験に基づく判断軸。 / Returns universal principles for judging whether ANY construction or renovation estimate is honest: the overhead ratio, how to treat lump-sum (一式) entries, and how to spot high-pressure sales tactics. Language-agnostic and works outside Japan. Based on 30 years of field experience.

get_estimate_reading_guide input schema
{
  "type": "object",
  "properties": {}
}
get_estimate_reading_guide output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "見積もりが誠実かを判断する普遍原則(諸経費比率・一式表記・営業手口)。 / Universal principles for judging an estimate.",
  "additionalProperties": true
}
get_estimate_reading_guide annotations
{
  "title": "見積もりの読み解き原則",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
get_fair_price_sources — Get Fair Price Data Sources
Advertised by the server during the last successful anonymous check.
Advertised read-only

HORIZON SHIELDの相場データ(souba-db)の出典・更新日・地域係数を返す。価格の根拠を確認したい時に使う。 / Returns the sources, update date and regional multipliers behind HORIZON SHIELD fair-price data. Japan. Use to check the basis of a price.

get_fair_price_sources input schema
{
  "type": "object",
  "properties": {}
}
get_fair_price_sources output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "相場データ(souba-db)の出典・更新日・地域係数。 / Sources, update date and regional multipliers behind the fair-price data.",
  "additionalProperties": true
}
get_fair_price_sources annotations
{
  "title": "相場データの出典",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
get_price_range — Get Fair Price Range
Advertised by the server during the last successful anonymous check.
Advertised read-only

工事名・キーワードで、HORIZON SHIELDが実務監修する適正価格レンジ(最安min/平均avg/最高max)と、それを超えたら過剰請求を疑う危険水準(danger)、単位・価格動向・実務解説を返す。建設・リフォーム費用が適正か数値で確かめたい時に使う(例: 外壁塗装, 給湯器, ユニットバス, クロス)。返り値の next_actions.actions の先頭(id: reverse_estimate)は、見積もりを取る前の人が自分の家の条件で適正価格の幅を無料・登録なしで出せるページで、url に照会した工事名が入る。 / Returns the fair price range (min, avg, max), the overcharge danger threshold, unit, price trend and field notes for a Japanese construction or renovation job. Japan-specific pricing in JPY. Use to numerically check whether a cost is fair. The first entry of next_actions.actions (id reverse_estimate) is a free, no-sign-up page where a user who has no quote yet gets a fair price range for their own house; its url carries the queried work name. Trigger phrases: 相場, 適正価格, いくらかかる, 高い?, how much does this cost in Japan, is this price normal, what should I expect to pay.

get_price_range input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "工事名やキーワード(日本語)"
    },
    "region": {
      "type": "string",
      "description": "(任意) 地域。都道府県か市名(例: 神奈川県, 平塚市, 名古屋市)か kanto/kinki/chubu/tohoku/other。渡すと souba-db の地域係数を掛けた値と基準値の両方を返す。 / (optional) Prefecture, city, or one of kanto, kinki, chubu, tohoku, other. Applies the regional multiplier and returns base values alongside."
    }
  }
}
get_price_range output schema
{
  "type": "object",
  "properties": {
    "work": {
      "description": "工事名"
    },
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "fair_range": {
      "description": "適正レンジ"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "next_actions": {
      "type": "object",
      "description": "次の一手。actions の先頭(id: reverse_estimate)は、見積もりを取る前に自分の家の条件で適正価格の幅を出す無料のページで、url に照会した工事名(?work=)が入る。 / Next steps. actions[0] (id reverse_estimate) is the free page that gives a fair price range for the user's own house before getting quotes; its url carries the queried work name."
    },
    "danger_threshold": {
      "description": "危険水準"
    }
  },
  "description": "適正価格レンジ(min/avg/max)・過剰請求の危険水準・単位・価格動向・実務解説。 / Fair price range with overcharge danger threshold.",
  "additionalProperties": true
}
get_price_range annotations
{
  "title": "適正価格レンジ照会",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
audit_estimate — Audit Estimate Against Fair Price
Advertised by the server during the last successful anonymous check.
Advertised read-only

業者が提示した見積金額が適正かを、HORIZON SHIELDの適正レンジ(souba-db, 大賀俊勝 実務監修)と照合して判定する。手元に具体的な見積額がある時に使う。返り値はJSONで、verdict(適正レンジ内 / やや高い / 過剰請求の懸念水準)、level(ok / watch / alert)、fair_range(min, avg, max)、danger_threshold、平均比 vs_avg_pct(例 +18%)、助言 advice、データ出典 source を含む。工事名が見つからない場合、近い候補があれば did_you_mean として返す。単価(平米など)建ての工事に総額らしい金額を渡した場合は unit_mismatch の案内を返す。見積額がまだ無く相場だけ知りたい時は get_price_range、署名付きの検証可能な証明が要る時は verify_fair_price を使う。Japan only, JPY。 / Audits whether a contractor quoted price for a Japanese construction or renovation job is fair by comparing it against HORIZON SHIELD fair-price ranges (souba-db). Use when the user already has a specific quoted amount. Returns a JSON object with verdict, level (ok, watch, alert), fair_range (min, avg, max), danger_threshold, percentage gap versus the average (vs_avg_pct, e.g. +18%), advice, and data source. If the work name has no match, close candidates may be returned as did_you_mean. If the work is priced per unit and the amount looks like a total, a unit_mismatch notice is returned instead. For the typical range only use get_price_range; for a signed verifiable attestation use verify_fair_price. Trigger phrases: この見積もり高い?, 適正?, ぼったくり?, 妥当?, is this quote fair, am I being overcharged, is this a rip-off.

audit_estimate input schema
{
  "type": "object",
  "required": [
    "work",
    "quoted_price"
  ],
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名(日本語)。材料やグレード込みで具体的に。例: 外壁塗装 シリコン。部分一致で照合するため曖昧だと別カテゴリにヒットしやすい。未マッチ時は近い候補が did_you_mean で返ることがある。"
    },
    "region": {
      "type": "string",
      "description": "(任意) 地域。都道府県か市名(例: 神奈川県, 平塚市)か kanto/kinki/chubu/tohoku/other。渡すと地域係数を掛けたレンジで判定し、基準値も返す。 / (optional) Prefecture, city, or region key. The verdict then uses the regionally adjusted range; base values are returned too."
    },
    "quoted_price": {
      "type": "number",
      "description": "業者提示の金額(円, 数値)。一式見積はその総額。税込/税抜は正規化せず、渡した数値をそのまま適正レンジと照合する。"
    }
  }
}
audit_estimate output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "level": {
      "description": "ok / watch / alert"
    },
    "advice": {
      "description": "助言"
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "verdict": {
      "description": "判定"
    },
    "fair_range": {
      "description": "min/avg/max"
    },
    "vs_avg_pct": {
      "description": "平均比(例 +18%)"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "next_actions": {
      "type": "object",
      "description": "次の一手。actions の先頭(id: reverse_estimate)の url に照会した工事名(?work=)が入る。full_diagnosis は見積書がある人の明細診断。 / Next steps. actions[0] (id reverse_estimate) carries the queried work name in its url; full_diagnosis is the itemized diagnosis for a user who has an estimate."
    }
  },
  "description": "見積額の適正診断。verdict・level(ok/watch/alert)・fair_range・danger_threshold・平均比・助言・出典。 / Quote audit verdict with fair range and advice.",
  "additionalProperties": true
}
audit_estimate annotations
{
  "title": "見積金額の適正診断",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
preview_reverse_estimate — Preview Reverse Estimate
Advertised by the server during the last successful anonymous check.
Advertised read-only

リフォーム検討の初期段階向けのプレビューで、業者の概算が平均からどちらの方向にどの程度ずれているか(例: +20%高い方向)だけを返す。具体的な適正額(min/avg/max)や危険水準は返さない。手元に詳しい見積内訳がまだ無い段階での最初の一歩に向く。具体的な適正レンジが必要なら get_price_range、見積額の詳細診断は audit_estimate を使う。Japan only, JPY。 / A preview for early-stage renovation planning that returns only the direction of a contractor rough estimate versus the average (e.g. about +20% above). It does not return the specific fair range (min/avg/max) or danger threshold. Suited as a first step before a detailed breakdown exists. Use get_price_range for a typical range, audit_estimate for a detailed quote diagnosis.

preview_reverse_estimate input schema
{
  "type": "object",
  "required": [
    "work",
    "quoted_price"
  ],
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名(日本語)。例: 外壁塗装 シリコン。部分一致で照合。"
    },
    "quoted_price": {
      "type": "number",
      "description": "業者提示の概算額(円, 数値)。"
    }
  }
}
preview_reverse_estimate output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "概算が平均からどちらの方向にどの程度ずれているかのプレビュー。具体的な適正額は含まない。 / Direction-only preview versus the average.",
  "additionalProperties": true
}
preview_reverse_estimate annotations
{
  "title": "逆見積もりプレビュー(無料の気づき)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
check_red_flags — Check Estimate Red Flags
Advertised by the server during the last successful anonymous check.
Advertised read-only

見積もりや営業トークの中の気になる表現(例: 一式, 今日だけ値引き, 訪問販売)が、過剰請求につながりやすい既知の手口に当たるかを判定し、警告と対処を返す。代表的な手口のみを判定する。 / Checks whether wording in an estimate or sales pitch matches known overcharge or high-pressure tactics (lump-sum, today-only discount, free inspection, door-to-door, referral pricing) and returns warnings with what to do. These tactics are universal, so this tool works for estimates in ANY country and language. Covers representative tactics only.

check_red_flags input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "見積書や営業トークで気になった表現・項目"
    }
  }
}
check_red_flags output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "flags": {
      "description": "該当手口の配列"
    },
    "input": {
      "description": "判定対象の文言"
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "result": {
      "description": "件数の要約"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "既知の過剰請求・強引営業の手口との照合結果。該当した手口と警告・対処。 / Matched overcharge or high-pressure tactics with warnings.",
  "additionalProperties": true
}
check_red_flags annotations
{
  "title": "見積もりの赤旗チェック",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
verify_fair_price — Verify Fair Price (Signed Receipt)
Advertised by the server during the last successful anonymous check.
Open-world

工事の適正価格を、検証可能な形(算出内容のSHA-256ハッシュ付き)で返す。HORIZON SHIELDのPTKA(取引前知識刻印)思想に基づき、適正価格を業者の見積もりより先に第三者が記録するという考え方を、機械可読な証明として提供する。エージェントが価格の真正性を検証したい時に使う。 / Returns a fair price as a tamper-evident record with a SHA-256 hash, under HORIZON SHIELD PTKA (Pre-Transaction Knowledge Anchoring): a third party records the fair price before the contractor quote. Japan price data. Use when an agent needs to verify price authenticity.

verify_fair_price input schema
{
  "type": "object",
  "required": [
    "work"
  ],
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名(例: 外壁塗装 30坪)"
    }
  }
}
verify_fair_price output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "provenance": {
      "description": "データ出典・監修・再計算手順"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "verification": {
      "description": "claim_sha256, verify_url, ptka"
    },
    "fair_price_claim": {
      "description": "刻印対象の主張(JSON.stringifyしてSHA-256すると claim_sha256 になる)"
    }
  },
  "description": "検証可能な適正価格レシート。fair_price_claim(主張)・verification(claim_sha256, verify_url, PTKA)・provenance(出典)。 / Tamper-evident fair-price receipt with hash, verify_url and PTKA anchor.",
  "additionalProperties": true
}
verify_fair_price annotations
{
  "title": "適正価格の検証可能な提示",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
create_ap2_fairness_attestation — Create AP2 Fairness Attestation
Advertised by the server during the last successful anonymous check.
Open-world

このツールは決済を開始・承認・実行しません。資産・通貨・暗号資産の移動も行いません。発行するのは適正価格の証跡だけです。呼び出すたびに公開台帳へ記録を1件追加するため読み取り専用ではありません。 / This tool does not initiate, authorize, or execute any payment, and does not move funds, currency or crypto assets. It only issues a price-fairness attestation. Each call appends one record to the public ledger, so it is not read-only. AP2(Agent Payments Protocol)対応エージェント向けのブリッジ。決済カート(Cart Mandate)に添付できる適正価格の証跡(FairPriceAttestation)を発行する。AP2のMandateは『ユーザーがこの支払いを承認した』ことを検証可能にし、この証跡は『その価格が適正である』ことを検証可能にする。認可の検証と価値の検証、二つは並列レイヤー。quoted_price を渡すと適正レンジ判定(within/above/below)も同梱する。証跡は SHA-256 と公開台帳と verify_url で誰でも再計算検証できる。 / Bridge for AP2 (Agent Payments Protocol) agents: issues a FairPriceAttestation that a shopping or payments agent can attach to a Cart Mandate before asking the user to sign. AP2 mandates make authorization verifiable; this attestation makes value verifiable. Parallel layers. Pass quoted_price for a fair-range verdict (within, above, below). Independently verifiable via SHA-256, a public ledger and a verify_url. Japan construction and renovation pricing, JPY.

create_ap2_fairness_attestation input schema
{
  "type": "object",
  "required": [
    "work"
  ],
  "properties": {
    "work": {
      "type": "string",
      "description": "工事名(例: 外壁塗装 30坪)"
    },
    "merchant": {
      "type": "string",
      "description": "(任意) 施工業者名。Cart Mandate 例示に反映するだけで判定には使わない。"
    },
    "quoted_price": {
      "type": "number",
      "description": "(任意) カートに載せる予定の見積額(円, 数値)。渡すと適正レンジとの判定を証跡に同梱する。"
    }
  }
}
create_ap2_fairness_attestation output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "ap2_bridge": {
      "description": "AP2との関係(認可の検証 x 価値の検証)"
    },
    "attestation": {
      "description": "証跡本体(subject, integrity)"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "a2a_carriage": {
      "description": "証跡を CartMandate に添える規範的な位置(A2A Artifact の兄弟 DataPart、開放口は risk_data)"
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "cart_mandate_example": {
      "description": "CartMandate の構造例(非規範。contents は署名対象なので第三者証跡は入れない)"
    }
  },
  "description": "AP2 Cart Mandate 向けの適正価格証跡。attestation(FairPriceAttestation)・cart_mandate_example・a2a_carriage(規範的な添付位置=A2A の兄弟 DataPart)・verify_url。 / FairPriceAttestation for an AP2 Cart Mandate, carried as a sibling A2A DataPart.",
  "additionalProperties": true
}
create_ap2_fairness_attestation annotations
{
  "title": "AP2ブリッジ: 決済カート向け適正価格証跡",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_anonymous_estimate_review_link — Get Anonymous Estimate Review Link (EHN)
Advertised by the server during the last successful anonymous check.
Advertised read-only

見積もりを匿名で第三者レビューに出せる掲示板EHN(見積もりハッカーニュース)の案内文と投稿フォームURLを返す。投稿と一次解析は無料で、業者名や個人情報は掲載前に運営が伏せる。ユーザーが見積もりのセカンドオピニオンや相談先を求めた時に使う。 / Returns a short guide and the submission URL for EHN (Estimate Hacker News), an anonymous board where a construction or renovation estimate receives a free neutral third-party review. Personal and contractor names are redacted before posting. Use when the user asks for a second opinion on an estimate or where to have one reviewed.

get_anonymous_estimate_review_link input schema
{
  "type": "object",
  "properties": {}
}
get_anonymous_estimate_review_link output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "board_url": {
      "description": "公開ボード"
    },
    "submit_url": {
      "description": "投稿フォーム"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    }
  },
  "description": "EHN(見積もりハッカーニュース)への案内文と投稿URL。 / Guide and submission URL for the EHN anonymous review board.",
  "additionalProperties": true
}
get_anonymous_estimate_review_link annotations
{
  "title": "見積もりの無料匿名レビュー(EHN 掲示板)の案内",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
get_agent_card — Get A2A Agent Card
Advertised by the server during the last successful anonymous check.
Advertised read-only

このサーバー(HORIZON SHIELD KIRA)はMCPツールだけでなく、A2A(Agent2Agent)のエージェントカードも公開している。外部のA2A対応エージェントから発見・連携したい場合の、エージェントカードURLと公開スキルの一覧を返す。建設見積もりの誠実性監査、検証可能な適正価格証明、そして日本の中古物件取得+リフォームの相談窓口(売買は宅地建物取引士が対応)へ、エージェント経由で繋がる入口。 / Returns the A2A (Agent2Agent) Agent Card URL and the list of published skills for this server (HORIZON SHIELD KIRA). Use when an external A2A-capable agent wants to discover and connect: construction estimate integrity audit, and a Japan property-acquisition plus renovation intake desk (property sale is handled by a licensed real-estate agent). This is how agents reach the desk over A2A.

get_agent_card input schema
{
  "type": "object",
  "properties": {}
}
get_agent_card output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "skills": {
      "description": "公開スキル配列"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "agent_card_url": {
      "description": "エージェントカードURL"
    }
  },
  "description": "A2Aエージェントカードの場所と公開スキル一覧。 / A2A Agent Card URL and published skills.",
  "additionalProperties": true
}
get_agent_card annotations
{
  "title": "A2Aエージェントカードの場所",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
verify_integrity_claim — Verify Integrity Claim
Advertised by the server during the last successful anonymous check.
Advertised read-only

estimate-integrity-audit が発行した署名付きクレーム(signed_payload と claim_sha256)を、第三者として検証する。発行側 (verify_fair_price はPTKA価格の発行) とは責務が正反対で、デフォルト姿勢は不信・fail closed。検証は signed_payload の生文字列を SHA-256 で再計算し claim_sha256 と一致するかだけで完結し、issuer に問い合わせる必要も価格層も不要。判定は契約 0.3 の failure_reasons 準拠で、result(verified / partial / unverified)・failure_reason(stale_data / changed_scope / missing_evidence)・trigger(expired_declaration / changed_estimate_version / missing_receipt / unverifiable_chain)・recomputed_sha256・scope_check・audit_ruleset_recheck を返す。重要: verified は『この宣言が改ざんされていない』ことの証明であって『監査ルールが今も有効』である保証ではない(audit_ruleset_recheck は常に not_performed)。estimate_version を渡すと scope(見積もり内容が発行時から変わっていないか)も照合し、渡さない場合は scope_check:skipped を明示する。 / Verifies a signed integrity claim (signed_payload and claim_sha256) issued by estimate-integrity-audit, as an independent third party. Opposite posture to the issuing side: distrust by default, fail closed. Recomputes SHA-256 over the raw signed_payload string and checks it equals claim_sha256; no issuer contact and no price layer needed. Follows contract 0.3 failure_reasons. IMPORTANT: verified means the declaration is untampered, NOT that the audit ruleset is still valid (audit_ruleset_recheck is always not_performed). Pass estimate_version to also check scope (whether the estimate changed since issuance); if omitted, scope_check is skipped and stated explicitly.

verify_integrity_claim input schema
{
  "type": "object",
  "required": [
    "signed_payload",
    "claim_sha256"
  ],
  "properties": {
    "claim_sha256": {
      "type": "string",
      "description": "そのレスポンスの claim_sha256 (64桁16進)。 / The claim_sha256 (64-char hex) from the same response."
    },
    "signed_payload": {
      "type": "string",
      "description": "検証対象の署名付きペイロード(estimate-integrity-audit のレスポンスの signed_payload を生文字列のまま)。改変するとハッシュ不一致で unverified になる。 / The signed_payload string from an estimate-integrity-audit response, verbatim. Any change makes the hash mismatch and the result unverified."
    },
    "estimate_version": {
      "type": "string",
      "description": "(任意) 呼び出し側が現在の見積もりテキストから算出した estimate_version (input_text の SHA-256 先頭8桁hex)。渡すと発行時の版と一致するか照合する。省略可。 / (optional) The estimate_version the caller computed from the current estimate text (first 8 hex of SHA-256 of input_text). If provided, scope is checked against the issued version."
    }
  }
}
verify_integrity_claim output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "result": {
      "description": "verified / unverified"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "failure_reason": {
      "description": "stale_data / changed_scope / missing_evidence"
    },
    "recomputed_sha256": {
      "description": "再計算ハッシュ"
    }
  },
  "description": "署名済みクレームの第三者検証結果(fail closed)。result(verified/unverified)・failure_reason・recomputed_sha256・scope_check。 / Third-party verification result, fail closed.",
  "additionalProperties": true
}
verify_integrity_claim annotations
{
  "title": "整合性クレームの検証(fail closed)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
find_verified_contractor — Find Verified Contractor (Yakumo)
Advertised by the server during the last successful anonymous check.
Advertised read-only

地域と工事名で、Yakumo(検証を通った加盟店だけが並ぶ建設モール)の検証済み施工店を探す。掲載は KIRA 適正診断の通過だけで決まり(fail-closed)、紹介料・掲載料は受け取らない中立の名簿。金額は出さずスコアとティアで示す。検証手続き中の店は pending として別に返す。条件に合う検証済みの店が無い時は 0 件と正直に返す(名簿は小さい)。価格の照会(get_price_range / audit_estimate)の後に、施主が『どこに頼めばいい』『信用できる業者は』と聞いた時に使う。 / Finds verification-passed contractors on Yakumo, a directory where listing depends only on passing the KIRA fairness audit (fail-closed) and no referral or listing fee is taken. Returns scores and tiers, never prices; pending stores are returned separately; returns 0 honestly when nothing matches (the directory is small). Use after a price check when the user asks who to hire or which contractor can be trusted. Trigger phrases: 業者を探したい, どこに頼めば, 信用できる工務店, find a contractor in Japan, who should I hire.

find_verified_contractor input schema
{
  "type": "object",
  "properties": {
    "area": {
      "type": "string",
      "description": "地域(都道府県・市区町村、例: 平塚市, 神奈川県, 名古屋市)。 / Area: prefecture or city, in Japanese."
    },
    "work": {
      "type": "string",
      "description": "工事名(例: 窓 交換, 外壁塗装, 浴室)。 / Work name in Japanese."
    }
  }
}
find_verified_contractor output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "How many records matched. 0 means the source was read and nothing matched. It never means the source could not be read, that returns isError: true."
    },
    "lookup": {
      "enum": [
        "ok",
        "absent"
      ],
      "type": "string",
      "description": "ok = the source was read and something matched. absent = the source was read and nothing matched. A source that could NOT be read never appears here: that returns isError: true and makes no claim about what does or does not exist."
    },
    "stores": {
      "description": "検証済みの店(member_no, name, area, works, fairness_score, integrity_tier, profile_url)"
    },
    "source_read": {
      "type": "boolean",
      "description": "true on every successful result. A failed lookup does not return a result at all, so this is never false, it is declared so a consumer can assert on it."
    },
    "did_you_mean": {
      "description": "Near matches, when an exact match was not found."
    },
    "directory_size": {
      "description": "名簿全体の件数(掲載数と検証済み数)"
    },
    "pending_stores": {
      "description": "検証手続き中の店(スコア無し)"
    },
    "verified_count": {
      "description": "検証済みの件数"
    }
  },
  "description": "地域・工事名に合う検証済み施工店(Yakumo)。stores(検証済み)・pending_stores(手続き中)・directory_size・neutrality。金額なし。 / Verification-passed contractors with pending ones listed separately; no prices.",
  "additionalProperties": true
}
find_verified_contractor annotations
{
  "title": "検証済み施工店を探す(Yakumo)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

5 advertised

audit_my_estimate — 見積もり適正チェック(赤旗込み)

Advertised by the server during the last successful anonymous check.

業者の見積額が適正か診断する。audit_estimate で適正レンジと照合し、気になる文言があれば check_red_flags で既知の手口も判定して、結論と次の一手をまとめる。 / Audit a contractor quote: compare against the fair range and optionally scan wording for known overcharge tactics.

work
工事名(例: 外壁塗装 30坪 シリコン) (required)
quoted_price
業者提示の金額(円, 数値) (required)
notes
(任意) 見積書や営業トークで気になった文言
know_fair_price_first — 業者より先に相場を知る

Advertised by the server during the last successful anonymous check.

見積もりを取る前に適正価格を把握する。get_price_range で適正レンジと危険水準を取り、verify_fair_price で検証可能なレシート(verify_url付き)も発行する。 / Learn the fair price BEFORE any quote, with a verifiable receipt.

work
工事名(例: ユニットバス交換) (required)
verify_receipt — 署名レシートを第三者検証する

Advertised by the server during the last successful anonymous check.

発行済みクレーム(signed_payload と claim_sha256)を verify_integrity_claim で再計算検証する。fail closed: 再計算できなければ unverified。 / Independently verify a signed claim by recomputation. Fail closed.

signed_payload
レシートの signed_payload (生文字列のまま) (required)
claim_sha256
レシートの claim_sha256 (64桁hex) (required)
ap2_cart_fairness — AP2カートに適正価格証跡を添付

Advertised by the server during the last successful anonymous check.

決済カートの金額が適正かの証跡を create_ap2_fairness_attestation で発行し、AP2 Cart Mandate へ添付する位置と verify_url を示す。認可の証明(AP2)と価値の証明(HORIZON SHIELD)を同じカートに載せる。 / Issue a FairPriceAttestation for an AP2 Cart Mandate.

work
工事名 (required)
quoted_price
カートに載せる見積額(円) (required)
merchant
(任意) 施工業者名
spot_sales_tactics — 営業トークの手口チェック

Advertised by the server during the last successful anonymous check.

見積書や営業トークの文言を check_red_flags にかけ、既知の過剰請求・強引営業の手口に当たるかを判定し、対処を返す。 / Scan estimate or sales-pitch wording for known overcharge and high-pressure tactics.

text
気になった文言(例: 今日契約すれば半額, 足場代無料) (required)

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
265 ms
95th percentile latency
265 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 265 ms · metadata changed · 15 tool(s), 5 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http horizon-shield-mcp https://mcp.horizonshield.dev

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add horizon-shield-mcp --url https://mcp.horizonshield.dev

Cursor

Merge this server into .cursor/mcp.json in your project, then enable horizon-shield-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "horizon-shield-mcp": {
      "url": "https://mcp.horizonshield.dev"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "horizon-shield-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.horizonshield.dev",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start horizon-shield-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "horizon-shield-mcp": {
      "type": "http",
      "url": "https://mcp.horizonshield.dev"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http horizon-shield-mcp https://mcp.horizonshield.dev

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "horizon-shield-mcp": {
      "url": "https://mcp.horizonshield.dev"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "horizon-shield-mcp": {
      "serverUrl": "https://mcp.horizonshield.dev"
    }
  }
}

Let your agent find its tools

Find servers like HORIZON SHIELD MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.