Server definition
- Hash
- sha256:556e3a854ddafe8efd7a068e994614419642e4802ea9966126f8f3b00d73c477
- What it is
- What a remote MCP server returned when asked what it offers: 15 tools
The blob, as servednamed by its sha256
{
"instructions": "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 (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.0, 425,765 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.0 の計 425,765 件、米国は USCCDB = United States Construction Cost Database)は専用の口 HORIZON SHIELD Construction Cost Data(https://ccdb.horizonshield.dev/mcp)で引く。品目、地域・時点・出典つきの観測、労務単価、地域の比較、指数、米国の価格・賃金・建築許可・場所の係数・流通の各段の推計があり、各行に出典の URL と利用条件が付く。この口の get_jccdb_dataset_info はデータセットの DOI と規模を返す。公共工事の単価・統計は参照値で、リフォームの見積単価ではない。",
"tools": [
{
"description": "業者が提示した見積金額が適正かを、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.",
"inputSchema": {
"properties": {
"quoted_price": {
"description": "業者提示の金額(円, 数値)。一式見積はその総額。税込/税抜は正規化せず、渡した数値をそのまま適正レンジと照合する。",
"type": "number"
},
"region": {
"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.",
"type": "string"
},
"work": {
"description": "工事名(日本語)。材料やグレード込みで具体的に。例: 外壁塗装 シリコン。部分一致で照合するため曖昧だと別カテゴリにヒットしやすい。未マッチ時は近い候補が did_you_mean で返ることがある。",
"type": "string"
}
},
"required": [
"work",
"quoted_price"
],
"type": "object"
},
"name": "audit_estimate",
"outputSchema": {
"additionalProperties": true,
"description": "見積額の適正診断。verdict・level(ok/watch/alert)・fair_range・danger_threshold・平均比・助言・出典。 / Quote audit verdict with fair range and advice.",
"properties": {
"advice": {
"description": "助言"
},
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"fair_range": {
"description": "min/avg/max"
},
"level": {
"description": "ok / watch / alert"
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
},
"verdict": {
"description": "判定"
},
"vs_avg_pct": {
"description": "平均比(例 +18%)"
}
},
"type": "object"
}
},
{
"description": "見積もりや営業トークの中の気になる表現(例: 一式, 今日だけ値引き, 訪問販売)が、過剰請求につながりやすい既知の手口に当たるかを判定し、警告と対処を返す。代表的な手口のみを判定する。 / 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.",
"inputSchema": {
"properties": {
"text": {
"description": "見積書や営業トークで気になった表現・項目",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "check_red_flags",
"outputSchema": {
"additionalProperties": true,
"description": "既知の過剰請求・強引営業の手口との照合結果。該当した手口と警告・対処。 / Matched overcharge or high-pressure tactics with warnings.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"flags": {
"description": "該当手口の配列"
},
"input": {
"description": "判定対象の文言"
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"result": {
"description": "件数の要約"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "このツールは決済を開始・承認・実行しません。資産・通貨・暗号資産の移動も行いません。発行するのは適正価格の証跡だけです。呼び出すたびに公開台帳へ記録を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.",
"inputSchema": {
"properties": {
"merchant": {
"description": "(任意) 施工業者名。Cart Mandate 例示に反映するだけで判定には使わない。",
"type": "string"
},
"quoted_price": {
"description": "(任意) カートに載せる予定の見積額(円, 数値)。渡すと適正レンジとの判定を証跡に同梱する。",
"type": "number"
},
"work": {
"description": "工事名(例: 外壁塗装 30坪)",
"type": "string"
}
},
"required": [
"work"
],
"type": "object"
},
"name": "create_ap2_fairness_attestation",
"outputSchema": {
"additionalProperties": true,
"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.",
"properties": {
"a2a_carriage": {
"description": "証跡を CartMandate に添える規範的な位置(A2A Artifact の兄弟 DataPart、開放口は risk_data)"
},
"ap2_bridge": {
"description": "AP2との関係(認可の検証 x 価値の検証)"
},
"attestation": {
"description": "証跡本体(subject, integrity)"
},
"cart_mandate_example": {
"description": "CartMandate の構造例(非規範。contents は署名対象なので第三者証跡は入れない)"
},
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "地域と工事名で、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.",
"inputSchema": {
"properties": {
"area": {
"description": "地域(都道府県・市区町村、例: 平塚市, 神奈川県, 名古屋市)。 / Area: prefecture or city, in Japanese.",
"type": "string"
},
"work": {
"description": "工事名(例: 窓 交換, 外壁塗装, 浴室)。 / Work name in Japanese.",
"type": "string"
}
},
"type": "object"
},
"name": "find_verified_contractor",
"outputSchema": {
"additionalProperties": true,
"description": "地域・工事名に合う検証済み施工店(Yakumo)。stores(検証済み)・pending_stores(手続き中)・directory_size・neutrality。金額なし。 / Verification-passed contractors with pending ones listed separately; no prices.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"directory_size": {
"description": "名簿全体の件数(掲載数と検証済み数)"
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"pending_stores": {
"description": "検証手続き中の店(スコア無し)"
},
"source_read": {
"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.",
"type": "boolean"
},
"stores": {
"description": "検証済みの店(member_no, name, area, works, fairness_score, integrity_tier, profile_url)"
},
"verified_count": {
"description": "検証済みの件数"
}
},
"type": "object"
}
},
{
"description": "このサーバー(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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_agent_card",
"outputSchema": {
"additionalProperties": true,
"description": "A2Aエージェントカードの場所と公開スキル一覧。 / A2A Agent Card URL and published skills.",
"properties": {
"agent_card_url": {
"description": "エージェントカードURL"
},
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"skills": {
"description": "公開スキル配列"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "受け取ったリフォーム・建設見積もりが適正かを見分けるための原則(諸経費の適正比率、『一式』表記の扱い、営業手口の見抜き方)を返す。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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_estimate_reading_guide",
"outputSchema": {
"additionalProperties": true,
"description": "見積もりが誠実かを判断する普遍原則(諸経費比率・一式表記・営業手口)。 / Universal principles for judging an estimate.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_fair_price_sources",
"outputSchema": {
"additionalProperties": true,
"description": "相場データ(souba-db)の出典・更新日・地域係数。 / Sources, update date and regional multipliers behind the fair-price data.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "日本の建設費オープンデータベース(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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_jccdb_dataset_info",
"outputSchema": {
"additionalProperties": true,
"description": "JCCDB(日本建設費オープンデータベース)のメタデータ。規模・ライセンス・ダウンロードリンク・引用情報。 / JCCDB dataset metadata: scale, license, links, citation.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "工事名・キーワードで、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.",
"inputSchema": {
"properties": {
"query": {
"description": "工事名やキーワード(日本語)",
"type": "string"
},
"region": {
"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.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "get_price_range",
"outputSchema": {
"additionalProperties": true,
"description": "適正価格レンジ(min/avg/max)・過剰請求の危険水準・単位・価格動向・実務解説。 / Fair price range with overcharge danger threshold.",
"properties": {
"count": {
"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.",
"type": "number"
},
"danger_threshold": {
"description": "危険水準"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"fair_range": {
"description": "適正レンジ"
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
},
"work": {
"description": "工事名"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_cost_categories",
"outputSchema": {
"additionalProperties": true,
"description": "整備済みの建設・リフォーム工事カテゴリ(61種)の一覧。 / The 61 maintained construction and renovation cost categories.",
"properties": {
"categories": {
"description": "カテゴリ配列(id, name, group, priority, red_flags)"
},
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "リフォーム検討の初期段階向けのプレビューで、業者の概算が平均からどちらの方向にどの程度ずれているか(例: +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.",
"inputSchema": {
"properties": {
"quoted_price": {
"description": "業者提示の概算額(円, 数値)。",
"type": "number"
},
"work": {
"description": "工事名(日本語)。例: 外壁塗装 シリコン。部分一致で照合。",
"type": "string"
}
},
"required": [
"work",
"quoted_price"
],
"type": "object"
},
"name": "preview_reverse_estimate",
"outputSchema": {
"additionalProperties": true,
"description": "概算が平均からどちらの方向にどの程度ずれているかのプレビュー。具体的な適正額は含まない。 / Direction-only preview versus the average.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "工事名・キーワードで建設費カテゴリを検索する(例: 外壁塗装, 浴室, 給湯器, 雨漏り)。該当カテゴリと整備済みの赤旗件数・優先度を返す。 / 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).",
"inputSchema": {
"properties": {
"query": {
"description": "工事名やキーワード(日本語)",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_cost_category",
"outputSchema": {
"additionalProperties": true,
"description": "工事名・キーワードに該当したカテゴリと、整備済み赤旗件数・優先度。 / Matched cost category with red-flag count and priority.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "見積もりを匿名で第三者レビューに出せる掲示板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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "suggest_ehn",
"outputSchema": {
"additionalProperties": true,
"description": "EHN(見積もりハッカーニュース)への案内文と投稿URL。 / Guide and submission URL for the EHN anonymous review board.",
"properties": {
"board_url": {
"description": "公開ボード"
},
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"source_read": {
"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.",
"type": "boolean"
},
"submit_url": {
"description": "投稿フォーム"
}
},
"type": "object"
}
},
{
"description": "工事の適正価格を、検証可能な形(算出内容の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.",
"inputSchema": {
"properties": {
"work": {
"description": "工事名(例: 外壁塗装 30坪)",
"type": "string"
}
},
"required": [
"work"
],
"type": "object"
},
"name": "verify_fair_price",
"outputSchema": {
"additionalProperties": true,
"description": "検証可能な適正価格レシート。fair_price_claim(主張)・verification(claim_sha256, verify_url, PTKA)・provenance(出典)。 / Tamper-evident fair-price receipt with hash, verify_url and PTKA anchor.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"fair_price_claim": {
"description": "刻印対象の主張(JSON.stringifyしてSHA-256すると claim_sha256 になる)"
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"provenance": {
"description": "データ出典・監修・再計算手順"
},
"source_read": {
"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.",
"type": "boolean"
},
"verification": {
"description": "claim_sha256, verify_url, ptka"
}
},
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"claim_sha256": {
"description": "そのレスポンスの claim_sha256 (64桁16進)。 / The claim_sha256 (64-char hex) from the same response.",
"type": "string"
},
"estimate_version": {
"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.",
"type": "string"
},
"signed_payload": {
"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.",
"type": "string"
}
},
"required": [
"signed_payload",
"claim_sha256"
],
"type": "object"
},
"name": "verify_integrity_claim",
"outputSchema": {
"additionalProperties": true,
"description": "署名済みクレームの第三者検証結果(fail closed)。result(verified/unverified)・failure_reason・recomputed_sha256・scope_check。 / Third-party verification result, fail closed.",
"properties": {
"count": {
"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.",
"type": "number"
},
"did_you_mean": {
"description": "Near matches, when an exact match was not found."
},
"failure_reason": {
"description": "stale_data / changed_scope / missing_evidence"
},
"lookup": {
"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.",
"enum": [
"ok",
"absent"
],
"type": "string"
},
"recomputed_sha256": {
"description": "再計算ハッシュ"
},
"result": {
"description": "verified / unverified"
},
"source_read": {
"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.",
"type": "boolean"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:556e3a854ddafe8efd7a068e994614419642e4802ea9966126f8f3b00d73c477 | sha256sum