MCP-Server

HORIZON SHIELD: construction and renovation estimate auditor

io.github.ogasurfproject-jpg/horizon-shield
Immobilien Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Audits Japanese construction and renovation estimates against fair-price ranges, identifies red flags, verifies pricing claims, and finds verified contractors.

audit_estimate
Audit Estimate Against Fair Price
業者が提示した見積金額が適正かを、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.
Nur Lesen
Eingabeschema
{'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': '業者提示の金額(円, 数値)。一式見積はその総額。税込/税抜は正規化せず、渡した数値をそのまま適正レンジと照合する。'}}}
Ausgabeschema
{'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.'}}, 'description': '見積額の適正診断。verdict・level(ok/watch/alert)・fair_range・danger_threshold・平均比・助言・出典。 / Quote audit verdict with fair range and advice.', 'additionalProperties': True}
check_red_flags
Check Estimate Red Flags
見積もりや営業トークの中の気になる表現(例: 一式, 今日だけ値引き, 訪問販売)が、過剰請求につながりやすい既知の手口に当たるかを判定し、警告と対処を返す。代表的な手口のみを判定する。 / 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.
Nur Lesen
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': '見積書や営業トークで気になった表現・項目'}}}
Ausgabeschema
{'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}
compare_jccdb_regions
Compare JCCDB Values Across Regions (latest)
品目と規格で、地域ごとの最新時点の値を並べ、最小・中央・最大と状態別の件数を返す。規格・単位・値の種類が同じものだけを比べる(普通と高炉は別の組)。中央値はこのサービスの計算(computed:true)。例: query='生コンクリート', spec='24-8-25(20)', layer='material', normalize='namacon'(局ごとの規格の書き方の違いを越えて束ねる)。 / Latest value per region for an item and spec, with min, median (computed) and max and counts by price status; only identical spec, unit and basis are compared.
Nur Lesen
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'spec': {'type': 'string', 'description': '規格(例: 21-8-25(20))。 / Specification.'}, 'layer': {'enum': ['material', 'labor', 'work', 'equipment', 'index', 'wage', 'bid_item', 'cost_sqft', 'spending', 'house_price', 'cost_limit'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'description': '品目名。 / Item name.'}, 'country': {'enum': ['JP', 'US'], 'type': 'string'}, 'normalize': {'enum': ['exact', 'namacon'], 'type': 'string', 'description': 'exact(既定: 規格の文字が同じものだけ)/ namacon(生コンの規格を局をまたいで束ねる: セメント・呼び強度-スランプ-骨材・水セメント比・単位セメント量)。 / namacon groups ready-mix concrete specs across bureaus.'}}}
Ausgabeschema
{'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.'}, 'groups': {'description': '規格・単位・値の種類ごとの組(最小・中央・最大) / groups with min, median, max'}, '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.'}, 'by_status': {'description': '状態別の件数 / counts by status'}, '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.'}, 'computed_note': {'description': '計算した値の説明 / computed fields'}}, 'description': '地域ごとの最新の値の比較。 / Latest value per region.', 'additionalProperties': True}
create_ap2_fairness_attestation
Create AP2 Fairness Attestation
このツールは決済を開始・承認・実行しません。資産・通貨・暗号資産の移動も行いません。発行するのは適正価格の証跡だけです。呼び出すたびに公開台帳へ記録を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.
Eingabeschema
{'type': 'object', 'required': ['work'], 'properties': {'work': {'type': 'string', 'description': '工事名(例: 外壁塗装 30坪)'}, 'merchant': {'type': 'string', 'description': '(任意) 施工業者名。Cart Mandate 例示に反映するだけで判定には使わない。'}, 'quoted_price': {'type': 'number', 'description': '(任意) カートに載せる予定の見積額(円, 数値)。渡すと適正レンジとの判定を証跡に同梱する。'}}}
Ausgabeschema
{'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}
find_verified_contractor
Find Verified Contractor (Yakumo)
地域と工事名で、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.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'area': {'type': 'string', 'description': '地域(都道府県・市区町村、例: 平塚市, 神奈川県, 名古屋市)。 / Area: prefecture or city, in Japanese.'}, 'work': {'type': 'string', 'description': '工事名(例: 窓 交換, 外壁塗装, 浴室)。 / Work name in Japanese.'}}}
Ausgabeschema
{'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}
get_agent_card
Get A2A Agent Card
このサーバー(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.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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_estimate_reading_guide
Get Estimate Reading Guide
受け取ったリフォーム・建設見積もりが適正かを見分けるための原則(諸経費の適正比率、『一式』表記の扱い、営業手口の見抜き方)を返す。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.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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_fair_price_sources
Get Fair Price Data Sources
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.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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_jccdb_coverage
Get JCCDB Observation Coverage (what exists, what does not)
JCCDB の観測層に何がどこまであるかを返す: 国 x 種類(layer) x 出典の件数、値のある件数、状態別、出典の時点。0 行の組み合わせは absent に『無い(取り込んでいない)』と明記する。答える前に、その国・種類のデータがあるかをここで確かめる。 / What the JCCDB observation layer holds: rows per country x layer x source, priced rows, status counts and source periods; empty combinations are listed as absent (not ingested).
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'geo': {'type': 'string', 'description': '地域(都道府県・州)。 / Region.'}, 'layer': {'enum': ['material', 'labor', 'work', 'equipment', 'index', 'wage', 'bid_item', 'cost_sqft', 'spending', 'house_price', 'cost_limit'], 'type': 'string'}, 'detail': {'type': 'boolean', 'description': 'true で出典ごとの行も返す(既定は要約: layer ごとの件数と出典の系統の上位 5。米国の非公開の層の件数も付く)。 / true for per-source rows; the default is a summary.'}, 'country': {'enum': ['JP', 'US'], 'type': 'string'}}}
Ausgabeschema
{'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.'}, 'absent': {'description': '無い組み合わせ / combinations not ingested'}, '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.'}, 'matrix': {'description': '国 x 種類 x 出典の件数 / rows by country, layer and source'}, 'total_rows': {'description': '行数 / total rows'}, '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': '観測層に何があるか。 / What the observation layers hold.', 'additionalProperties': True}
get_jccdb_dataset_info
Get JCCDB Dataset Info
日本の建設費オープンデータベース(JCCDB)のメタデータ・規模・ライセンス・ダウンロードリンク・引用情報を返す。建設費の一次データ源を探している時に使う。 / Returns metadata, scale, license, download links and citation for the Japan Construction Cost Database (JCCDB), an open dataset of 425,765 records in v5.0: the item catalogue of 95,403 Japanese construction line items (43,090 verified + 52,313 extended, unchanged since v4.0) and 330,362 source-cited observations. Use when looking for a primary construction-cost data source.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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_index_series
Get Construction Cost Index Series with Year-over-Year Change
建設費の指数(NHCCI、PPI、建設工事費デフレーター等)の系列を期間で返し、前年同期比を添える。前年同期比はこのサービスが計算した値(computed:true)で、原本には無い。query も source_id も無いときは系列の一覧。例: query='NHCCI', from='2020Q1'。 / Construction cost index series over a period with year-over-year change computed by this service (computed:true). Without query or source_id, lists the series.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'to': {'type': 'string', 'description': '終わり(含む)。 / End period (inclusive).'}, 'from': {'type': 'string', 'description': '始め(2020, 2020Q1, 2020-01, FY2020)。 / Start period.'}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'description': '系列名(例: NHCCI)。 / Series name.'}, 'country': {'enum': ['JP', 'US'], 'type': 'string'}, 'source_id': {'type': 'string'}}}
Ausgabeschema
{'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.'}, 'series': {'description': '系列(時点と値、前年同期比は computed:true) / series with computed year-over-year'}, 'yoy_note': {'description': '前年同期比の説明 / year-over-year note'}, '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': '建設費の指数の系列。 / Construction cost index series.', 'additionalProperties': True}
get_jccdb_labor_rate
Get Public-Works Design Labor Rate (Japan)
国交省の公共工事設計労務単価(47都道府県 x 50職種、所定労働時間内8時間あたりの賃金)を引く。既定は地域ごとの最新の時点、history:true で年ごとの系列。例: pref='奈良県', job='大工'。 / MLIT public-works design labor rates by prefecture and trade (wage per 8 hours); latest by default, yearly series with history:true.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'job': {'type': 'string', 'description': '職種(例: 大工, 左官, 特殊作業員)。 / Trade in Japanese.'}, 'pref': {'type': 'string', 'description': '都道府県。 / Prefecture.'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1}, 'history': {'type': 'boolean', 'description': 'true で年ごとの系列。 / true for the yearly series.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': '都道府県 x 職種の賃金(8 時間あたり) / wage per 8 hours by prefecture and trade'}, '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.'}, 'periods': {'description': '時点 / periods'}, '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.'}, 'sources_used': {'description': '出典 / sources'}}, 'description': '公共工事設計労務単価。 / MLIT public-works design labor rates.', 'additionalProperties': True}
get_jccdb_observations
Get JCCDB Observations (region, date, price status; Japan and U.S.)
品目が『どの地域・地区で・いつ・いくらで(または非公開の理由)』公的資料に載っているかを返す(日本と米国)。値は再配布を許す出典のときだけ入り、各行に license・attribution・evidence_url が付く。県が刊行物単価を使って値を公開していない地区は publication_based_not_public と返す(欠落ではなく事実)。例: query='生コンクリート', pref='奈良県'。公共工事の設計単価であり、リフォームの見積単価ではない。 / Region, date and price status of an item in Japanese and U.S. public documents. Values only where the licence allows redistribution; every row carries licence, attribution and evidence URL; cells where the public body uses commercial price publications are reported as such, not guessed.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'geo': {'type': 'string', 'description': '地域: 都道府県名・JIS コード(29, JP-29)、州名・略号・FIPS(California, CA, US-06)。 / Region: prefecture name or JIS code, U.S. state name, abbreviation or FIPS.'}, 'pref': {'type': 'string', 'description': '都道府県(奈良県 / 奈良 / nara)。 / Prefecture.'}, 'layer': {'enum': ['material', 'labor', 'work', 'equipment', 'index', 'wage', 'bid_item', 'cost_sqft', 'spending', 'house_price', 'cost_limit'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'query': {'type': 'string', 'description': '品目名(例: 生コンクリート)。 / Item name.'}, 'offset': {'type': 'integer', 'minimum': 0}, 'period': {'type': 'string', 'description': '時点(2026, 2026-09, 2025Q4, FY2025)。 / Period.'}, 'status': {'enum': ['published_pdl', 'published_cc_by', 'public_domain', 'published_open_terms', 'published_restricted_not_copied', 'publication_based_not_public', 'not_set'], 'type': 'string'}, 'country': {'enum': ['JP', 'US'], 'type': 'string'}, 'source_id': {'type': 'string', 'description': '出典 ID(get_jccdb_coverage で分かる)。 / Source id.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': '1 行 1 観測(値・単位・状態・license・attribution・evidence_url) / one row per observation'}, '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.'}, 'by_status': {'description': '状態別の件数 / counts by price status'}, 'next_offset': {'description': '続きの offset / next page'}, '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.'}, 'license_note': {'description': '利用条件 / licence note'}}, 'description': '地域・時点・値(か非公開の理由)の観測。 / Observations by region and date, with price status.', 'additionalProperties': True}
get_jccdb_work_unit_price
Get Public-Works Unit Prices for Work Items (Japan)
工事の単価(材料・労務・機械の複合。施工パッケージ型積算の標準単価など)を引き、構成比の行を同じパッケージの行に添えて返す。公共土木の積算単価であり、リフォームの見積単価ではない。例: query='掘削', pref='東京都'。 / Public-works unit prices for work items (materials, labor and equipment combined), with composition-ratio rows attached to their package. Not renovation quote prices.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'pref': {'type': 'string', 'description': '都道府県。 / Prefecture.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'query': {'type': 'string', 'description': '工種・品目(例: 掘削)。 / Work item.'}, 'offset': {'type': 'integer', 'minimum': 0}, 'period': {'type': 'string'}}}
Ausgabeschema
{'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.'}, 'packages': {'description': '施工パッケージの単価 / unit price packages'}, '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.'}, 'composition_rows_attached': {'description': '添えた構成比の行数 / attached composition rows'}}, 'description': '工事の単価と構成比。 / Public-works unit prices with composition ratios.', 'additionalProperties': True}
get_price_range
Get Fair Price Range
工事名・キーワードで、HORIZON SHIELDが実務監修する適正価格レンジ(最安min/平均avg/最高max)と、それを超えたら過剰請求を疑う危険水準(danger)、単位・価格動向・実務解説を返す。建設・リフォーム費用が適正か数値で確かめたい時に使う(例: 外壁塗装, 給湯器, ユニットバス, クロス)。 / 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. Trigger phrases: 相場, 適正価格, いくらかかる, 高い?, how much does this cost in Japan, is this price normal, what should I expect to pay.
Nur Lesen
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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.'}, 'danger_threshold': {'description': '危険水準'}}, 'description': '適正価格レンジ(min/avg/max)・過剰請求の危険水準・単位・価格動向・実務解説。 / Fair price range with overcharge danger threshold.', 'additionalProperties': True}
get_us_area_factor
Get U.S. Location Cost Factors (DoD Area Cost Factor, USACE state adjustment)
米国の場所ごとの建設費の係数を引く: 国防総省の Area Cost Factor と Sustainment ACF(軍の施設ごと、96 基準都市の平均 = 1.00)と、陸軍工兵隊 CWCCIS の州の調整係数(現行値と年ごと)。geo は州・郡・ZIP(zip:28533)・市(Cherry Point, NC)・国外の国(country:JP)。中央値は computed:true。予算用の係数で、見積の良し悪しを判定する係数ではない。 / U.S. location cost factors: DoD Area Cost Factors by installation (96 base-city average = 1.00) and USACE CWCCIS state adjustment factors; geo accepts state, county, ZIP, city or an overseas country. Budgeting factors, not a test of whether a quote is fair.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'geo': {'type': 'string', 'description': '州・郡・ZIP(zip:28533)・市(Cherry Point, NC)・国外(country:JP)。 / State, county, ZIP, city or overseas country.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'minimum': 0}, 'installation': {'type': 'string', 'description': '施設の名前(例: Fort Bragg)。 / Installation name.'}, 'include_history': {'type': 'boolean'}}}
Ausgabeschema
{'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.'}, 'sites': {'description': '施設ごとの係数 / factors by installation'}, '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.'}, 'acf_stats': {'description': '係数の要約 / factor summary'}, '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.'}, 'state_adjustment_factor': {'description': 'USACE の州の係数 / USACE state factor'}}, 'description': '米国の場所ごとの建設費の係数。 / U.S. location cost factors.', 'additionalProperties': True}
get_us_construction_prices
Get U.S. Construction Prices (all layers: prevailing wages, wages, bids, equipment, permits, indexes, cost limits)
米国の公的な建設費データベースを layer・地域・時点・品目で引く: labor(Davis-Bacon の法定賃金)、wage(BLS OEWS・QCEW の賃金)、work(DoD・FTA の単価)、equipment(FEMA・USACE の機械損料)、index(PPI・NHCCI・CWCCIS・DoD の地域係数)、spending(Census の工事支出と建築許可、市の許可)、cost_sqft(面積あたり工事費)、cost_limit(HUD の 1 戸あたり上限)、bid_item(州 DOT の入札単価)、house_price、material。geo は州・郡 FIPS(county:06037)・都市圏(cbsa:31080)・市(Austin, TX)。州を指定すると全国一律の行と USACE の地域の行も添える。1m2 あたりへの換算は computed:true。住宅リフォームの見積単価ではない。 / The U.S. public construction cost database by layer, region (state, county FIPS, CBSA, place), period and item: Davis-Bacon prevailing wages, BLS wages, public unit costs, equipment rates, permits and spending, indexes and area factors, HUD cost limits and state DOT bid prices. National and USACE regional rows are added for a state; per-m2 conversions are computed:true. Not residential remodeling quotes.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'geo': {'type': 'string', 'description': '州・郡 FIPS(county:06037)・都市圏 CBSA(cbsa:31080)・市(Austin, TX)・郡の名前(Los Angeles County, CA)。 / State, county FIPS, CBSA, place or county name.'}, 'layer': {'enum': ['labor', 'wage', 'work', 'equipment', 'index', 'spending', 'cost_sqft', 'cost_limit', 'bid_item', 'house_price', 'material'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'query': {'type': 'string', 'description': '品目・職種(英語。例: excavation, carpenters)。 / Item or occupation in English.'}, 'state': {'type': 'string', 'description': '州名・略号・FIPS(California, CA, 06, カリフォルニア)。 / State name, abbreviation or FIPS.'}, 'offset': {'type': 'integer', 'minimum': 0}, 'period': {'type': 'string', 'description': '時点(2024, 2025-05, 2025Q4, FY2026)。 / Period.'}, 'source_id': {'type': 'string'}, 'include_national': {'type': 'boolean', 'description': '州を指定したとき全国一律・地域一律の行も返す(既定 true。郡・都市圏・市では既定 false)。 / Include national and regional rows (default true for a state).'}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': '1 行 1 観測 / one row per observation'}, '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.'}, 'by_layer': {'description': '種類別の件数 / counts by layer'}, '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.'}, 'license_note': {'description': '利用条件 / licence note'}}, 'description': '米国の公的な建設費データ(USCCDB)。 / U.S. public construction cost data (USCCDB).', 'additionalProperties': True}
get_us_contract_discounts
Get U.S. Public Contract Discount Rates off List Price (kake ratio)
州と共同購買の契約書が公開している、定価からの値引き率を返す(ワシントン州 DES 23623 配管部材・11121 電気資材、NASPO ValuePoint の資材 MRO の Grainger・Fastenal・MSC・Lawson・HD Supply、Home Depot の塗料)。掛け率 = 1 - 値引き率(computed:true)。定価への上乗せ(Over MSRP)と業者の目録からの値引き(Catalog Off)は別の列で、掛け率には入れない。率は上限で、定価の基準は行ごとに違う。例: query='eaton breakers'。 / Published discount rates off list price in U.S. public contracts (Washington DES plumbing and electrical, NASPO ValuePoint MRO), with kake_ratio = 1 - discount (computed:true). Over-MSRP and catalog-off rows are kept separate. Rates are ceilings; list bases differ by row.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'basis': {'enum': ['MSRP Discount', 'Over MSRP', 'Catalog Off', 'Discount off List Price', 'Discount off shelf price', 'Discount off shelf price (range)', 'Cost Plus', 'N/A', 'See below'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'query': {'type': 'string', 'description': 'メーカー・製品系列・分野・業者の語(英語)。 / Manufacturer, product line, category or vendor words.'}, 'offset': {'type': 'integer', 'minimum': 0}, 'vendor': {'type': 'string'}, 'source_id': {'enum': ['wa-des-23623', 'wa-des-11121', 'naspo-mro-ak'], 'type': 'string'}, 'manufacturer': {'type': 'string'}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': '契約・メーカーごとの値引き率と kake_ratio / discount and kake ratio'}, '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.'}, 'summary_by_vendor': {'description': 'メーカーごとの要約 / summary by vendor'}}, 'description': '米国の公共契約の値引き率。 / Discount rates in U.S. public contracts.', 'additionalProperties': True}
get_us_import_landed_cost
Get U.S. Landed Import Cost by HS Code and Partner Country
米国に輸入される建材と化学品の陸揚げ原価を HS 10 桁で返す(Census の輸入統計 IMDB、月と年初来): 通関価格・CIF・計算上の関税(232 条などの追加関税を含む)・数量・単価・実効の関税率と、相手国の上位(か country で指定の国)。単価と実効の関税率は computed:true。国内の運賃と通関の手数料は入らない。 / Landed cost of U.S. imports of construction materials and chemicals by HS 10-digit code (Census IMDB, month and year to date): customs value, CIF, calculated duty (including Section 232 and other additional duties), quantity, unit cost and effective duty rate (computed), with top partner countries or one country.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'hs': {'type': 'string', 'description': 'HS の頭 2〜10 桁(例 7214 棒鋼)。 / HS code prefix.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'description': '英語の品名。 / Product name in English.'}, 'country': {'type': 'string', 'description': '相手国(英語の国名か Census の国コード 4 桁)。 / Partner country.'}, 'top_countries': {'type': 'integer', 'maximum': 20, 'minimum': 1}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': 'HS 10 桁ごとの CIF・関税・単価 / CIF, duty and unit cost by HS code'}, '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.'}, 'how_to_cite': {'description': '引用の仕方 / how to cite'}, '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': '米国の輸入の陸揚げ原価。 / U.S. landed import cost by HS code.', 'additionalProperties': True}
get_us_permits
Get U.S. Building Permits (counts, valuation, per unit, city quartiles)
米国の建築許可を地域と年で引く: Census Building Permits Survey(州・郡・都市圏・市の棟数・戸数・工事額・1戸あたり)と、市の許可データの申告工事額の分布(件数・合計・中央値・25/75 分位・1 sqft あたり)。工事額は申請者の申告で、契約額でも見積の単価でもない。計算した値は computed:true。例: geo='Austin, TX', year='2024'。 / U.S. building permits by region and year: Census BPS buildings, units, valuation and per-unit values, plus distributions of declared valuations in city permit data (median, quartiles, per sq ft). Declared by applicants; not contract prices or quotes.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'geo': {'type': 'string', 'description': "州・郡(FIPS か 'Multnomah County, OR')・都市圏(cbsa:38900)・市(Austin, TX)。無ければ全国。 / State, county, CBSA or place; national if omitted."}, 'year': {'type': 'string', 'description': '年(2024)。 / Year.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'offset': {'type': 'integer', 'minimum': 0}, 'source': {'enum': ['all', 'bps', 'city'], 'type': 'string'}, 'structure': {'enum': ['1-unit', '2-units', '3-4 units', '5+ units'], 'type': 'string'}}}
Ausgabeschema
{'type': 'object', 'properties': {'bps': {'description': 'Census BPS の棟数・戸数・工事額 / Census BPS'}, '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.'}, 'city_permits': {'description': '市の許可の申告工事額の分布 / city permit valuations'}, 'did_you_mean': {'description': 'Near matches, when an exact match was not found.'}}, 'description': '米国の建築許可。 / U.S. building permits.', 'additionalProperties': True}
get_us_prevailing_wage
Get U.S. Davis-Bacon Prevailing Wages (base and fringe)
米国 Davis-Bacon 法の一般賃金決定(連邦の資金が入る建設工事で払うべき最低の基本時給と付加給付)を、州・郡・職種で引く。1 件ごとに基本時給と付加給付を並べ、決定番号・改訂・公表日・郡の一覧・出典 URL を添える。基本 + 付加給付の合計は computed:true。民間の住宅工事の相場や業者の請求単価ではない。例: state='CA', county='Los Angeles', trade='carpenter'。 / U.S. Davis-Bacon general wage determinations by state, county and trade: base wage and fringe side by side with decision number, revision, publication date and source URL; the total is computed:true. These are minimums for federally funded work, not private market rates.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'state': {'type': 'string', 'description': '州名・略号・FIPS。 / State.'}, 'trade': {'type': 'string', 'description': '職種(英語。例: carpenter, electrician, laborer)。 / Trade in English.'}, 'county': {'type': 'string', 'description': '郡 FIPS 5桁か郡の名前(Los Angeles)。 / County FIPS or name.'}, 'offset': {'type': 'integer', 'minimum': 0}, 'decision': {'type': 'string', 'description': '決定番号(例 CA20260001)。 / Wage determination number.'}, 'construction_type': {'type': 'string', 'description': 'Building / Heavy / Highway / Residential。 / Construction type.'}}}
Ausgabeschema
{'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.'}, 'rates': {'description': '基本時給と付加給付(決定番号・出典つき) / base wage and fringe with decision number'}, '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.'}, 'coverage_note': {'description': '取り込んだ州の範囲 / state coverage'}}, 'description': 'Davis-Bacon の一般賃金決定。 / Davis-Bacon general wage determinations.', 'additionalProperties': True}
get_us_price_chain
Get U.S. Material Price Chain (landed import cost to wholesale, retail and contractor)
米国で建材や化学品が流通の各段でいくらになるかを計算して返す: 輸入の陸揚げ原価(Census の輸入統計、CIF + 関税、232 条などの追加関税を含む)から、卸(業種の平均の粗利率、Census AIES 2024)、小売(直接輸入と卸経由の幅)、元請(Caltrans の材料の上乗せ 15%)まで。HS 10 桁か英語の品名で引く。各行に式・出典の URL と sha256・卸の業種の当て方の確度・BEA 2007 の流通構造との照合が付く。推計(computed:true)で、見積の良し悪しを判定する値ではない。例: query='plywood'、hs='2523290000'(ポルトランドセメント)。 / Estimated U.S. prices along the distribution chain for construction materials and chemicals: landed import cost (Census, CIF plus duty including Section 232) to wholesale (industry-average gross margin, Census AIES 2024), retail (range: direct import vs via wholesale) and contractor (Caltrans materials markup 15%). Look up by HS code or English product name; every row carries the formula, source URLs and hashes, mapping confidence and a BEA 2007 cross-check. Estimates (computed:true), not a verdict on any quote.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'hs': {'type': 'string', 'description': 'HS の頭 2〜10 桁(例 2523 セメント、4412 合板、3917 樹脂管、6907 タイル)。 / HS code prefix.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'description': '英語の品名(例 plywood, portland cement, pvc pipe, ceramic tiles)。 / Product name in English.'}, 'include_thin': {'type': 'boolean', 'description': '取引の薄い品目も入れる(既定は外す)。 / Include thinly traded items.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': '品目ごとの陸揚げ・卸・小売・元請(式・出典・sha256) / landed, wholesale, retail, contractor with formula and sources'}, '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.'}, 'markups': {'description': '元請の上乗せ率(州の交通局の原本) / contractor markups from state DOT originals'}, 'how_to_cite': {'description': '引用の仕方 / how to cite'}, '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': '米国の流通の各段の推計(計算して返す)。 / U.S. distribution-chain estimates, computed on request.', 'additionalProperties': True}
get_us_trade_margins
Get U.S. Wholesale and Retail Gross Margins (Census) and BEA Margin Structure
米国の卸と小売の粗利率を NAICS で返す(Census AWTS 1992〜2022、ARTS 1993〜2022、AIES 2024)。kake_cost_ratio = 1 - 粗利率(売値のうち仕入れ原価の割合)。commodity か include_bea で BEA 2007 の建設業と家計の購入の流通構造(生産者価格・運賃・卸・小売・購入者価格)も。業種の平均で、個々の会社の仕入れ値ではない。例: naics='4233'(建材卸)、naics='444110'(ホームセンター)。 / U.S. wholesale and retail gross margins by NAICS (Census AWTS, ARTS, AIES 2024) with kake_cost_ratio = 1 - margin; optionally the BEA 2007 margin structure. Industry averages, not any firm's cost.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {'year': {'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1}, 'naics': {'type': 'string', 'description': 'NAICS の頭(4233 建材卸、423720 配管・暖房卸、4441 建材小売、444110 ホームセンター)。 / NAICS prefix.'}, 'query': {'type': 'string', 'description': '業種の語(英語。例 plumbing, paint)。 / Industry words in English.'}, 'trade': {'enum': ['wholesale', 'retail'], 'type': 'string'}, 'history': {'type': 'boolean', 'description': 'true で年ごと。 / All years.'}, 'commodity': {'type': 'string', 'description': 'BEA の品目の語(英語。例 cement, lighting)。 / BEA commodity words.'}, 'include_bea': {'type': 'boolean'}}}
Ausgabeschema
{'type': 'object', 'properties': {'rows': {'description': 'NAICS ごとの粗利率と kake_cost_ratio / margins and cost ratio by NAICS'}, '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.'}, 'margin_index': {'description': 'マージン物価指数 / trade-margin price indexes'}}, 'description': '米国の卸と小売の粗利率。 / U.S. wholesale and retail gross margins.', 'additionalProperties': True}
list_cost_categories
List Cost Categories
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.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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}
preview_reverse_estimate
Preview Reverse Estimate
リフォーム検討の初期段階向けのプレビューで、業者の概算が平均からどちらの方向にどの程度ずれているか(例: +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.
Nur Lesen
Eingabeschema
{'type': 'object', 'required': ['work', 'quoted_price'], 'properties': {'work': {'type': 'string', 'description': '工事名(日本語)。例: 外壁塗装 シリコン。部分一致で照合。'}, 'quoted_price': {'type': 'number', 'description': '業者提示の概算額(円, 数値)。'}}}
Ausgabeschema
{'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}
search_cost_category
Search Cost Category
工事名・キーワードで建設費カテゴリを検索する(例: 外壁塗装, 浴室, 給湯器, 雨漏り)。該当カテゴリと整備済みの赤旗件数・優先度を返す。 / 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).
Nur Lesen
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': '工事名やキーワード(日本語)'}}}
Ausgabeschema
{'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_jccdb_items
Search JCCDB Line Items
日本の建設費オープンデータ JCCDB(v5.0 は計425,765件)の品目の目録(95,403)を名前で探す。生コン・異形棒鋼・ヒューム管・側溝など資材や製品、労務の品目が公的資料に実在するかと証拠URLを返す。工事カテゴリ(search_cost_category)に無い資材はこちら。地域・時点・価格は get_jccdb_observations。 / Search the JCCDB item catalogue (95,403 line items of the 425,765 records in v5.0; materials, products, labor) by name; returns whether each exists in a public document, with its evidence URL. Use for materials that are not renovation work categories.
Nur Lesen
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'description': '品目名(日本語。例: 生コンクリート 21-8-25)。 / Item name in Japanese.'}, 'category': {'type': 'string', 'description': '(任意) JCCDB のカテゴリ名で絞る。 / optional JCCDB category.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'count': {'description': '当たった件数 / matches'}, 'items': {'description': '品目(名前・カテゴリ・単位・evidence_url) / line items with evidence URLs'}, '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.'}, 'observations_by_layer': {'description': '観測層にある件数 / observation rows by layer'}}, 'description': 'JCCDB の品目の目録(95,403、v5.0 は観測を含め計425,765件)の名前検索。 / Name search over the JCCDB item catalogue (95,403 line items; v5.0 has 425,765 records including observations).', 'additionalProperties': True}
suggest_ehn
Suggest EHN Review Board
見積もりを匿名で第三者レビューに出せる掲示板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.
Nur Lesen
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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}
verify_fair_price
Verify Fair Price (Signed Receipt)
工事の適正価格を、検証可能な形(算出内容の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.
Eingabeschema
{'type': 'object', 'required': ['work'], 'properties': {'work': {'type': 'string', 'description': '工事名(例: 外壁塗装 30坪)'}}}
Ausgabeschema
{'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_integrity_claim
Verify Integrity Claim
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.
Nur Lesen
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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}
Geändert
search_jccdb_items
29. September 2026 02:56
Geändert
get_jccdb_dataset_info
29. September 2026 02:56
Hinzugefügt
get_us_contract_discounts
27. September 2026 02:47
Hinzugefügt
get_us_trade_margins
27. September 2026 02:47
Hinzugefügt
get_us_import_landed_cost
27. September 2026 02:47
Hinzugefügt
get_us_price_chain
27. September 2026 02:47
Hinzugefügt
get_us_area_factor
27. September 2026 02:47
Hinzugefügt
get_us_permits
27. September 2026 02:47
Hinzugefügt
get_us_prevailing_wage
27. September 2026 02:47
Hinzugefügt
get_jccdb_coverage
27. September 2026 02:47
Hinzugefügt
get_us_construction_prices
27. September 2026 02:47
Hinzugefügt
get_jccdb_index_series
27. September 2026 02:47
Hinzugefügt
get_jccdb_work_unit_price
27. September 2026 02:47
Hinzugefügt
compare_jccdb_regions
27. September 2026 02:47
Hinzugefügt
get_jccdb_labor_rate
27. September 2026 02:47
Hinzugefügt
get_jccdb_observations
27. September 2026 02:47
Hinzugefügt
search_jccdb_items
27. September 2026 02:47
Geändert
create_ap2_fairness_attestation
27. September 2026 02:47
Geändert
verify_fair_price
27. September 2026 02:47
Geändert
create_ap2_fairness_attestation
23. September 2026 02:47
Hinzugefügt
find_verified_contractor
17. September 2026 12:45
Hinzugefügt
verify_integrity_claim
17. September 2026 12:45
Hinzugefügt
get_agent_card
17. September 2026 12:45
Hinzugefügt
suggest_ehn
17. September 2026 12:45
Hinzugefügt
create_ap2_fairness_attestation
17. September 2026 12:45
Hinzugefügt
verify_fair_price
17. September 2026 12:45
Hinzugefügt
check_red_flags
17. September 2026 12:45
Hinzugefügt
preview_reverse_estimate
17. September 2026 12:45
Hinzugefügt
audit_estimate
17. September 2026 12:45
Hinzugefügt
get_price_range
17. September 2026 12:45

Microburbs Australian Property Data

au.com.microburbs/property-data

Provides Australian property, suburb, valuation, sales, rental, zoning, school, risk, geospatial, and census statistics.

Superlógica Condomínios

io.github.mcp-dir/superlogica-mcp

Connects to a condominium ERP for billing, collections, agreements, expenses, bank movements, statements, files, communications, …

DFX Real Estate Intelligence

io.github.Capital-W-Holdings/us-property-parcel-real-estate-debt

Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…

RateAPI — live US mortgage, auto, HELOC, personal & deposit rates

dev.rateapi/mcp

Supplies live US lending and deposit rates, financing comparisons, affordability and amortization calculations, eligibility check…

immobilier

fr.synergieloc/immobilier

Creates, validates, analyzes, and exports French building and property designs as DXF, IFC, BCF, PDFs, visualizations, quantities…

US Company Intelligence for AI Agents (SEC EDGAR, x402)

online.x-402/mcp

Offers pay-per-call web extraction, search and LLM tools plus French company, property, procurement, marketplace and security dat…

lilo Vacation Rentals

io.github.lilo-property/mcp-server

Supports vacation-rental discovery, availability and direct booking, property operations, short-term-rental compliance, guest and…

Rafid Intelligence Network

io.github.iabdullahm/rafid-agent-api

Analyzes Oman properties using rental comparables, yields, costs, and payback metrics, and supports Oman company search, profilin…